diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,18 @@
 CPSA NEWS -- history of user-visible changes.
 
+* Changes in version 4.4.5
+
+** Fixed a strand map bug in 4.4.4.
+
+** Eliminated redundant occurrences of the same children in some executions.  
+
+** Added the programs cpsa4db and cpsa4dbprolog to generate Prolog representations
+   of the content of CPSA runs.  See  cpsauser.html.
+
+** The cpsa4prolog program has been removed and replaced with cpsa4db and cpsa4dbprolog.  
+   That combination provides all the functionality of cpsa4prolog and
+   much more.
+
 * Changes in version 4.4.4
 
 ** We corrected a significant bug in the handling of absence
@@ -25,14 +38,12 @@
 
 ** 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.  
+   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.
@@ -67,12 +78,12 @@
    an error.
 
 ** If the earliest occurrence of an exponent variable is in a transmission,
-   the variable must be of rndx sort, not the more  general expt.  
+   the variable must be of rndx sort, not the more  general expt.
 
 ** An asymmetric key and its inverse are both considered to be generated
    at the first point either of them is created.
 
-** Bugs in generalization that occasionally appear have been eliminated.  
+** Bugs in generalization that occasionally appear have been eliminated.
 
 * Changes in version 4.4.1
 
diff --git a/cinstall b/cinstall
new file mode 100644
--- /dev/null
+++ b/cinstall
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+# Install command for Cabal
+
+cabal install --overwrite-policy=always
diff --git a/cpsa.cabal b/cpsa.cabal
--- a/cpsa.cabal
+++ b/cpsa.cabal
@@ -1,5 +1,5 @@
 Name:                   cpsa
-Version:                4.4.4
+Version:                4.4.5
 Maintainer:             guttman@mitre.org
 Cabal-Version:          >= 1.10
 License:                BSD3
@@ -50,7 +50,8 @@
 
 Data-Dir:               doc
 Extra-Source-Files:
-  Makefile ChangeLog README NEWS mkghci cpsatst fixperms setup.bat doc/README
+  Makefile ChangeLog README NEWS mkghci cpsatst fixperms setup.bat
+  cinstall dbtst doc/README
   doc/src/cpsa.bib doc/src/cmstrands.mp doc/src/macros.tex
   doc/src/cpsa4manual/ns_skel1.pdf doc/src/cpsa4manual/intro.tex
   doc/src/cpsa4manual/cmstrands.mp doc/src/cpsa4manual/state-rules.scm
@@ -150,175 +151,108 @@
   src/ocaml/cpsa.odocl src/ocaml/expand.ml src/ocaml/main.ml
   src/ocaml/main.mli src/ocaml/pp.ml src/ocaml/token.ml
   src/ocaml/token.mli src/ocaml/scanner.mll src/ocaml/sexpr.ml
-  src/ocaml/sexpr.mli src/ocaml/sexpr_type.ml
-  tst/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
+  src/ocaml/sexpr.mli src/ocaml/sexpr_type.ml tst/README tst/Makefile
+  tst/DH_hack.scm tst/DH_hack.tst tst/Make4.hs 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-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/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/chan-unilateral.scm tst/chan-unilateral.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/chan-yahalom-role-decl.scm tst/chan-yahalom-role-decl.tst
+  tst/chan-yahalom.scm tst/chan-yahalom.tst tst/commitment.scm
+  tst/commitment.tst tst/comp_test.scm tst/comp_test.tst
+  tst/completeness-test.scm tst/completeness-test.tst 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/dh_group_sig_auth_failure.scm tst/dh_group_sig_auth_failure.tst
-  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-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/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_um3_goals.scm tst/dhcr_um3_goals.tst
+  tst/dhcr_um_goals.scm tst/dhcr_um_implicit_auth.scm tst/dhcr_umx.scm
+  tst/dhcr_umx.tst tst/dhcr_umx_goals.scm
+  tst/dhcr_umx_implicit_auth.scm 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/epmo.tst tst/epmo_acctnum-key-hash.scm
+  tst/epmo_acctnum-key-hash.tst tst/epmo_acctnum.lsp
+  tst/epmo_acctnum.tst tst/example.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-wonthull.tst tst/kelly1.scm tst/kelly1.tst tst/kelly64.lisp
+  tst/kerb5.lisp tst/kerberos-variant-guar.tst 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/missing_contraction_shapes.tst tst/neq_test.scm tst/neq_test.tst
-  tst/neq_test_shapes.tst tst/neuman-stubblebine-reauth-tagged.lsp
+  tst/neq_test.scm tst/neq_test.tst tst/neuman-stubblebine-alt.lisp
   tst/neuman-stubblebine-reauth-tagged.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/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/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/pca.scm tst/pca.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/sa.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_non_role.scm tst/sts_weakened_reflect.scm
+  tst/sts_weakened_reflect.tst 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/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/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/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/uncarried_keys.tst tst/unilateral.scm tst/unilateral.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
+  tst/uniq-gen-test.tst tst/uo.scm tst/uo.tst tst/wang-hash.scm
+  tst/wang-hash.tst tst/wang-key-hash.scm tst/wang-key-hash.tst
+  tst/wang.lisp 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/yahalom-6.3.6.scm tst/yahalom-6.3.6.tst tst/yahalom-forward.scm
+  tst/yahalom-forward.tst tst/yahalom.scm tst/yahalom.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
@@ -345,7 +279,7 @@
 
 Source-Repository head
   Type:     git
-  Location: git://github.com/mitre/cpsaexp.git
+  Location: git://github.com/mitre/cpsa.git
 
 Executable cpsa4
   Main-Is:              CPSA/Main.hs
@@ -536,19 +470,6 @@
     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
diff --git a/dbtst b/dbtst
new file mode 100644
--- /dev/null
+++ b/dbtst
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+TST=${1:-tst}
+
+for i in $TST/*.tst
+do
+    echo $i
+    basen=`basename $i .tst`
+    cabal run cpsa4db -- -o $TST/$basen.db $i
+    cabal run cpsa4dbprolog $TST/$basen.db | sort > $TST/$basen.pl
+done    
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/cpsauser.html b/doc/cpsauser.html
--- a/doc/cpsauser.html
+++ b/doc/cpsauser.html
@@ -66,9 +66,10 @@
   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.
+  The <a href="#cpsaprolog"><code>cpsa4db</code>
+  and <code>cpsa4dbprolog</code></a> programs
+  translate CPSA output into Prolog so it can be analyzed using the
+  power and flexibility of Prolog.
   Finally,
   the <a href="#cpsa42latex"><code>cpsa42latex</code></a> program
   translates CPSA macros into equivalent LaTeX macros.</p>
@@ -1161,32 +1162,77 @@
 
 <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>The <code>cpsa4db</code> program is used to produce a database of
+  facts about the output of CPSA in S-Expression syntax.  The facts
+  provide a logical description of a run of CPSA.</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 database contains facts about skeletons and facts about how
+  skeletons are related to each other in the output.  There are two
+  kinds of facts about each skeleton.  The body of a skeleton is
+  provided as an association list with the <code>skel/2</code>
+  predicate.  The first argument is the skeleton's label, and the
+  second is the association list.  Each skeleton is also described
+  using a subset of the goal language, however, the predicate symbol
+  used for length predicates is <code>l</code> to make them easily
+  distinguishable from parameter predicates.</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>
+<p>The output of CPSA relates skeletons in two ways, by its tree
+  structure and its cohort step structure.  Each non-root skeleton has one
+  parent.  That information is used to form the tree used to display
+  CPSA output.  The <code>child/2</code> predicate encodes the tree
+  structure using skeleton labels.  This predicate is used to visit
+  each skeleton once during a search.</p>
 
+<p>A skeleton that is part of a cohort step is either a child of the
+  analyzed skeleton or a seen child, meaning it is the child of a
+  previously analyzed skeleton.  The <code>step/3</code> predicate
+  specifies the cohort step relation, where its second argument is the
+  operation used by CPSA to produce the cohort member from the
+  analyzed skeleton.  Thus, the <code>step/3</code> predicate
+  describes a run as a labeled transition system.</p>
 
+<p>For each cohort step not produced by generalization, there is a
+  homomorphism from the parent to the cohort member, and when a member
+  is produced by generalization, there is a homomorphism from the
+  member to the parent.  The homomorphism is available with
+  the <code>stwa/5</code> and <code>mtwa/5</code> predicates.
+  The <code>stwa/5</code> predicate specifies how strands are mapped,
+  and the <code>mtwa</code> predicate specifies how message variables
+  are mapped.  For both of these predicates, the first and forth
+  arguments are skeleton labels, and the third argument is the
+  operation.</p>
+
+<p>The <code>cpsa4dbprolog</code> translates a database of facts into
+  Prolog syntax so that the database can be queried using all of the
+  power and flexibility of Prolog.  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 generated Prolog must be used with a dialect of Prolog in which
+  strings are not be atoms, such as SWI Prolog and not GNU Prolog.
+  Load the file 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]
+  <pre>$ cpsa4db [OPTIONS] [FILE]
+  -o FILE    --output=FILE     output FILE
+  -m INT     --margin=INT      set output margin (default 72)
+  -a STRING  --algebra=STRING  algebra (default basic)
+  -s         --show-algebras   show algebras
+  -h         --help            show help message
+  -v         --version         show version number</pre>
+</blockquote>
+
+<blockquote>
+  <pre>$ cpsa4dbprolog [OPTIONS] [FILE]
   -o FILE  --output=FILE  output FILE
+  -m INT   --margin=INT   set output margin (default 72)
   -h       --help         show help message
   -v       --version      show version number</pre>
 </blockquote>
diff --git a/doc/src/cpsa4manual/macros.tex b/doc/src/cpsa4manual/macros.tex
--- a/doc/src/cpsa4manual/macros.tex
+++ b/doc/src/cpsa4manual/macros.tex
@@ -3,7 +3,7 @@
 {\setcounter{running}{\value{enumi}}\end{enumerate}}
 
 \newcommand{\cpsa}{\textsc{cpsa}}
-\newcommand{\version}{4.3}
+\newcommand{\version}{4.4.5}
 \newcommand{\cpsacopying}{\begingroup
   \renewcommand{\thefootnote}{}\footnotetext{{\copyright} 2016--2022 The
     MITRE Corporation.  Permission to copy without fee all or part of
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.4}
+\newcommand{\version}{4.4.5}
 \newcommand{\cpsacopying}{\begingroup
   \renewcommand{\thefootnote}{}\footnotetext{{\copyright} 2010 The
     MITRE Corporation.  Permission to copy without fee all or part of
diff --git a/fixperms b/fixperms
--- a/fixperms
+++ b/fixperms
@@ -9,3 +9,4 @@
 
 chmod +x cpsatst tst/checktst tst/updatetst tst/cpsagraphtst
 chmod +x mkghci src/ghcmemlimit src/split.py src/lastlabel.py
+chmod +x cinstall dbtst
diff --git a/src/CPSA/Cohort.hs b/src/CPSA/Cohort.hs
--- a/src/CPSA/Cohort.hs
+++ b/src/CPSA/Cohort.hs
@@ -293,12 +293,14 @@
 
 data ReduceRes = Stable | Crt [Preskel] | Gnl [Preskel] -- now needed
 
-simplifyNonIsomorphic :: Preskel -> [Preskel]
-simplifyNonIsomorphic = factorIsomorphicPreskels . simplify
+-- simplify 
 
+--   simplifyNonIsomorphic :: Preskel -> [Preskel]
+--   simplifyNonIsomorphic = factorIsomorphicPreskels . simplify
+
 reduceNoTest :: Mode -> Preskel -> ReduceRes
 reduceNoTest mode k =
-    case simplifyNonIsomorphic k of
+    case simplify k of
       [k']
           | isomorphic (gist k) (gist k') ->
               if omitGeneralization || noGeneralization mode then Stable
@@ -307,7 +309,9 @@
                      [] -> Stable
                      ks -> Gnl ks)
           | True -> Crt [k']
-      ks -> Crt (filterSame k ks)
+      ks -> Crt (mgsCall $ filterSame k ks)
+    where
+      mgsCall ks = mgs $ map (\k -> (k,(getStrandMap $ operation k))) ks
 
 reduce :: Mode -> Preskel -> ReduceRes
 reduce mode k =
diff --git a/src/CPSA/Db/Displayer.hs b/src/CPSA/Db/Displayer.hs
--- a/src/CPSA/Db/Displayer.hs
+++ b/src/CPSA/Db/Displayer.hs
@@ -42,9 +42,50 @@
 body :: Handle -> Int -> Int -> [SExpr Pos] -> IO ()
 body h m l xs =
     do
-      let x = L () [S () "skel", N () l, L () (map strip xs)]
+      let alist = map strip xs
+      let x = L () [S () "skel", N () l, L () alist]
       writeSExpr h m x
+      displayItems h m "uniq" l (massoc "uniq-orig" alist)
+      displayItems h m "ugen" l (massoc "uniq-gen" alist)
+      displayItems h m "non" l (massoc "non-orig" alist)
+      displayItems h m "pnon" l (massoc "pen-non-orig" alist)
+      displayItems h m "conf" l (massoc "conf" alist)
+      displayItems h m "auth" l (massoc "conf" alist)
+      displayLists h m "prec" l (massoc "precedes" alist)
+      displayLists h m "leads-to" l (massoc "leads-to" alist)
+      displayItems h m "fact" l (massoc "facts" alist)
+      displayItems h m "unrealized" l (massoc "unrealized" alist)
+      displayKey h m "shape" l (massoc "shape" alist)
+      displayKey h m "dead" l (massoc "dead" alist)
 
+displayItems :: Handle -> Int -> String -> Int -> Maybe [SExpr ()] -> IO ()
+displayItems _ _ _ _ Nothing = return ()
+displayItems h m key l (Just items) =
+    mapM_ f items
+    where
+      f item =
+          do
+            let x = L () [S () key, N () l, item]
+            writeSExpr h m x
+
+displayLists :: Handle -> Int -> String -> Int -> Maybe [SExpr ()] -> IO ()
+displayLists _ _ _ _ Nothing = return ()
+displayLists h m key l (Just items) =
+    mapM_ f items
+    where
+      f (L () list) =
+          do
+            let x = L () (S () key : N () l : list)
+            writeSExpr h m x
+      f x = fail (shows (annotation x) "Bad list")
+
+displayKey :: Handle -> Int -> String -> Int -> Maybe [SExpr ()] -> IO ()
+displayKey _ _ _ _ Nothing = return ()
+displayKey h m key l (Just _) =
+    do
+      let x = L () [S () key, N () l]
+      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)
@@ -57,7 +98,7 @@
           do
             let l = label k
             let len = length trace
-            let x = L () [S () "p", N () l, Q () (rname role),
+            let x = L () [S () "l", N () l, Q () (rname role),
                           N () s, N () len]
             writeSExpr h m x
             mapM_ (displayParam h m l role s)
diff --git a/src/CPSA/Db/Loader.hs b/src/CPSA/Db/Loader.hs
--- a/src/CPSA/Db/Loader.hs
+++ b/src/CPSA/Db/Loader.hs
@@ -90,12 +90,22 @@
       return (In $ ChMsg ch t)
 loadEvt sig vars (L _ [S _ "send", t]) =
     do
-      t <- loadTerm sig vars False t
+      t <- loadTerm sig vars True t
       return (Out $ Plain t)
 loadEvt sig vars (L _ [S _ "send", ch, t]) =
     do
       ch <- loadChan sig vars ch
+      t <- loadTerm sig vars True t
+      return (Out $ ChMsg ch t)
+loadEvt sig vars (L _ [S _ "load", ch, t]) =
+    do
+      ch <- loadLocn sig vars ch
       t <- loadTerm sig vars False t
+      return (In $ ChMsg ch t)
+loadEvt sig vars (L _ [S _ "stor", ch, t]) =
+    do
+      ch <- loadLocn sig vars ch
+      t <- loadTerm sig vars True t
       return (Out $ ChMsg ch t)
 loadEvt _ _ (L pos [S _ dir, _]) =
     fail (shows pos $ "Unrecognized direction " ++ dir)
@@ -109,6 +119,14 @@
       True -> return ch
       False -> fail (shows (annotation x) "Expecting a channel")
 
+loadLocn :: MonadFail m => Sig -> [Term] -> SExpr Pos -> m Term
+loadLocn sig vars x =
+  do
+    ch <- loadTerm sig vars False x
+    case isLocn ch of
+      True -> return ch
+      False -> fail (shows (annotation x) "Expecting a location")
+
 -- 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)
@@ -284,7 +302,7 @@
 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 :: String -> [SExpr a] -> Maybe [SExpr a]
 massoc key alist =
     loop alist Nothing
     where
diff --git a/src/CPSA/Db/Main.hs b/src/CPSA/Db/Main.hs
--- a/src/CPSA/Db/Main.hs
+++ b/src/CPSA/Db/Main.hs
@@ -40,9 +40,9 @@
       x <- readSExpr p
       case x of
         Nothing -> abort "Empty input"
-        Just x@(L pos (S _ "herald" : _ : xs)) ->
+        Just (L pos (S _ "herald" : name : xs)) ->
           do
-            writeSExpr h margin x
+            writeSExpr h margin (L pos [S pos "herald", name, L pos xs])
             hPutStrLn h ""
             sig <- loadSig pos (assoc "lang" xs)
             let nom = getAlgName xs alg
diff --git a/src/CPSA/Db/Structs.hs b/src/CPSA/Db/Structs.hs
--- a/src/CPSA/Db/Structs.hs
+++ b/src/CPSA/Db/Structs.hs
@@ -55,7 +55,7 @@
       s' = mapping !! s
 
 matchTraces :: Trace -> Trace -> (Gen, Env) -> [(Gen, Env)]
-matchTraces [] _ env = [env]    -- Pattern can be shorter
+matchTraces _ [] env = [env]    -- Target can be shorter
 matchTraces (In t : c) (In t' : c') env =
     do
       e <- cmMatch t t' env
diff --git a/src/CPSA/Loader.hs b/src/CPSA/Loader.hs
--- a/src/CPSA/Loader.hs
+++ b/src/CPSA/Loader.hs
@@ -789,9 +789,9 @@
 loadChan sig vars x =
   do
     ch <- loadTerm sig vars False x
-    case isChan ch || isLocn ch of
+    case isChan ch of
       True -> return ch
-      False -> fail (shows (annotation x) "Expecting a channel or location")
+      False -> fail (shows (annotation x) "Expecting a channel")
 
 loadLocn :: MonadFail m => Sig -> [Term] -> SExpr Pos -> m Term
 loadLocn sig vars x =
diff --git a/src/CPSA/Prolog/Loader.hs b/src/CPSA/Prolog/Loader.hs
deleted file mode 100644
--- a/src/CPSA/Prolog/Loader.hs
+++ /dev/null
@@ -1,160 +0,0 @@
--- 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
deleted file mode 100644
--- a/src/CPSA/Prolog/Main.hs
+++ /dev/null
@@ -1,159 +0,0 @@
--- 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
deleted file mode 100644
--- a/src/CPSA/Prolog/Tree.hs
+++ /dev/null
@@ -1,80 +0,0 @@
--- 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/Reduction.hs b/src/CPSA/Reduction.hs
--- a/src/CPSA/Reduction.hs
+++ b/src/CPSA/Reduction.hs
@@ -406,8 +406,14 @@
               ([Preskel], [SeenSkel])
 duplicates seen (unseen, dups) kid =
     case recall kid seen of
-      Just (label, sm) -> (unseen, (label, fixStrandMap kid sm) : dups)
+      Just (label, sm) -> (unseen, maybeAdd (label, fixStrandMap kid sm) dups)
       Nothing -> (kid : unseen, dups)
+    where
+      maybeAdd (i,k) [] = [(i,k)]
+      maybeAdd (i,k) ((j,k') : rest) =
+          if i<j then (i,k) : (j,k') : rest
+          else if i == j then (j,k') : rest
+               else (j,k') : maybeAdd (i,k) rest
 
 fixStrandMap :: Preskel -> [Sid] -> Preskel
 fixStrandMap k sm =
diff --git a/src/CPSA/Strand.hs b/src/CPSA/Strand.hs
--- a/src/CPSA/Strand.hs
+++ b/src/CPSA/Strand.hs
@@ -13,6 +13,7 @@
     kconf, kauth, kfacts, korig, kugen, kpriority, kcomment, nstrands,
     kvars, kfvars, strandids, kterms, kchans, uniqOrig, uniqGen,
     preskelWellFormed, confCm, authCm,
+    showPreskelSelectively, showPreskelUnselectively,
     verbosePreskelWellFormed, Strand, inst, sid, nodes,
     Vertex, strand, pos, preds, event, graphNode, strands, vertex,
     Gist, gist, isomorphic, factorIsomorphicPreskels, findIsomorphisms, 
@@ -174,6 +175,19 @@
           (gen'', inst) : _ -> (gen'', inst)
           [] -> error "Strand.mkInstance: Not an instance"
 
+maybeShowInstance :: [String] -> Instance -> Maybe String
+maybeShowInstance rolenames inst =
+    if rname (role inst) `L.elem` rolenames
+    then
+        Just $ f inst
+    else
+        Nothing 
+    where
+      f inst =
+          "(" ++ (rname (role inst)) ++ " " ++ (show (height inst)) ++
+            (show (env inst)) ++ ")"
+
+
 -- 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
@@ -470,6 +484,24 @@
       shared = Shared { prot = protocol, goals = gs }
       prob = strandids k        -- Fixed point on k is okay.
 
+showPreskelSelectively :: [String] -> Preskel -> String
+showPreskelSelectively rolenames k =
+    "(k: " ++
+        (revConcatStrs
+         (foldr (\maybeStr soFar -> case maybeStr of
+                                      Nothing -> soFar
+                                      Just s -> ("\n" ++ s) : soFar)               
+          []
+          (map (maybeShowInstance rolenames) (insts k))))
+        ++ ")"
+        where
+          revConcatStrs [] = ""
+          revConcatStrs (a : rest) = revConcatStrs rest ++ a
+
+showPreskelUnselectively :: Preskel -> String
+showPreskelUnselectively k =
+    showPreskelSelectively (map (rname . role) (insts k)) k 
+
 -- Strand functions
 
 strandInst :: Preskel -> Sid -> Instance
@@ -3462,9 +3494,14 @@
 -- Computed in parallel via the pars in parFactor.
 
 factorIsomorphic :: [Preskel] -> [Preskel]
-factorIsomorphic =
-    parFactor
-    (\k1 k2 -> isomorphic (gist k1) (gist k2))
+factorIsomorphic = parFactor (\k1 k2 -> isomorphic (gist k1) (gist k2))
+                   
+{--     let result = parFactor
+                 (\k1 k2 -> isomorphic (gist k1) (gist k2))
+                 ks in
+    z ("Arg: " ++ (show $ L.length ks) ++ " res: " ++ (show $ L.length result))
+      result
+      --}
 
 mergeIsomorphic :: [Preskel] -> [Preskel] -> [Preskel]
 mergeIsomorphic =
@@ -3475,6 +3512,8 @@
 factorIsomorphicPreskels = factorIsomorphic
 
 -- Try simplifying k if possible
+-- We ensure no two results are
+-- isomorphic.  
 simplify :: Preskel -> [Preskel]
 simplify k =
     if checkNullary k
@@ -4004,15 +4043,19 @@
 -- Try all rules associated with the protocol of k.
 
 -- Return Nothing if no rule applies, otherwise return Just the list
--- of (zero or more) replacements.
+-- of (zero or more) replacements.  We ensure that no two replacements
+-- are isomorphic.
+
 rewrite :: Preskel -> Maybe [Preskel]
 rewrite k =
-    case nullUnary k of         --  (z "<" k)
-      Just [] -> Just []        -- z ">>" (Just [])
-      Just [k'] -> iterate rewriteDepthCount [k'] [] True
-      Nothing -> iterate rewriteDepthCount [k] [] False
-      Just ks -> error ("rewrite:  nullUnary returned too many results ("
-                        ++ (show (L.length ks)) ++ ")")
+    maybe Nothing
+              (Just . factorIsomorphic)
+              (case nullUnary k of         --  (z "<" k)
+                 Just [] -> Just []        -- z ">>" (Just [])
+                 Just [k'] -> iterate rewriteDepthCount [k'] [] True
+                 Nothing -> iterate rewriteDepthCount [k] [] False
+                 Just ks -> error ("rewrite:  nullUnary returned too many results ("
+                                   ++ (show (L.length ks)) ++ ")"))
     where
       grules = generalrules $ protocol k
 
@@ -4048,7 +4091,8 @@
                 -- *Don't* Skip it for now.
 
                 iterate dc -- (dc-1)
-                            (mergeIsomorphic new' rest) done True
+                            (mergeIsomorphic new' rest)
+                            done True
 
       -- subiter
       subiter _ [] = Nothing     -- No action, no rules left
@@ -4057,10 +4101,12 @@
           case tryRule k r of
             [] -> subiter k rs
             vas ->
-                (Just (concatMap (\k' -> maybe [k'] id
-                                        $ subiter k' rs)
-                     $ nullUnaryThrough
-                           $ doRewrite k r vas))
+                (Just
+                 $ factorIsomorphic
+                       (concatMap (\k' -> maybe [k'] id
+                                          $ subiter k' rs)
+                       $ nullUnaryThrough
+                             $ doRewrite k r vas))
 
 -- Returns all environments that satisfy the antecedent
 -- but do not extend to satisfy any of the conclusions.
@@ -4284,7 +4330,9 @@
         (kauth k)
         (map (updateFact $ updateStrand s s') (kfacts k))
         (updatePriority perm (kpriority k))
-        (operation k)
+        (let op = operation k in 
+         addStrandMap (updatePerm s s' (getStrandMap op))
+                      op)
         (krules k)
         (pprob k)
         (updateProb perm (prob k))
diff --git a/src/cpsa4prolog.pl b/src/cpsa4prolog.pl
--- a/src/cpsa4prolog.pl
+++ b/src/cpsa4prolog.pl
@@ -1,17 +1,17 @@
 % -*- mode: prolog -*-
 
-%% Library of predicates for analyzing cpsa4prolog output
+%% Library of predicates for analyzing cpsa4dbprolog 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.
+%% The cpsa4db and cpsa4dbprolog programs are used to analyze the
+%% output of cpsa4.  They translate 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 and flexibility 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.
+%% cpsa4db assembles the skeletons in the output into a forest of
+%% derivation trees.  cpsa4dbprolog 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.
@@ -96,80 +96,3 @@
 
 %% 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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/DH_hack.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/DH_hack_shapes.tst b/tst/DH_hack_shapes.tst
deleted file mode 100644
--- a/tst/DH_hack_shapes.tst
+++ /dev/null
@@ -1,413 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/Make4.hs
@@ -0,0 +1,272 @@
+-- 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
new file mode 100644
--- /dev/null
+++ b/tst/Makefile
@@ -0,0 +1,13 @@
+CPSAFLAGS = +RTS -M1024m -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
new file mode 100644
--- /dev/null
+++ b/tst/README
@@ -0,0 +1,20 @@
+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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ab.scm")
 
 (defprotocol ab basic
diff --git a/tst/ab_shapes.tst b/tst/ab_shapes.tst
deleted file mode 100644
--- a/tst/ab_shapes.tst
+++ /dev/null
@@ -1,38 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/abc.scm")
 
 (defprotocol abc basic
diff --git a/tst/abc_shapes.tst b/tst/abc_shapes.tst
deleted file mode 100644
--- a/tst/abc_shapes.tst
+++ /dev/null
@@ -1,41 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/aik.scm")
 
 (defprotocol aikprot basic
diff --git a/tst/aik_shapes.tst b/tst/aik_shapes.tst
deleted file mode 100644
--- a/tst/aik_shapes.tst
+++ /dev/null
@@ -1,144 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/atomic-open-closed.scm")
 (comment "Strand count bounded at 44")
 
@@ -747,7 +747,7 @@
     (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)))
+      (strand-map 0 1 2 3)))
   (unrealized (3 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -1169,30 +1169,8 @@
       (send (enc "you may pass" n k))) ((recv k) (send k)))
   (label 13)
   (parent 11)
-  (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"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton atomic-open-closed
   (vars (old old1 mesg) (k skey) (n text) (d o d-0 o-0 name)
@@ -1337,7 +1315,7 @@
     (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)))
+      (strand-map 0 1 2 3 4)))
   (unrealized (0 1) (4 1))
   (comment "2 in cohort - 1 not yet seen"))
 
@@ -1417,7 +1395,7 @@
   (seen-ops
     (21
       (operation encryption-test (added-strand dev-up 6) (enc "up" k)
-        (0 1)) (strand-map 0 1 2 3 4 5)))
+        (0 1)) (strand-map 0 1 2 5 3 4)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1457,22 +1435,14 @@
     ((recv k) (send k)))
   (label 20)
   (parent 18)
-  (seen 23 23 23)
+  (seen 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)))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (0 1) (5 0))
-  (comment "4 in cohort - 1 not yet seen"))
+  (comment "2 in cohort - 1 not yet seen"))
 
 (defskeleton atomic-open-closed
   (vars (any old old1 mesg) (k skey) (n n-0 text) (d o name)
@@ -1554,22 +1524,14 @@
     ((send (enc "open" d o n-0 k))) ((recv k) (send k)))
   (label 22)
   (parent 19)
-  (seen 24 24 24)
+  (seen 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)))
+      (strand-map 0 1 2 3 4 5 6)))
   (unrealized (6 0))
-  (comment "4 in cohort - 1 not yet seen"))
+  (comment "2 in cohort - 1 not yet seen"))
 
 (defskeleton atomic-open-closed
   (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
diff --git a/tst/atomic-open-closed_shapes.tst b/tst/atomic-open-closed_shapes.tst
deleted file mode 100644
--- a/tst/atomic-open-closed_shapes.tst
+++ /dev/null
@@ -1,855 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/attest.scm")
 
 (defprotocol attest-door basic
diff --git a/tst/attest_shapes.tst b/tst/attest_shapes.tst
deleted file mode 100644
--- a/tst/attest_shapes.tst
+++ /dev/null
@@ -1,490 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/auth-enc.scm")
 
 (defprotocol auth-enc basic
diff --git a/tst/auth-enc_shapes.tst b/tst/auth-enc_shapes.tst
deleted file mode 100644
--- a/tst/auth-enc_shapes.tst
+++ /dev/null
@@ -1,56 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/auth-hash.scm")
 
 (defprotocol auth-hash basic
diff --git a/tst/auth-hash_shapes.tst b/tst/auth-hash_shapes.tst
deleted file mode 100644
--- a/tst/auth-hash_shapes.tst
+++ /dev/null
@@ -1,73 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/blanchet-strandmax.scm")
 
 (defprotocol blanchet-max basic
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/blanchet.scm")
 
 (defprotocol blanchet basic
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.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read")
 
 (defprotocol blanchet basic
diff --git a/tst/blanchet_doorsep_shapes.tst b/tst/blanchet_doorsep_shapes.tst
deleted file mode 100644
--- a/tst/blanchet_doorsep_shapes.tst
+++ /dev/null
@@ -1,252 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/blanchet_shapes.tst
+++ /dev/null
@@ -1,518 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/bug_example.scm")
 (comment "Strand count bounded at 20")
 
diff --git a/tst/bug_example_shapes.tst b/tst/bug_example_shapes.tst
deleted file mode 100644
--- a/tst/bug_example_shapes.tst
+++ /dev/null
@@ -1,117 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/cert_lang.scm")
 
 (defprotocol cert-uni basic
diff --git a/tst/cert_lang_shapes.tst b/tst/cert_lang_shapes.tst
deleted file mode 100644
--- a/tst/cert_lang_shapes.tst
+++ /dev/null
@@ -1,94 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/chan-envelope.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/chan-envelope_shapes.tst b/tst/chan-envelope_shapes.tst
deleted file mode 100644
--- a/tst/chan-envelope_shapes.tst
+++ /dev/null
@@ -1,1243 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/chan-perrig-song.scm")
 
 (defprotocol perrig-song basic
diff --git a/tst/chan-perrig-song_shapes.tst b/tst/chan-perrig-song_shapes.tst
deleted file mode 100644
--- a/tst/chan-perrig-song_shapes.tst
+++ /dev/null
@@ -1,154 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/chan-unilateral.scm")
 
 (defprotocol unilateral basic
diff --git a/tst/chan-unilateral_shapes.tst b/tst/chan-unilateral_shapes.tst
deleted file mode 100644
--- a/tst/chan-unilateral_shapes.tst
+++ /dev/null
@@ -1,335 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/chan-yahalom-role-decl.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/chan-yahalom-role-decl_shapes.tst b/tst/chan-yahalom-role-decl_shapes.tst
deleted file mode 100644
--- a/tst/chan-yahalom-role-decl_shapes.tst
+++ /dev/null
@@ -1,456 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/chan-yahalom.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/chan-yahalom_shapes.tst b/tst/chan-yahalom_shapes.tst
deleted file mode 100644
--- a/tst/chan-yahalom_shapes.tst
+++ /dev/null
@@ -1,497 +0,0 @@
-(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/commitment.tst b/tst/commitment.tst
--- a/tst/commitment.tst
+++ b/tst/commitment.tst
@@ -1,6 +1,6 @@
 (herald commitment)
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/commitment.scm")
 
 (defprotocol commit basic
diff --git a/tst/commitment_shapes.tst b/tst/commitment_shapes.tst
deleted file mode 100644
--- a/tst/commitment_shapes.tst
+++ /dev/null
@@ -1,236 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/comp_test.scm")
 
 (defprotocol main-ex-src basic
diff --git a/tst/comp_test_shapes.tst b/tst/comp_test_shapes.tst
deleted file mode 100644
--- a/tst/comp_test_shapes.tst
+++ /dev/null
@@ -1,392 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/completeness-test.scm")
 
 (defprotocol completeness-test basic
diff --git a/tst/completeness-test_shapes.tst b/tst/completeness-test_shapes.tst
deleted file mode 100644
--- a/tst/completeness-test_shapes.tst
+++ /dev/null
@@ -1,307 +0,0 @@
-(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/crushing.tst b/tst/crushing.tst
--- a/tst/crushing.tst
+++ b/tst/crushing.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/crushing.scm")
 
 (defprotocol crushing basic
diff --git a/tst/crushing_shapes.tst b/tst/crushing_shapes.tst
deleted file mode 100644
--- a/tst/crushing_shapes.tst
+++ /dev/null
@@ -1,72 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/dass-mod.lisp
@@ -0,0 +1,31 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/dass.lisp
@@ -0,0 +1,31 @@
+(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dass_simple.scm")
 
 (defprotocol dass-simple basic
diff --git a/tst/dass_simple_shapes.tst b/tst/dass_simple_shapes.tst
deleted file mode 100644
--- a/tst/dass_simple_shapes.tst
+++ /dev/null
@@ -1,159 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/denning-sacco.scm")
 
 (defprotocol denning-sacco basic
diff --git a/tst/denning-sacco_shapes.tst b/tst/denning-sacco_shapes.tst
deleted file mode 100644
--- a/tst/denning-sacco_shapes.tst
+++ /dev/null
@@ -1,318 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/deorig_contract.scm")
 
 (defprotocol deorig-contract basic
diff --git a/tst/deorig_contract_shapes.tst b/tst/deorig_contract_shapes.tst
deleted file mode 100644
--- a/tst/deorig_contract_shapes.tst
+++ /dev/null
@@ -1,68 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (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
deleted file mode 100644
--- a/tst/deorig_mesg_shapes.tst
+++ /dev/null
@@ -1,66 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (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
deleted file mode 100644
--- a/tst/deorig_simple_shapes.tst
+++ /dev/null
@@ -1,70 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/dh-ca_hack-uniq_cert.scm
+++ /dev/null
@@ -1,67 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/dh-ca_hack-uniq_cert.tst
+++ /dev/null
@@ -1,1585 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dh-ca_hack.scm")
 
 (defprotocol dhca basic
diff --git a/tst/dh-ca_hack_shapes.tst b/tst/dh-ca_hack_shapes.tst
deleted file mode 100644
--- a/tst/dh-ca_hack_shapes.tst
+++ /dev/null
@@ -1,2727 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dh_encrypt_hack.scm")
 
 (defprotocol dhencrypt basic
diff --git a/tst/dh_encrypt_hack_shapes.tst b/tst/dh_encrypt_hack_shapes.tst
deleted file mode 100644
--- a/tst/dh_encrypt_hack_shapes.tst
+++ /dev/null
@@ -1,260 +0,0 @@
-(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.tst b/tst/dh_group_sig.tst
--- a/tst/dh_group_sig.tst
+++ b/tst/dh_group_sig.tst
@@ -1,7 +1,7 @@
 (herald "Signed group DH exchange (improved version)"
   (algebra diffie-hellman) (limit 100))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dh_group_sig.scm")
 (comment "Step count limited to 100")
 
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,7 +1,7 @@
 (herald "Signed group DH exchange (version with auth failure)"
   (algebra diffie-hellman) (limit 100))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dh_group_sig_auth_failure.scm")
 (comment "Step count limited to 100")
 
diff --git a/tst/dh_group_sig_auth_failure_shapes.tst b/tst/dh_group_sig_auth_failure_shapes.tst
deleted file mode 100644
--- a/tst/dh_group_sig_auth_failure_shapes.tst
+++ /dev/null
@@ -1,483 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/dh_group_sig_shapes.tst
+++ /dev/null
@@ -1,479 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/dh_mim.lisp
@@ -0,0 +1,65 @@
+(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dh_mim_hack.scm")
 
 (defprotocol dh_mim basic
diff --git a/tst/dh_mim_hack_shapes.tst b/tst/dh_mim_hack_shapes.tst
deleted file mode 100644
--- a/tst/dh_mim_hack_shapes.tst
+++ /dev/null
@@ -1,93 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/dhcr_um.lisp
@@ -0,0 +1,206 @@
+;;; 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.tst b/tst/dhcr_um.tst
# file too large to diff: tst/dhcr_um.tst
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.tst b/tst/dhcr_um3_goals.tst
--- a/tst/dhcr_um3_goals.tst
+++ b/tst/dhcr_um3_goals.tst
@@ -1,7 +1,7 @@
 (herald "DHCR: unified model (UM) three-component version" (bound 30)
   (limit 8000) (algebra diffie-hellman))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dhcr_um3_goals.scm")
 (comment "Step count limited to 8000")
 (comment "Strand count bounded at 30")
diff --git a/tst/dhcr_um3_shapes.tst b/tst/dhcr_um3_shapes.tst
deleted file mode 100644
--- a/tst/dhcr_um3_shapes.tst
+++ /dev/null
@@ -1,791 +0,0 @@
-(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_shapes.tst b/tst/dhcr_um_exercise_resolved_bug_shapes.tst
deleted file mode 100644
--- a/tst/dhcr_um_exercise_resolved_bug_shapes.tst
+++ /dev/null
@@ -1,268 +0,0 @@
-(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_shapes.tst b/tst/dhcr_um_expt_shapes.tst
deleted file mode 100644
--- a/tst/dhcr_um_expt_shapes.tst
+++ /dev/null
@@ -1,2637 +0,0 @@
-(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.tst b/tst/dhcr_um_goals.tst
deleted file mode 100644
--- a/tst/dhcr_um_goals.tst
+++ /dev/null
@@ -1,7551 +0,0 @@
-(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.tst b/tst/dhcr_um_implicit_auth.tst
deleted 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
deleted file mode 100644
--- a/tst/dhcr_um_shapes.tst
+++ /dev/null
@@ -1,256 +0,0 @@
-(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.tst b/tst/dhcr_umx.tst
# file too large to diff: tst/dhcr_umx.tst
diff --git a/tst/dhcr_umx_goals.tst b/tst/dhcr_umx_goals.tst
deleted file mode 100644
--- a/tst/dhcr_umx_goals.tst
+++ /dev/null
@@ -1,29564 +0,0 @@
-(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.tst b/tst/dhcr_umx_implicit_auth.tst
deleted file mode 100644
--- a/tst/dhcr_umx_implicit_auth.tst
+++ /dev/null
@@ -1,5707 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/dhcr_umx_shapes.tst
+++ /dev/null
@@ -1,1150 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/dhke2.lisp
@@ -0,0 +1,108 @@
+(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dhnsl_hack.scm")
 
 (defprotocol dhnsl basic
diff --git a/tst/dhnsl_hack_shapes.tst b/tst/dhnsl_hack_shapes.tst
deleted file mode 100644
--- a/tst/dhnsl_hack_shapes.tst
+++ /dev/null
@@ -1,142 +0,0 @@
-(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.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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/dhstatic-state.scm")
 (comment "Strand count bounded at 16")
 
diff --git a/tst/dhstatic-state_shapes.tst b/tst/dhstatic-state_shapes.tst
deleted file mode 100644
--- a/tst/dhstatic-state_shapes.tst
+++ /dev/null
@@ -1,344 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/disclosure.scm")
 
 (defprotocol disc basic
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/doorsep.scm")
 
 (defprotocol doorsep basic
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/doorsep2invk.scm")
 
 (defprotocol doorsep basic
diff --git a/tst/doorsep2invk_shapes.tst b/tst/doorsep2invk_shapes.tst
deleted file mode 100644
--- a/tst/doorsep2invk_shapes.tst
+++ /dev/null
@@ -1,82 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/doorsep_shapes.tst
+++ /dev/null
@@ -1,63 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/ds-short.lisp
@@ -0,0 +1,33 @@
+;;; 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
deleted file mode 100644
--- a/tst/dy_shapes.tst
+++ /dev/null
@@ -1,91 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/encsig.scm")
 
 (defprotocol mult-keys-enc-sig basic
diff --git a/tst/encsig_shapes.tst b/tst/encsig_shapes.tst
deleted file mode 100644
--- a/tst/encsig_shapes.tst
+++ /dev/null
@@ -1,315 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/envelope.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/envelope_shapes.tst b/tst/envelope_shapes.tst
deleted file mode 100644
--- a/tst/envelope_shapes.tst
+++ /dev/null
@@ -1,1248 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/epmo-hash.scm")
 
 (defprotocol epmo basic
diff --git a/tst/epmo-hash_shapes.tst b/tst/epmo-hash_shapes.tst
deleted file mode 100644
--- a/tst/epmo-hash_shapes.tst
+++ /dev/null
@@ -1,376 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/epmo-key-hash.scm")
 
 (defprotocol epmo basic
diff --git a/tst/epmo-key-hash_shapes.tst b/tst/epmo-key-hash_shapes.tst
deleted file mode 100644
--- a/tst/epmo-key-hash_shapes.tst
+++ /dev/null
@@ -1,396 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/epmo.scm")
 
 (defprotocol epmo basic
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/epmo_acctnum-key-hash.scm")
 
 (defprotocol epmo_acctnum basic
diff --git a/tst/epmo_acctnum-key-hash_shapes.tst b/tst/epmo_acctnum-key-hash_shapes.tst
deleted file mode 100644
--- a/tst/epmo_acctnum-key-hash_shapes.tst
+++ /dev/null
@@ -1,287 +0,0 @@
-(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.tst b/tst/epmo_acctnum.tst
--- a/tst/epmo_acctnum.tst
+++ b/tst/epmo_acctnum.tst
@@ -2,7 +2,7 @@
   (bound 12) (limit 5000)
   (comment "This version includes account numbers in exchanges"))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/epmo_acctnum.lsp")
 (comment "Step count limited to 5000")
 
diff --git a/tst/epmo_acctnum_shapes.tst b/tst/epmo_acctnum_shapes.tst
deleted file mode 100644
--- a/tst/epmo_acctnum_shapes.tst
+++ /dev/null
@@ -1,292 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/epmo_shapes.tst
+++ /dev/null
@@ -1,395 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/example.scm
+++ /dev/null
@@ -1,77 +0,0 @@
-(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_shapes.tst b/tst/example_shapes.tst
deleted file mode 100644
--- a/tst/example_shapes.tst
+++ /dev/null
@@ -1,266 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "Expanded macros")
 
 (herald expand (expand) (comment "test macro expansion"))
diff --git a/tst/expand_shapes.tst b/tst/expand_shapes.tst
deleted file mode 100644
--- a/tst/expand_shapes.tst
+++ /dev/null
@@ -1,15 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/facts.scm")
 
 (defprotocol unilateral basic
diff --git a/tst/facts_shapes.tst b/tst/facts_shapes.tst
deleted file mode 100644
--- a/tst/facts_shapes.tst
+++ /dev/null
@@ -1,385 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (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
deleted file mode 100644
--- a/tst/factvar_shapes.tst
+++ /dev/null
@@ -1,79 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ffgg.scm")
 
 (defprotocol ffgg basic
diff --git a/tst/ffgg_shapes.tst b/tst/ffgg_shapes.tst
deleted file mode 100644
--- a/tst/ffgg_shapes.tst
+++ /dev/null
@@ -1,73 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/fluffy_draft03_gske.scm")
 
 (defprotocol fluffy basic
diff --git a/tst/fluffy_draft03_gske_shapes.tst b/tst/fluffy_draft03_gske_shapes.tst
deleted file mode 100644
--- a/tst/fluffy_draft03_gske_shapes.tst
+++ /dev/null
@@ -1,588 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/fragile_pruning.scm")
 
 (defprotocol fragile_pruning basic
diff --git a/tst/fragile_pruning_shapes.tst b/tst/fragile_pruning_shapes.tst
deleted file mode 100644
--- a/tst/fragile_pruning_shapes.tst
+++ /dev/null
@@ -1,175 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/goals.scm")
 
 (defprotocol ns basic
diff --git a/tst/goals_shapes.tst b/tst/goals_shapes.tst
deleted file mode 100644
--- a/tst/goals_shapes.tst
+++ /dev/null
@@ -1,853 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/hashtest-key-hash.scm")
 
 (defprotocol hashtest basic
diff --git a/tst/hashtest-key-hash_shapes.tst b/tst/hashtest-key-hash_shapes.tst
deleted file mode 100644
--- a/tst/hashtest-key-hash_shapes.tst
+++ /dev/null
@@ -1,54 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/hashtest.scm")
 
 (defprotocol hashtest basic
diff --git a/tst/hashtest_shapes.tst b/tst/hashtest_shapes.tst
deleted file mode 100644
--- a/tst/hashtest_shapes.tst
+++ /dev/null
@@ -1,54 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/hull-alt.scm
+++ /dev/null
@@ -1,38 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/hull-alt.tst
+++ /dev/null
@@ -1,479 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (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
deleted file mode 100644
--- a/tst/incompleteness_example_shapes.tst
+++ /dev/null
@@ -1,69 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/isoreject-corrected.scm")
 
 (defprotocol isofix basic
diff --git a/tst/isoreject-corrected_shapes.tst b/tst/isoreject-corrected_shapes.tst
deleted file mode 100644
--- a/tst/isoreject-corrected_shapes.tst
+++ /dev/null
@@ -1,112 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/isoreject.scm")
 
 (defprotocol isoreject basic
diff --git a/tst/isoreject_shapes.tst b/tst/isoreject_shapes.tst
deleted file mode 100644
--- a/tst/isoreject_shapes.tst
+++ /dev/null
@@ -1,150 +0,0 @@
-(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_shapes.tst b/tst/jdg-neuman-stubblebine-reauth_shapes.tst
deleted file mode 100644
--- a/tst/jdg-neuman-stubblebine-reauth_shapes.tst
+++ /dev/null
@@ -1,1089 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/jdg-wonthull.scm
+++ /dev/null
@@ -1,41 +0,0 @@
-(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/kelly1.tst b/tst/kelly1.tst
--- a/tst/kelly1.tst
+++ b/tst/kelly1.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/kelly1.scm")
 
 (defprotocol kelly1 basic
diff --git a/tst/kelly1_shapes.tst b/tst/kelly1_shapes.tst
deleted file mode 100644
--- a/tst/kelly1_shapes.tst
+++ /dev/null
@@ -1,99 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/kelly64.lisp
@@ -0,0 +1,127 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/kerb5.lisp
@@ -0,0 +1,94 @@
+;; 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
deleted file mode 100644
--- a/tst/kerberos-variant-guar.scm
+++ /dev/null
@@ -1,48 +0,0 @@
-(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.tst b/tst/kerberos.tst
--- a/tst/kerberos.tst
+++ b/tst/kerberos.tst
@@ -1,4 +1,4 @@
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/kerberos.scm")
 
 (defprotocol kerberos basic
diff --git a/tst/kerberos_shapes.tst b/tst/kerberos_shapes.tst
deleted file mode 100644
--- a/tst/kerberos_shapes.tst
+++ /dev/null
@@ -1,359 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/locn_envelope.scm")
 (comment "Step count limited to 1200")
 (comment "Strand count bounded at 30")
diff --git a/tst/locn_envelope_shapes.tst b/tst/locn_envelope_shapes.tst
deleted file mode 100644
--- a/tst/locn_envelope_shapes.tst
+++ /dev/null
@@ -1,1710 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/mass.lsp")
 (comment "Strand count bounded at 8")
 
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/mass2.lsp")
 (comment "Strand count bounded at 8")
 
diff --git a/tst/mass2_shapes.tst b/tst/mass2_shapes.tst
deleted file mode 100644
--- a/tst/mass2_shapes.tst
+++ /dev/null
@@ -1,418 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/mass_shapes.tst
+++ /dev/null
@@ -1,419 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/missing_contraction.scm")
 
 (defprotocol missing-contraction basic
diff --git a/tst/missing_contraction_shapes.tst b/tst/missing_contraction_shapes.tst
deleted file mode 100644
--- a/tst/missing_contraction_shapes.tst
+++ /dev/null
@@ -1,201 +0,0 @@
-(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/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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/neq_test.scm")
 
 (defprotocol neq-test basic
diff --git a/tst/neq_test_shapes.tst b/tst/neq_test_shapes.tst
deleted file mode 100644
--- a/tst/neq_test_shapes.tst
+++ /dev/null
@@ -1,80 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/neuman-stubblebine-alt.lisp
@@ -0,0 +1,36 @@
+;;; 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
deleted file mode 100644
--- a/tst/neuman-stubblebine-reauth-tagged.lsp
+++ /dev/null
@@ -1,45 +0,0 @@
-(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_shapes.tst b/tst/neuman-stubblebine-reauth-tagged_shapes.tst
deleted file mode 100644
--- a/tst/neuman-stubblebine-reauth-tagged_shapes.tst
+++ /dev/null
@@ -1,254 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/neuman-stubblebine-reauth.lisp
@@ -0,0 +1,42 @@
+(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/neuman-stubblebine-reauth.lsp")
 (comment "Strand count bounded at 8")
 
diff --git a/tst/neuman-stubblebine-reauth_shapes.tst b/tst/neuman-stubblebine-reauth_shapes.tst
deleted file mode 100644
--- a/tst/neuman-stubblebine-reauth_shapes.tst
+++ /dev/null
@@ -1,4881 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/neuman-stubblebine.scm")
 
 (defprotocol neuman-stubblebine basic
diff --git a/tst/neuman-stubblebine_shapes.tst b/tst/neuman-stubblebine_shapes.tst
deleted file mode 100644
--- a/tst/neuman-stubblebine_shapes.tst
+++ /dev/null
@@ -1,229 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/no_contraction.scm")
 
 (defprotocol no-contraction basic
diff --git a/tst/no_contraction_shapes.tst b/tst/no_contraction_shapes.tst
deleted file mode 100644
--- a/tst/no_contraction_shapes.tst
+++ /dev/null
@@ -1,54 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/non_transforming.scm")
 
 (defprotocol non_transforming basic
diff --git a/tst/non_transforming_shapes.tst b/tst/non_transforming_shapes.tst
deleted file mode 100644
--- a/tst/non_transforming_shapes.tst
+++ /dev/null
@@ -1,154 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/nonaug-prune.scm")
 
 (defprotocol nonaug-prune basic
diff --git a/tst/nonaug-prune_shapes.tst b/tst/nonaug-prune_shapes.tst
deleted file mode 100644
--- a/tst/nonaug-prune_shapes.tst
+++ /dev/null
@@ -1,103 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ns-l.scm")
 
 (defprotocol ns basic
diff --git a/tst/ns-l_shapes.tst b/tst/ns-l_shapes.tst
deleted file mode 100644
--- a/tst/ns-l_shapes.tst
+++ /dev/null
@@ -1,126 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ns-rebinding.scm")
 
 (defprotocol ns basic
@@ -531,14 +531,9 @@
       (send (enc n2-0 (pubk b)))))
   (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"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton ns
   (vars (x name) (n1 n2 text) (a b name))
@@ -565,7 +560,7 @@
   (precedes ((1 0) (2 0)) ((2 1) (1 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-0) (rel1 n1 n2)
+  (facts (rel2 x-0 n2-0) (rel2 x n2) (rel1 n1-0 n2-0) (rel1 n1 n2)
     (rel2 n1-0 n2-0) (rel2 n1 n2))
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1-0 (1 1)
@@ -579,14 +574,8 @@
     ((recv (enc n1-0 a (pubk b))) (send (enc n1-0 n2-1 b (pubk a)))))
   (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"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton ns
   (vars (x name) (n1 n2 n2-0 text) (a b name))
@@ -618,7 +607,7 @@
   (precedes ((1 0) (2 0)) ((2 1) (1 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-0) (rel1 n1 n2)
+  (facts (rel2 x-0 n2-0) (rel2 x n2) (rel1 n1-0 n2-0) (rel1 n1 n2)
     (rel2 n1-0 n2-0) (rel2 n1 n2))
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (contracted (n2-1 n2-0)) n1-0 (1 1)
@@ -632,13 +621,8 @@
     ((recv (enc n1-0 a (pubk b))) (send (enc n1-0 n2-0 b (pubk a)))))
   (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"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton ns
   (vars (x name) (n1 n2 text) (a b name))
@@ -672,7 +656,7 @@
   (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-0) (rel1 n1 n2)
+  (facts (rel2 x-0 n2-0) (rel2 x n2) (rel1 n1-0 n2-0) (rel1 n1 n2)
     (rel2 n1-0 n2-0) (rel2 n1 n2))
   (rule fact-init-rel11 fact-init-rel20 rebind-x)
   (operation nonce-test (added-strand resp 2) n1 (0 1)
diff --git a/tst/ns-rebinding_shapes.tst b/tst/ns-rebinding_shapes.tst
deleted file mode 100644
--- a/tst/ns-rebinding_shapes.tst
+++ /dev/null
@@ -1,516 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ns.scm")
 
 (defprotocol ns basic
diff --git a/tst/ns_shapes.tst b/tst/ns_shapes.tst
deleted file mode 100644
--- a/tst/ns_shapes.tst
+++ /dev/null
@@ -1,512 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/nsl3.scm")
 
 (defprotocol nsl3 basic
diff --git a/tst/nsl3_shapes.tst b/tst/nsl3_shapes.tst
deleted file mode 100644
--- a/tst/nsl3_shapes.tst
+++ /dev/null
@@ -1,332 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl4.lisp
@@ -0,0 +1,85 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl4cm1.lisp
@@ -0,0 +1,49 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl4init.lisp
@@ -0,0 +1,73 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl4resp1.lisp
@@ -0,0 +1,73 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl4resp2.lisp
@@ -0,0 +1,73 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl4resp3.lisp
@@ -0,0 +1,73 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl5.lisp
@@ -0,0 +1,149 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl5i.lisp
@@ -0,0 +1,64 @@
+(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
new file mode 100644
--- /dev/null
+++ b/tst/nsl5resp3.lisp
@@ -0,0 +1,131 @@
+(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/nslsk.scm")
 
 (defprotocol nslsk basic
diff --git a/tst/nslsk_shapes.tst b/tst/nslsk_shapes.tst
deleted file mode 100644
--- a/tst/nslsk_shapes.tst
+++ /dev/null
@@ -1,214 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/open-closed-multiloc.scm")
 (comment "Strand count bounded at 44")
 
@@ -664,7 +664,7 @@
   (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)))
+        (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"))
 
@@ -705,7 +705,7 @@
   (seen-ops
     (15
       (operation encryption-test (added-strand dev-up 6) (enc "up" k)
-        (0 1)) (strand-map 0 1 2 3 4)))
+        (0 1)) (strand-map 0 1 4 2 3)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -821,7 +821,7 @@
     (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)))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (5 0))
   (comment "2 in cohort - 1 not yet seen"))
 
diff --git a/tst/open-closed-multiloc_shapes.tst b/tst/open-closed-multiloc_shapes.tst
deleted file mode 100644
--- a/tst/open-closed-multiloc_shapes.tst
+++ /dev/null
@@ -1,417 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/open-closed-tag.scm")
 (comment "Strand count bounded at 44")
 
@@ -638,7 +638,7 @@
   (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)))
+        (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"))
 
@@ -678,7 +678,7 @@
   (seen-ops
     (15
       (operation encryption-test (added-strand dev-up 6) (enc "up" k)
-        (0 1)) (strand-map 0 1 2 3 4)))
+        (0 1)) (strand-map 0 1 4 2 3)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -793,7 +793,7 @@
     (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)))
+      (strand-map 0 1 2 3 4 5)))
   (unrealized (5 0))
   (comment "2 in cohort - 1 not yet seen"))
 
diff --git a/tst/open-closed-tag_shapes.tst b/tst/open-closed-tag_shapes.tst
deleted file mode 100644
--- a/tst/open-closed-tag_shapes.tst
+++ /dev/null
@@ -1,625 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/open-closed.scm")
 (comment "Strand count bounded at 44")
 
@@ -731,7 +731,7 @@
   (seen-ops
     (15
       (operation encryption-test (added-strand dev-up 6) (enc "up" k)
-        (0 1)) (strand-map 0 1 2 3 4)))
+        (0 1)) (strand-map 0 1 4 2 3)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
diff --git a/tst/open-closed_shapes.tst b/tst/open-closed_shapes.tst
deleted file mode 100644
--- a/tst/open-closed_shapes.tst
+++ /dev/null
@@ -1,425 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/or.scm")
 
 (defprotocol or basic
diff --git a/tst/or_shapes.tst b/tst/or_shapes.tst
deleted file mode 100644
--- a/tst/or_shapes.tst
+++ /dev/null
@@ -1,168 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ordered.scm")
 
 (defprotocol ordered basic
diff --git a/tst/ordered_shapes.tst b/tst/ordered_shapes.tst
deleted file mode 100644
--- a/tst/ordered_shapes.tst
+++ /dev/null
@@ -1,95 +0,0 @@
-(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/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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/pca.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/pca_shapes.tst b/tst/pca_shapes.tst
deleted file mode 100644
--- a/tst/pca_shapes.tst
+++ /dev/null
@@ -1,96 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/pen-non-orig-test.scm")
 
 (defprotocol pennonorigtest basic
diff --git a/tst/pen-non-orig-test_shapes.tst b/tst/pen-non-orig-test_shapes.tst
deleted file mode 100644
--- a/tst/pen-non-orig-test_shapes.tst
+++ /dev/null
@@ -1,113 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/pfs-via-pubkey.scm")
 
 (defprotocol pfs-easy basic
diff --git a/tst/pfs-via-pubkey_shapes.tst b/tst/pfs-via-pubkey_shapes.tst
deleted file mode 100644
--- a/tst/pfs-via-pubkey_shapes.tst
+++ /dev/null
@@ -1,152 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/pkinit.scm")
 
 (defprotocol pkinit basic
diff --git a/tst/pkinit_shapes.tst b/tst/pkinit_shapes.tst
deleted file mode 100644
--- a/tst/pkinit_shapes.tst
+++ /dev/null
@@ -1,79 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/preprocess.scm")
 
 (defprotocol ns basic
diff --git a/tst/preprocess_shapes.tst b/tst/preprocess_shapes.tst
deleted file mode 100644
--- a/tst/preprocess_shapes.tst
+++ /dev/null
@@ -1,72 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/print.scm")
 
 (defprotocol print-test basic
diff --git a/tst/print_shapes.tst b/tst/print_shapes.tst
deleted file mode 100644
--- a/tst/print_shapes.tst
+++ /dev/null
@@ -1,34 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/prottrans.scm")
 
 (defprotocol ns basic
diff --git a/tst/prottrans_shapes.tst b/tst/prottrans_shapes.tst
deleted file mode 100644
--- a/tst/prottrans_shapes.tst
+++ /dev/null
@@ -1,215 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/pruning1.scm")
 
 (defprotocol prune basic
diff --git a/tst/pruning1_shapes.tst b/tst/pruning1_shapes.tst
deleted file mode 100644
--- a/tst/pruning1_shapes.tst
+++ /dev/null
@@ -1,107 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/puzzle_example.scm")
 
 (defprotocol puzzle basic
diff --git a/tst/puzzle_example_shapes.tst b/tst/puzzle_example_shapes.tst
deleted file mode 100644
--- a/tst/puzzle_example_shapes.tst
+++ /dev/null
@@ -1,292 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/reflect.scm")
 
 (defprotocol reflect basic
diff --git a/tst/reflect_shapes.tst b/tst/reflect_shapes.tst
deleted file mode 100644
--- a/tst/reflect_shapes.tst
+++ /dev/null
@@ -1,224 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/renamings.scm")
 
 (defprotocol blanchet basic
diff --git a/tst/renamings_shapes.tst b/tst/renamings_shapes.tst
deleted file mode 100644
--- a/tst/renamings_shapes.tst
+++ /dev/null
@@ -1,104 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/role_uniq.scm")
 
 (defprotocol blanchet basic
diff --git a/tst/role_uniq_shapes.tst b/tst/role_uniq_shapes.tst
deleted file mode 100644
--- a/tst/role_uniq_shapes.tst
+++ /dev/null
@@ -1,200 +0,0 @@
-(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.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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/rule-node.scm")
 
 (defprotocol rule-order basic
diff --git a/tst/rule-node_shapes.tst b/tst/rule-node_shapes.tst
deleted file mode 100644
--- a/tst/rule-node_shapes.tst
+++ /dev/null
@@ -1,299 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/rule-order.scm")
 
 (defprotocol rule-order basic
diff --git a/tst/rule-order_shapes.tst b/tst/rule-order_shapes.tst
deleted file mode 100644
--- a/tst/rule-order_shapes.tst
+++ /dev/null
@@ -1,58 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/sa.scm
+++ /dev/null
@@ -1,226 +0,0 @@
-(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
--- a/tst/sa.tst
+++ b/tst/sa.tst
@@ -471,14 +471,8 @@
     ((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"))
+  (comment "1 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)
@@ -509,34 +503,13 @@
       (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 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"))
+  (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)
@@ -588,9 +561,9 @@
   (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)
+  (rule 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)
@@ -603,22 +576,8 @@
       (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"))
+  (comment "1 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)
@@ -637,9 +596,9 @@
   (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
+  (rule cau-dev-open-2 cau-dev-pass-1 eff-dev-up-3
+    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))
@@ -656,17 +615,14 @@
       (stor ls (cat pt "st" d o o))))
   (label 8)
   (parent 7)
-  (seen 9 9)
+  (seen 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"))
+  (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)
@@ -776,22 +732,14 @@
     ((recv k) (send k)))
   (label 11)
   (parent 9)
-  (seen 14 14 14)
+  (seen 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"))
+  (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)
@@ -836,7 +784,7 @@
     ((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))))
+  (origs (pt-2 (2 3)) (pt-3 (2 4)) (pt (3 3)) (n (0 3)) (k (1 0))))
 
 (defskeleton subatomic-open-closed
   (vars (old old1 any mesg) (k skey) (n n-0 text) (d o name)
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/sigenc.scm")
 
 (defprotocol mult-keys-sig-enc basic
diff --git a/tst/sigenc_shapes.tst b/tst/sigenc_shapes.tst
deleted file mode 100644
--- a/tst/sigenc_shapes.tst
+++ /dev/null
@@ -1,287 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/sorted_epmo_acctnum.scm")
 
 (defprotocol sorted_epmo_acctnum basic
diff --git a/tst/sorted_epmo_acctnum_shapes.tst b/tst/sorted_epmo_acctnum_shapes.tst
deleted file mode 100644
--- a/tst/sorted_epmo_acctnum_shapes.tst
+++ /dev/null
@@ -1,304 +0,0 @@
-(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.tst b/tst/sts.tst
--- a/tst/sts.tst
+++ b/tst/sts.tst
@@ -1,7 +1,7 @@
 (herald "Station-to-station protocol" (bound 20)
   (algebra diffie-hellman))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/sts.scm")
 (comment "Strand count bounded at 20")
 
diff --git a/tst/sts_non_role.tst b/tst/sts_non_role.tst
deleted file mode 100644
--- a/tst/sts_non_role.tst
+++ /dev/null
@@ -1,1461 +0,0 @@
-(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_weakened_reflect.tst b/tst/sts_weakened_reflect.tst
--- a/tst/sts_weakened_reflect.tst
+++ b/tst/sts_weakened_reflect.tst
@@ -1,7 +1,7 @@
 (herald "station-to-station-reflect protocol" (bound 20)
   (algebra diffie-hellman))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/sts_weakened_reflect.scm")
 (comment "Strand count bounded at 20")
 
diff --git a/tst/subatomic-open-closed-dist.scm b/tst/subatomic-open-closed-dist.scm
deleted file mode 100644
--- a/tst/subatomic-open-closed-dist.scm
+++ /dev/null
@@ -1,144 +0,0 @@
-(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
--- a/tst/subatomic-open-closed-dist.tst
+++ b/tst/subatomic-open-closed-dist.tst
@@ -480,20 +480,9 @@
       (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"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton subatomic-open-closed
   (vars (old old1 mesg) (k skey) (n text) (d o name)
@@ -507,9 +496,9 @@
   (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)
+  (rule 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)
@@ -552,22 +541,8 @@
     ((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"))
+  (comment "1 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)
@@ -586,9 +561,9 @@
   (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
+  (rule cau-dev-open-2 cau-dev-pass-1 eff-dev-up-3
+    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))
@@ -605,17 +580,14 @@
       (stor ls (cat pt "st" d o o))))
   (label 7)
   (parent 6)
-  (seen 8 8)
+  (seen 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)))
+      (strand-map 0 1 2 3)))
   (unrealized (3 2))
-  (comment "3 in cohort - 1 not yet seen"))
+  (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)
@@ -652,7 +624,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))))
+  (origs (pt-2 (1 3)) (pt-3 (1 4)) (pt (3 3)) (n (0 3))))
 
 (comment "Nothing left to do")
 
@@ -905,21 +877,9 @@
       (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"))
+  (comment "1 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)
@@ -936,9 +896,9 @@
   (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)
+  (rule 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)
@@ -982,22 +942,8 @@
       (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"))
+  (comment "1 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)
@@ -1016,9 +962,9 @@
   (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
+  (rule cau-dev-open-2 cau-dev-pass-1 eff-dev-up-3
+    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))
@@ -1034,17 +980,14 @@
       (stor ls (cat pt "st" d o o))))
   (label 14)
   (parent 13)
-  (seen 15 15)
+  (seen 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)))
+      (strand-map 0 1 2 3)))
   (unrealized (0 1) (1 2) (3 2))
-  (comment "3 in cohort - 1 not yet seen"))
+  (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)
@@ -1151,22 +1094,14 @@
     ((recv k) (send k)))
   (label 17)
   (parent 15)
-  (seen 20 20 20)
+  (seen 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"))
+  (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)
@@ -1210,7 +1145,7 @@
   (seen-ops
     (21
       (operation encryption-test (added-strand dev-up 6) (enc "up" k)
-        (4 1)) (strand-map 0 1 2 3 4)))
+        (4 1)) (strand-map 0 4 1 2 3)))
   (unrealized (0 2) (3 0) (4 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1251,38 +1186,14 @@
     ((recv k) (send k)))
   (label 19)
   (parent 16)
-  (seen 23 23 23 23 23 23 23)
+  (seen 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"))
+  (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)
@@ -1401,54 +1312,14 @@
       (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 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"))
+  (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)
@@ -1849,22 +1720,14 @@
       (send (enc "may I pass" k))) ((recv k) (send k)))
   (label 31)
   (parent 27)
-  (seen 35 35 35)
+  (seen 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"))
+  (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)
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.4")
+(comment "CPSA 4.4.5")
 (comment
   "All input read from tst/subatomic-open-closed-test-genrule.scm")
 (comment "Strand count bounded at 40")
@@ -713,20 +713,9 @@
       (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"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton subatomic-open-closed
   (vars (old old1 mesg) (k skey) (n text) (d o name)
@@ -740,9 +729,9 @@
   (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)
+  (rule 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)
@@ -785,22 +774,8 @@
     ((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"))
+  (comment "1 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)
@@ -819,9 +794,9 @@
   (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
+  (rule cau-dev-open-2 cau-dev-pass-1 eff-dev-up-3
+    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))
@@ -838,17 +813,14 @@
       (stor ls (cat pt "st" d o o))))
   (label 7)
   (parent 6)
-  (seen 8 8)
+  (seen 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)))
+      (strand-map 0 1 2 3)))
   (unrealized (3 2))
-  (comment "3 in cohort - 1 not yet seen"))
+  (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)
@@ -885,7 +857,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))))
+  (origs (pt-2 (1 3)) (pt-3 (1 4)) (pt (3 3)) (n (0 3))))
 
 (comment "Nothing left to do")
 
@@ -1254,21 +1226,9 @@
       (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"))
+  (comment "1 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)
@@ -1285,9 +1245,9 @@
   (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)
+  (rule 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)
@@ -1331,22 +1291,8 @@
       (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"))
+  (comment "1 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)
@@ -1365,9 +1311,9 @@
   (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
+  (rule cau-dev-open-2 cau-dev-pass-1 eff-dev-up-3
+    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))
@@ -1383,17 +1329,14 @@
       (stor ls (cat pt "st" d o o))))
   (label 14)
   (parent 13)
-  (seen 15 15)
+  (seen 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)))
+      (strand-map 0 1 2 3)))
   (unrealized (0 1) (1 2) (3 2))
-  (comment "3 in cohort - 1 not yet seen"))
+  (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)
@@ -1499,22 +1442,14 @@
     ((recv k) (send k)))
   (label 17)
   (parent 15)
-  (seen 20 20 20)
+  (seen 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"))
+  (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)
@@ -1555,7 +1490,7 @@
   (seen-ops
     (21
       (operation encryption-test (added-strand dev-up 6) (enc "up" k)
-        (0 1)) (strand-map 0 1 2 3 4 5)))
+        (0 1)) (strand-map 0 1 5 2 3 4)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1720,22 +1655,14 @@
     ((recv k) (send k)))
   (label 22)
   (parent 18)
-  (seen 24 24 24)
+  (seen 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"))
+  (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)
diff --git a/tst/subatomic-open-closed-test-genrule_shapes.tst b/tst/subatomic-open-closed-test-genrule_shapes.tst
deleted file mode 100644
--- a/tst/subatomic-open-closed-test-genrule_shapes.tst
+++ /dev/null
@@ -1,993 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/subatomic-open-closed.scm")
 (comment "Strand count bounded at 40")
 
@@ -472,20 +472,9 @@
       (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"))
+  (comment "1 in cohort - 1 not yet seen"))
 
 (defskeleton subatomic-open-closed
   (vars (old old1 mesg) (k skey) (n text) (d o name)
@@ -499,9 +488,9 @@
   (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)
+  (rule 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)
@@ -544,22 +533,8 @@
     ((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"))
+  (comment "1 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)
@@ -578,9 +553,9 @@
   (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
+  (rule cau-dev-open-2 cau-dev-pass-1 eff-dev-up-3
+    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))
@@ -597,17 +572,14 @@
       (stor ls (cat pt "st" d o o))))
   (label 7)
   (parent 6)
-  (seen 8 8)
+  (seen 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)))
+      (strand-map 0 1 2 3)))
   (unrealized (3 2))
-  (comment "3 in cohort - 1 not yet seen"))
+  (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)
@@ -644,7 +616,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))))
+  (origs (pt-2 (1 3)) (pt-3 (1 4)) (pt (3 3)) (n (0 3))))
 
 (comment "Nothing left to do")
 
@@ -893,21 +865,9 @@
       (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"))
+  (comment "1 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)
@@ -924,9 +884,9 @@
   (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)
+  (rule 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)
@@ -970,22 +930,8 @@
       (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"))
+  (comment "1 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)
@@ -1004,9 +950,9 @@
   (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
+  (rule cau-dev-open-2 cau-dev-pass-1 eff-dev-up-3
+    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))
@@ -1022,17 +968,14 @@
       (stor ls (cat pt "st" d o o))))
   (label 14)
   (parent 13)
-  (seen 15 15)
+  (seen 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)))
+      (strand-map 0 1 2 3)))
   (unrealized (0 1) (1 2) (3 2))
-  (comment "3 in cohort - 1 not yet seen"))
+  (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)
@@ -1138,22 +1081,14 @@
     ((recv k) (send k)))
   (label 17)
   (parent 15)
-  (seen 20 20 20)
+  (seen 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"))
+  (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)
@@ -1194,7 +1129,7 @@
   (seen-ops
     (21
       (operation encryption-test (added-strand dev-up 6) (enc "up" k)
-        (0 1)) (strand-map 0 1 2 3 4 5)))
+        (0 1)) (strand-map 0 1 5 2 3 4)))
   (unrealized (0 1))
   (comment "3 in cohort - 2 not yet seen"))
 
@@ -1359,22 +1294,14 @@
     ((recv k) (send k)))
   (label 22)
   (parent 18)
-  (seen 24 24 24)
+  (seen 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"))
+  (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)
diff --git a/tst/subatomic-open-closed_shapes.tst b/tst/subatomic-open-closed_shapes.tst
deleted file mode 100644
--- a/tst/subatomic-open-closed_shapes.tst
+++ /dev/null
@@ -1,632 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/sync_locn_envelope.scm")
 (comment "Step count limited to 6000")
 (comment "Strand count bounded at 30")
diff --git a/tst/sync_locn_envelope_shapes.tst b/tst/sync_locn_envelope_shapes.tst
deleted file mode 100644
--- a/tst/sync_locn_envelope_shapes.tst
+++ /dev/null
@@ -1,646 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/targetterms1.scm")
 
 (defprotocol targetterms basic
diff --git a/tst/targetterms1_shapes.tst b/tst/targetterms1_shapes.tst
deleted file mode 100644
--- a/tst/targetterms1_shapes.tst
+++ /dev/null
@@ -1,51 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/targetterms2.scm")
 
 (defprotocol targetterms2 basic
diff --git a/tst/targetterms2_shapes.tst b/tst/targetterms2_shapes.tst
deleted file mode 100644
--- a/tst/targetterms2_shapes.tst
+++ /dev/null
@@ -1,62 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/targetterms6.scm")
 
 (defprotocol targetterms6 basic
diff --git a/tst/targetterms6_shapes.tst b/tst/targetterms6_shapes.tst
deleted file mode 100644
--- a/tst/targetterms6_shapes.tst
+++ /dev/null
@@ -1,112 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/targetterms8.scm")
 
 (defprotocol targetterms8 basic
diff --git a/tst/targetterms8_shapes.tst b/tst/targetterms8_shapes.tst
deleted file mode 100644
--- a/tst/targetterms8_shapes.tst
+++ /dev/null
@@ -1,100 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/thisthat.scm")
 
 (defprotocol thisthat basic
diff --git a/tst/thisthat_shapes.tst b/tst/thisthat_shapes.tst
deleted file mode 100644
--- a/tst/thisthat_shapes.tst
+++ /dev/null
@@ -1,74 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/tickle-unique.scm")
 
 (defprotocol tickle basic
diff --git a/tst/tickle-unique_shapes.tst b/tst/tickle-unique_shapes.tst
deleted file mode 100644
--- a/tst/tickle-unique_shapes.tst
+++ /dev/null
@@ -1,104 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/timestamping.scm")
 
 (defprotocol timestamping-service basic
diff --git a/tst/timestamping_shapes.tst b/tst/timestamping_shapes.tst
deleted file mode 100644
--- a/tst/timestamping_shapes.tst
+++ /dev/null
@@ -1,237 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/tnsl5.lisp
@@ -0,0 +1,168 @@
+(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.4")
+(comment "CPSA 4.4.5")
 (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
deleted file mode 100644
--- a/tst/trust-anchor_shapes.tst
+++ /dev/null
@@ -1,58 +0,0 @@
-(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.tst b/tst/ugen-at.tst
--- a/tst/ugen-at.tst
+++ b/tst/ugen-at.tst
@@ -1,6 +1,6 @@
 (herald uniq-at)
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ugen-at.scm")
 
 (defprotocol yahalom-plus-uniq-at basic
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/ugo.scm")
 
 (defprotocol uniq-gen-example basic
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/uncarried_keys.scm")
 
 (defprotocol uncarried-keys basic
diff --git a/tst/uncarried_keys_shapes.tst b/tst/uncarried_keys_shapes.tst
deleted file mode 100644
--- a/tst/uncarried_keys_shapes.tst
+++ /dev/null
@@ -1,104 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/unilateral.scm")
 
 (defprotocol unilateral basic
diff --git a/tst/unilateral_shapes.tst b/tst/unilateral_shapes.tst
deleted file mode 100644
--- a/tst/unilateral_shapes.tst
+++ /dev/null
@@ -1,380 +0,0 @@
-(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.tst b/tst/uniq-at.tst
--- a/tst/uniq-at.tst
+++ b/tst/uniq-at.tst
@@ -1,6 +1,6 @@
 (herald uniq-at)
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/uniq-at.scm")
 
 (defprotocol yahalom-plus-uniq-at basic
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/uniq-gen-test.scm")
 
 (defprotocol uniqgentest basic
diff --git a/tst/uniq-gen-test_shapes.tst b/tst/uniq-gen-test_shapes.tst
deleted file mode 100644
--- a/tst/uniq-gen-test_shapes.tst
+++ /dev/null
@@ -1,127 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/uo.scm")
 
 (defprotocol uniq-orig basic
diff --git a/tst/uo_shapes.tst b/tst/uo_shapes.tst
deleted file mode 100644
--- a/tst/uo_shapes.tst
+++ /dev/null
@@ -1,44 +0,0 @@
-(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/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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/wang-hash.scm")
 (comment "Strand count bounded at 10")
 
diff --git a/tst/wang-hash_shapes.tst b/tst/wang-hash_shapes.tst
deleted file mode 100644
--- a/tst/wang-hash_shapes.tst
+++ /dev/null
@@ -1,5146 +0,0 @@
-(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_shapes.tst b/tst/wang-key-hash-tst_shapes.tst
deleted file mode 100644
--- a/tst/wang-key-hash-tst_shapes.tst
+++ /dev/null
@@ -1,18256 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/wang-key-hash.scm")
 (comment "Strand count bounded at 10")
 
diff --git a/tst/wang-key-hash_shapes.tst b/tst/wang-key-hash_shapes.tst
deleted file mode 100644
--- a/tst/wang-key-hash_shapes.tst
+++ /dev/null
@@ -1,9071 +0,0 @@
-(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
new file mode 100644
--- /dev/null
+++ b/tst/wang.lisp
@@ -0,0 +1,434 @@
+(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_shapes.tst b/tst/weakened-subatomic-open-closed_shapes.tst
deleted file mode 100644
--- a/tst/weakened-subatomic-open-closed_shapes.tst
+++ /dev/null
@@ -1,932 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/weird.scm")
 
 (defprotocol weird basic
diff --git a/tst/weird_shapes.tst b/tst/weird_shapes.tst
deleted file mode 100644
--- a/tst/weird_shapes.tst
+++ /dev/null
@@ -1,86 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/wide-mouth-frog-scyther.lsp")
 (comment "Strand count bounded at 8")
 
diff --git a/tst/wide-mouth-frog-scyther_shapes.tst b/tst/wide-mouth-frog-scyther_shapes.tst
deleted file mode 100644
--- a/tst/wide-mouth-frog-scyther_shapes.tst
+++ /dev/null
@@ -1,348 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/wide-mouth-frog.lsp")
 (comment "Strand count bounded at 8")
 
diff --git a/tst/wide-mouth-frog_shapes.tst b/tst/wide-mouth-frog_shapes.tst
deleted file mode 100644
--- a/tst/wide-mouth-frog_shapes.tst
+++ /dev/null
@@ -1,349 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/wonthull.scm")
 (comment "Strand count bounded at 9")
 
diff --git a/tst/wonthull2.tst b/tst/wonthull2.tst
--- a/tst/wonthull2.tst
+++ b/tst/wonthull2.tst
@@ -1,6 +1,6 @@
 (herald wonthull2 (bound 9))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/wonthull2.scm")
 (comment "Strand count bounded at 9")
 
diff --git a/tst/wonthull2_shapes.tst b/tst/wonthull2_shapes.tst
deleted file mode 100644
--- a/tst/wonthull2_shapes.tst
+++ /dev/null
@@ -1,207 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/wonthull3.scm")
 
 (defprotocol wonthull3 basic
diff --git a/tst/wonthull3_shapes.tst b/tst/wonthull3_shapes.tst
deleted file mode 100644
--- a/tst/wonthull3_shapes.tst
+++ /dev/null
@@ -1,167 +0,0 @@
-(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
deleted file mode 100644
--- a/tst/wonthull_shapes.tst
+++ /dev/null
@@ -1,100 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/woolam.scm")
 
 (defprotocol woolam basic
diff --git a/tst/woolam_shapes.tst b/tst/woolam_shapes.tst
deleted file mode 100644
--- a/tst/woolam_shapes.tst
+++ /dev/null
@@ -1,406 +0,0 @@
-(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_shapes.tst b/tst/wrap_decrypt_shapes.tst
deleted file mode 100644
--- a/tst/wrap_decrypt_shapes.tst
+++ /dev/null
@@ -1,539 +0,0 @@
-(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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/yahalom-6.3.6.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/yahalom-6.3.6_shapes.tst b/tst/yahalom-6.3.6_shapes.tst
deleted file mode 100644
--- a/tst/yahalom-6.3.6_shapes.tst
+++ /dev/null
@@ -1,242 +0,0 @@
-(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.tst b/tst/yahalom-forward.tst
--- a/tst/yahalom-forward.tst
+++ b/tst/yahalom-forward.tst
@@ -1,6 +1,6 @@
 (herald "Yahalom Protocol With Forwarding" (bound 15))
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/yahalom-forward.scm")
 (comment "Strand count bounded at 15")
 
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.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/yahalom.scm")
 (comment "Strand count bounded at 15")
 
diff --git a/tst/yahalom_shapes.tst b/tst/yahalom_shapes.tst
deleted file mode 100644
--- a/tst/yahalom_shapes.tst
+++ /dev/null
@@ -1,167 +0,0 @@
-(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.tst b/tst/yes-or-no.tst
--- a/tst/yes-or-no.tst
+++ b/tst/yes-or-no.tst
@@ -1,6 +1,6 @@
 (herald yes-or-no)
 
-(comment "CPSA 4.4.4")
+(comment "CPSA 4.4.5")
 (comment "All input read from tst/yes-or-no.scm")
 
 (defprotocol yes-or-no basic
