From 88fd0a8e56bb65e9fe096ad515aa583298e1cd04 Mon Sep 17 00:00:00 2001 From: sneeker Date: Tue, 22 Sep 2026 09:20:00 +0200 Subject: [PATCH] initial commit: confluence and normalisation --- .gitignore | 11 + README.md | 15 ++ dune-project | 4 + graphs/dependency.dot | 110 ++++++++++ graphs/dependency.png | Bin 0 -> 163675 bytes graphs/dependency.svg | 493 ++++++++++++++++++++++++++++++++++++++++++ graphs/reduction.dot | 20 ++ graphs/reduction.png | Bin 0 -> 29263 bytes graphs/reduction.svg | 93 ++++++++ graphs/rules.dot | 19 ++ graphs/rules.png | Bin 0 -> 44541 bytes graphs/rules.svg | 100 +++++++++ graphs/theorems.json | 272 +++++++++++++++++++++++ scripts/audit.sh | 52 +++++ scripts/gen_graphs.py | 180 +++++++++++++++ theory/ExecReducer.v | 272 +++++++++++++++++++++++ theory/dune | 3 + 17 files changed, 1644 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 dune-project create mode 100644 graphs/dependency.dot create mode 100644 graphs/dependency.png create mode 100644 graphs/dependency.svg create mode 100644 graphs/reduction.dot create mode 100644 graphs/reduction.png create mode 100644 graphs/reduction.svg create mode 100644 graphs/rules.dot create mode 100644 graphs/rules.png create mode 100644 graphs/rules.svg create mode 100644 graphs/theorems.json create mode 100755 scripts/audit.sh create mode 100755 scripts/gen_graphs.py create mode 100644 theory/ExecReducer.v create mode 100644 theory/dune diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8eff97 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +_build/ +*.vo +*.vok +*.vos +*.glob +*.aux +*.cmi +*.cmo +*.cmx +__pycache__/ +*.pyc diff --git a/README.md b/README.md new file mode 100644 index 0000000..408c869 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +This was (mostly) me being bored in a Monday evening and in an attempt to formalise in Rocq the confluence and normalisation results that Delia Kesner and Shane Ó Conchúir obtain for the lambda calculus of Milner with partial substitutions which is available as arXiv:2312.13270. + +## Graphs + +The dependency graph covers the six milestones and every edge runs from a dependency to the result that uses it while the node colour encodes the status proved or stated or planned or blocked: + +![Theorem dependency graph](graphs/dependency.svg) + +The rule sketch gives the transition system generated by the rules B and Gc and R: + +![Reduction rules](graphs/rules.svg) + +The reduction graph gives the bounded reduct set of the term that applies the duplicating identity to a variable with every edge labelled by its rule and with the normal form marked: + +![Reduction graph of the duplicating identity](graphs/reduction.svg) diff --git a/dune-project b/dune-project new file mode 100644 index 0000000..0eacd23 --- /dev/null +++ b/dune-project @@ -0,0 +1,4 @@ +(lang dune 3.21) +(name lambda_sub) +(using rocq 0.11) +(version 0.1.0) diff --git a/graphs/dependency.dot b/graphs/dependency.dot new file mode 100644 index 0000000..8efbe20 --- /dev/null +++ b/graphs/dependency.dot @@ -0,0 +1,110 @@ +digraph theorem_deps { + rankdir=LR; + bgcolor="white"; + node [fontname=Inter, fontsize=10, fontcolor="#333333"]; + edge [fontname=Inter, fontsize=8, color="#333333"]; + graph [fontname=Inter, fontsize=12, labelloc=t, label="Milner's Lambda-Calculus with Partial Substitutions - theorem dependency (M0)"]; + subgraph cluster_M0 { + label="M0"; + style="rounded"; + color="#bbbbbb"; + fontcolor="#333333"; + exec_step [label="exec_step", color="#38761d", fillcolor="#d9ead3", style="filled", fontcolor="#333333", tooltip="exec_step theory/ExecReducer.v https://arxiv.org/html/2312.13270v1", shape=ellipse]; + exec_examples [label="exec_examples", color="#38761d", fillcolor="#d9ead3", style="filled", fontcolor="#333333", tooltip="exec_examples theory/ExecReducer.v https://arxiv.org/html/2312.13270v1", shape=ellipse]; + } + subgraph cluster_M1 { + label="M1"; + style="rounded"; + color="#bbbbbb"; + fontcolor="#333333"; + m1_syntax [label="M1 syntax/binding", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m1_syntax (section 2) https://arxiv.org/html/2312.13270v1", shape=ellipse]; + m1_open_close [label="open/close laws", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m1_open_close (section 2) https://arxiv.org/html/2312.13270v1", shape=ellipse]; + m1_red1 [label="red1 (B, Gc, R)", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m1_red1 (section 2) https://arxiv.org/html/2312.13270v1", shape=ellipse]; + } + subgraph cluster_M2 { + label="M2"; + style="rounded"; + color="#bbbbbb"; + fontcolor="#333333"; + lemma_2_1_fv_preserved [label="Lemma 2.1 fv preserved", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="lemma_2_1_fv_preserved (section 2) https://arxiv.org/html/2312.13270v1", shape=box]; + lemma_2_2_full_comp [label="Lemma 2.2 full composition", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="lemma_2_2_full_comp (section 2) https://arxiv.org/html/2312.13270v1", shape=box]; + lemma_2_3_beta_sim [label="Lemma 2.3 β-simulation", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="lemma_2_3_beta_sim (section 2) https://arxiv.org/html/2312.13270v1", shape=box]; + } + subgraph cluster_M3 { + label="M3"; + style="rounded"; + color="#bbbbbb"; + fontcolor="#333333"; + m3_measure [label="sub measure", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m3_measure (section A) https://arxiv.org/html/2312.13270v1", shape=ellipse]; + m3_termination [label="{R,Gc} termination", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m3_termination (section 3.1) https://arxiv.org/html/2312.13270v1", shape=box]; + m3_local_confluence [label="{R,Gc} local confluence", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m3_local_confluence (section 3.1) https://arxiv.org/html/2312.13270v1", shape=box]; + lemma_3_2_sub_nf_unique [label="Lemma 3.2 sub NF unique", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="lemma_3_2_sub_nf_unique (section 3.1) https://arxiv.org/html/2312.13270v1", shape=box]; + } + subgraph cluster_M4 { + label="M4"; + style="rounded"; + color="#bbbbbb"; + fontcolor="#333333"; + m4_par [label="parallel reduction par", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m4_par (section 3.2) https://arxiv.org/html/2312.13270v1", shape=ellipse]; + m4_par_diamond [label="par diamond", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m4_par_diamond (section 3.2) https://arxiv.org/html/2312.13270v1", shape=box]; + theorem_confluence_terms [label="Confluence on terms", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="theorem_confluence_terms (section 3.2) https://arxiv.org/html/2312.13270v1", shape=box]; + } + subgraph cluster_M5 { + label="M5"; + style="rounded"; + color="#bbbbbb"; + fontcolor="#333333"; + m5_mvar [label="XΔ metaterms", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m5_mvar (section 3.3) https://arxiv.org/html/2312.13270v1", shape=ellipse]; + m5_rx [label="RX rule", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m5_rx (section 3.3) https://arxiv.org/html/2312.13270v1", shape=box]; + m5_eq_C [label="=C setoid", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m5_eq_C (section 3.3) https://arxiv.org/html/2312.13270v1", shape=box]; + m5_coherence [label="RX + =C coherence", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m5_coherence (section 3.3) https://arxiv.org/html/2312.13270v1", shape=box]; + theorem_confluence_metaterms [label="Confluence on metaterms", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="theorem_confluence_metaterms (section 3.3) https://arxiv.org/html/2312.13270v1", shape=box]; + } + subgraph cluster_M6 { + label="M6"; + style="rounded"; + color="#bbbbbb"; + fontcolor="#333333"; + m6_translation [label="translation to λβp", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m6_translation (section 4) https://arxiv.org/html/2312.13270v1", shape=box]; + m6_sn [label="SN for simply typed", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m6_sn (section 6) https://arxiv.org/html/2312.13270v1", shape=box]; + m6_intersection [label="intersection typing", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m6_intersection (section 6) https://arxiv.org/html/2312.13270v1", shape=box]; + m6_typable_sn [label="typable → SN", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m6_typable_sn (section 6) https://arxiv.org/html/2312.13270v1", shape=box]; + m6_sn_typable [label="SN → typable", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="m6_sn_typable (section 6) https://arxiv.org/html/2312.13270v1", shape=box]; + corollary_6_21_psn [label="Cor 6.21 PSN", color="#777777", fillcolor="#f3f3f3", style="dashed", fontcolor="#333333", tooltip="corollary_6_21_psn (section 6) https://arxiv.org/html/2312.13270v1", shape=box]; + } + exec_step -> exec_examples; + exec_examples -> m1_syntax; + m1_syntax -> m1_open_close; + m1_syntax -> m1_red1; + m1_open_close -> m1_red1; + m1_red1 -> lemma_2_1_fv_preserved; + m1_red1 -> lemma_2_2_full_comp; + m1_red1 -> lemma_2_3_beta_sim; + lemma_2_2_full_comp -> lemma_2_3_beta_sim; + m1_red1 -> m3_measure; + m3_measure -> m3_termination; + m3_termination -> m3_local_confluence; + m1_red1 -> m3_local_confluence; + m3_local_confluence -> lemma_3_2_sub_nf_unique; + m1_red1 -> m4_par; + lemma_3_2_sub_nf_unique -> m4_par; + m4_par -> m4_par_diamond; + m4_par_diamond -> theorem_confluence_terms; + lemma_2_3_beta_sim -> theorem_confluence_terms; + m1_syntax -> m5_mvar; + m5_mvar -> m5_rx; + m1_red1 -> m5_rx; + m5_mvar -> m5_eq_C; + m5_rx -> m5_coherence; + m5_eq_C -> m5_coherence; + lemma_3_2_sub_nf_unique -> m5_coherence; + m5_coherence -> theorem_confluence_metaterms; + m4_par_diamond -> theorem_confluence_metaterms; + m1_red1 -> m6_translation; + m6_translation -> m6_sn; + m6_sn -> m6_intersection; + m6_intersection -> m6_typable_sn; + m6_typable_sn -> m6_sn_typable; + m6_sn_typable -> corollary_6_21_psn; + theorem_confluence_terms -> corollary_6_21_psn; +} diff --git a/graphs/dependency.png b/graphs/dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..e60c57aad4d69fc51c7200686417ffd6fdaef93d GIT binary patch literal 163675 zcmd43cT`tb*DZ`OYGN$0q9Bkcs5DV&((Oo>-a(~zL3%YB!GfSPDN>|&q)XSJAiaZh z6_5_nrQf+l&GUTs8{-?_A9viBcjSE(;r!0od+oL6nscsm@3N%u*3DF#DJUqmid;G` zLqW0Gh=Ss$55H{0cXA_tqQn1eye1}mo??~!UsyqmHwDEX6e8!($k{#}>9kR6nps_4 z<@@F6-TN=3|9Nvg#!Qx)$?IS^Plb4eZ=9xBL;V4sKRBI&4k^a@9QHJwHL zhW7_9%2=Mur!|U%7R&_?{8h~Jc3tVHeU2@oMoPbJzDEDNqd?6Ee%pcrTZ)hWjGOq+ zue|G(ga7$=^5+n3dZVBI`v@f%wpd58s>FVNmk)E_% zmfgE4>o1?L-f?pq?kaFlJ`iBJykKS0m9M<(uz2l1cYd=PYK#-l)JjQxyi2QEWqY+} zhBnuV&ke5mZbeO}C{35;nXAQFZv(aLAF-C&j&}(pDW_i~zxtHthUL;1^B}E^e*d?X z6GEF!`hA4$oIm~Spph^-YVP5LJ0I#UDpFHdXV6&@kV^aV#nz;|P(9RTC5OwbEAhpP zQ|ZgxW?hZ#W<^Qtdez#?ufA@<%~Gl#%V63mqom~j&p-c6ciMDEDIXRT)DUo(mBaVA zOxoy07N%;1W_mn@hDKV`y&?w&^zYoc!^p+O)qX9M)5xzmMRWDC2|e9vq0?g8QKokO z5j#H1fk(KS<=j{&%R{5Sa$hFZti)TlZ*%Ha?!!8WI6FHpyuZC&d!MU>Nvn}@?`!|` z=G#+;PMnY~aF}amD_Xk7Ylo^y0Y%v<;#z5-MYo0Q@;Do-+#wikG3sf zeEZTq%>FC(?fyaL(vBm)u16I}T0bc8pe6mUAuo?)$N6Cd(%%7}Q6KZ11#I znP@Yr?k;lCOj6BO$g$|N9P8i-K4pIP#EBDBLeBYzB?2QaJlLya;L=>;Q#YYE%UM-@ zBS?MZMB!gWFKN~|yklxF z!t_F&6t+@vTxzOzqjQeEy=l8)sRxaHf3S^Q?B!>c-kdfg@1DJVdnqS3H{QIb1o1Xf z974O_^_hB}wZV8-fyMRfm$9`WPP45XJ^VP$)?*!U3p2wB7JcO>x14+Y_;FjN(UYa6 zrQK9ifx2|$@2OgD`T6;c¼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 + + + + + +theorem_deps + +Milner's Lambda-Calculus with Partial Substitutions - theorem dependency (M0) + +cluster_M0 + +M0 + + +cluster_M1 + +M1 + + +cluster_M2 + +M2 + + +cluster_M3 + +M3 + + +cluster_M4 + +M4 + + +cluster_M5 + +M5 + + +cluster_M6 + +M6 + + + +exec_step + + +exec_step + + + + + +exec_examples + + +exec_examples + + + + + +exec_step->exec_examples + + + + + +m1_syntax + + +M1 syntax/binding + + + + + +exec_examples->m1_syntax + + + + + +m1_open_close + + +open/close laws + + + + + +m1_syntax->m1_open_close + + + + + +m1_red1 + + +red1 (B, Gc, R) + + + + + +m1_syntax->m1_red1 + + + + + +m5_mvar + + +XΔ metaterms + + + + + +m1_syntax->m5_mvar + + + + + +m1_open_close->m1_red1 + + + + + +lemma_2_1_fv_preserved + + +Lemma 2.1 fv preserved + + + + + +m1_red1->lemma_2_1_fv_preserved + + + + + +lemma_2_2_full_comp + + +Lemma 2.2 full composition + + + + + +m1_red1->lemma_2_2_full_comp + + + + + +lemma_2_3_beta_sim + + +Lemma 2.3 β-simulation + + + + + +m1_red1->lemma_2_3_beta_sim + + + + + +m3_measure + + +sub measure + + + + + +m1_red1->m3_measure + + + + + +m3_local_confluence + + +{R,Gc} local confluence + + + + + +m1_red1->m3_local_confluence + + + + + +m4_par + + +parallel reduction par + + + + + +m1_red1->m4_par + + + + + +m5_rx + + +RX rule + + + + + +m1_red1->m5_rx + + + + + +m6_translation + + +translation to λβp + + + + + +m1_red1->m6_translation + + + + + +lemma_2_2_full_comp->lemma_2_3_beta_sim + + + + + +theorem_confluence_terms + + +Confluence on terms + + + + + +lemma_2_3_beta_sim->theorem_confluence_terms + + + + + +m3_termination + + +{R,Gc} termination + + + + + +m3_measure->m3_termination + + + + + +m3_termination->m3_local_confluence + + + + + +lemma_3_2_sub_nf_unique + + +Lemma 3.2 sub NF unique + + + + + +m3_local_confluence->lemma_3_2_sub_nf_unique + + + + + +lemma_3_2_sub_nf_unique->m4_par + + + + + +m5_coherence + + +RX + =C coherence + + + + + +lemma_3_2_sub_nf_unique->m5_coherence + + + + + +m4_par_diamond + + +par diamond + + + + + +m4_par->m4_par_diamond + + + + + +m4_par_diamond->theorem_confluence_terms + + + + + +theorem_confluence_metaterms + + +Confluence on metaterms + + + + + +m4_par_diamond->theorem_confluence_metaterms + + + + + +corollary_6_21_psn + + +Cor 6.21 PSN + + + + + +theorem_confluence_terms->corollary_6_21_psn + + + + + +m5_mvar->m5_rx + + + + + +m5_eq_C + + +=C setoid + + + + + +m5_mvar->m5_eq_C + + + + + +m5_rx->m5_coherence + + + + + +m5_eq_C->m5_coherence + + + + + +m5_coherence->theorem_confluence_metaterms + + + + + +m6_sn + + +SN for simply typed + + + + + +m6_translation->m6_sn + + + + + +m6_intersection + + +intersection typing + + + + + +m6_sn->m6_intersection + + + + + +m6_typable_sn + + +typable → SN + + + + + +m6_intersection->m6_typable_sn + + + + + +m6_sn_typable + + +SN → typable + + + + + +m6_typable_sn->m6_sn_typable + + + + + +m6_sn_typable->corollary_6_21_psn + + + + + diff --git a/graphs/reduction.dot b/graphs/reduction.dot new file mode 100644 index 0000000..2115012 --- /dev/null +++ b/graphs/reduction.dot @@ -0,0 +1,20 @@ +digraph reduction_dup { + rankdir=LR; + bgcolor="white"; + node [fontname=Inter, fontsize=10]; + edge [fontname=Inter, fontsize=9, color="#333333"]; + graph [labelloc=t, fontcolor="#333333", label="(lambda x. x x) y reduction graph"]; + n0 [label="(lambda x. x x) y", shape=box, style="filled", fillcolor="#f5f5f5", color="#333333", fontcolor="#333333"]; + n1 [label="(x x)[x/y]", shape=box, style="filled", fillcolor="#f5f5f5", color="#333333", fontcolor="#333333"]; + n2 [label="(y x)[x/y]", shape=box, style="filled", fillcolor="#f5f5f5", color="#333333", fontcolor="#333333"]; + n2b [label="(x y)[x/y]", shape=box, style="filled", fillcolor="#f5f5f5", color="#333333", fontcolor="#333333"]; + n3 [label="(y y)[x/y]", shape=box, style="filled", fillcolor="#f5f5f5", color="#333333", fontcolor="#333333"]; + nf [label="y y (normal form)", shape=doublecircle, style=filled, fillcolor="#d9ead3", color="#38761d", fontcolor="#333333"]; + n0 -> n1 [label="B", color="#990000"]; + n1 -> n2 [label="R", color="#674ea7"]; + n1 -> n2b [label="R", color="#674ea7"]; + n2 -> n3 [label="R", color="#674ea7"]; + n2b -> n3 [label="R", color="#674ea7"]; + n3 -> nf [label="Gc", color="#38761d"]; + {rank=same; n2; n2b;} +} diff --git a/graphs/reduction.png b/graphs/reduction.png new file mode 100644 index 0000000000000000000000000000000000000000..951435e2f987c34acd4a7be008f19adfd360f346 GIT binary patch literal 29263 zcmZ_0by$?!_dbjTDlOe2(nxnoOG`IM!%)&7E#1;3ARx`qol19icXv0xJ?EUy_j><% z&$(0>hMDKtd+oLEb>HirpwF`6$glBV!@w{Q|7f=bRm_vT&Hu*M(%9CH*{Jbf2JXBAlUjwbgNiZsE=-&q= zkYLXPkABjB`|npD|M#TlQMmv8;*YkE|9<8Df4}#h>EB-ydK={Z?^jR3OXW^F9xjBX zrIEzbYp>j#@6u`4#o*|=p<7#9zrnz8z*e^eLb)#Q(HAiPS(Wt{Gp+E?@ zs=#lM#U^)f^8weVo2xrJ!6_+3(G)T*t*ye7>Ejx7#>U3dNvuIu^L672hN#5@DLgFZ z6Lbsim)b(Y!VW~T(2;SQ67xxV@bbYLP`j+b)6tDNaH2NM26<;t z8PTV4*-?;q-ZAwju@$U#fhFbuOP4`>a(PL~!;@TU(7D5nDL)uW#1luWT68q2>$%Mx z6QDC$q>aaA`@5(WO(>AtAa@te7cFalzCIqjr}C|&k(L&ryu7?tvj>r;rly;lo9SFl zsj-Wm9%=K#O~Jpzv|lbp^+Z$(8#?f0f4WmCA7 zYxZMeFvE#>#2g*j`;$3xREu?R2?*lzo%Uzg!U?&Az{B+P^k)b2x2YF-yn=#)Kl$A? zPG{!keww7Y#|;gA{_f+$w(f&~nk^cF9b2V3YdKjF23}9!(6B9)&lQ(RU!<1l=Jqx^ zHMPiPe{ZkvXu0(X*wwdeY*=s@7#OLZ57*4IRJ+bhEG(;Ckz}wNs?_NJRFq5(2%wpBx+%L7VF;ND=CNjjEyNl`5zdX@0f3HZgQ1q;uv&`s7Y9i zk=WVUv-AZ#?l_N+k6BHJ;Bato8X6iHnV6PAJX*|DNQ{b_PL~-a;fjY728D&meDtWZ-xe}9rVx0%V?jYdq0^{%X<}j`(+Jh9W(MyK#j~8aJ(- zUw5k%H#eu{al6kUEhCf2Y8I7!*W!mLA}Y%C?QAQ*sr@o*KdD0R%NMWAOfqzI^w=uT zwJ!95RK8x=#Xg|GnGB|q^Yb@J+AQ$vl$DpiLPgE7+Z zb~Y@YkdQD`?_>?mX8WMPV`y|V#_8r@jzly?(nY=<;YW%1G+*E66tX{al|5G4UcGzw z4wvzZmx?|bCT1Hr@J#IN9g~wd1_lP~)(g@Q2u*Rr$!i~YeyQ zRfgb@5cPV;56JkeOT7%uu+_?%`CKsW>+3tzl%0zfvC+~0 z24m5(-Zq*JzXRz&ef=I=XpBkprF^kggR}hc$%z8UJM+x(p7-aI!SV6&Q9pkCqVDbQ zR|er3^Wz7aOri!<1?+ns?@1S#q@-l93W51#(LX;8!l0ySZ*NaJ0qH^e_~Jq(TQ02# z1ij3)?<$T1;$T0frlA>$5f>4mT3A@8`Mo8^n>UywBqZzCn`x6V%9os;__( zZQcv+?Ci{Wue6hjhGu1JIMb+z!(xgN2?>d{n8$H1FoWuBcT%q4Ry;>Gg^G@DttXb& zsEWmLPfZ5rH5@7`YC~fqm*)d72qCyTun=HBQ(ZRj`uh4<9g^A1J3u+nFu%302Aj|P zZc`wiK*c1ExnOMjD8IXHWtmbOcsRdjw z=xl6kknos)_t-oQCFa8?BO~kI)ob-%-r4E#M<$@6qWW@ob*$kzn=O+(((LIu@RLi} z*_re6{pznecB{Eh9v=K4(Az;iP%J7g9)y+Ov@~64g@Dx@CmkIf>pDoap?EC*dwUjl z_xDmz4!5hXP`kF#Q4Ff>9>v6y1r|z5%A3nW-Q~LV`+mqbk1zrb*wBu6Kk*vG_XFIk$7S36IK#Ysx_THzlKA0JS?lnYdj#}wt1X|H`p zI(scQ2h$LiK(f(z_43bnfvR^@(TCL3)Ny{4d|C<$_+NdcM3yrZ=`zXem(crJqv7G< zthjl1SvHF)G^)p+b&8^g>gt;dDLuEz<7aoa_V#qjj+eC_IrW#bZEeqUXFL!|cT(p7 z7)Y&k$2ysSYAWkcQc(D#lZi2cAkE0gkd!gXQ^@PlDlQaE$BK>5DZE)H=QJYcb<*)} zfM(w+VJj*s&Qx1RG&S+VKoNe7YcV8qf2YdkcB7h1Kp zeqcYDjQbKGo$85Y58)s~0Ce;Ua`J~09o^)Bw`p2TkzRZ3a+Wf#!8O(o@7=zz=D zoTOA;Bfiu0j1aua(toO$Ng>*KXn8ryw{PFFiW*c5yQ9dp>K((Zo38!2>^6=-8DcRT z`F(q`T1-bxO`X+aHF&kMv5|f5sjmI9XD34``PSYQK8eKR$~!a^2_!RFkYg%mYjrJE ztHZz}`0N(BY*Q7y@bK`wr+qAjMn>ppXn&H}%#Th_GvzbI#)C`WSynwCP`q8xUzV%|N)F4*&nWp@0 zJcBNL&1U@@r-Cg$DOuSf`D8Y}=AM~_`OP}CmA~Y$IvpAm^a@l;3MQt~p53_vVYf@= zCQ!}BAr|Y?C3-#+v29&lp8y0h8_f>OW;lth~2e-=Pad$;itcf+qdx`{mRJ*=vEOrw>lTx!$ioLx(uN@MEBRQNT9us{@ z35n&lAPl1peSQ5FfO!B08IM`4a|i)oNny94tg`ZjBr(;?qfQb}G(0@@?WUxJgc7TH zZm7sQfGJnEw*~;vfO}EbBN$g+aE(hy==$q}U_NFnGgu5xFa)YNQA_XZ{1vYc6rQRg zA2cD;-oCyy0PR4oc}`19`^%937+}peZ{Do3}Qeis$9R^BVFRfNqRyaX+ zdU$y7_4kJq<%1g<$y22CxIb3~t0^HV`Bbu~rOIs7U)ST>@7J%l{aAlN64I!)>Mt|u zeTjlHF^ARF)6>$?Ax4X>tE=mAwTu8>a;nlCXVLwVNLE%BRzB>MXFEFJ0otjun(sN7 zuLm#tj*;;P06HU;=Bl8uct?@A5%D+{PVmQ$zgPz?$=$>4A)Qvu50GVHtpqqZ0O7QC zbiBdGmjnQVi;FACir%{67#rSK)qv-QAn3jc#&3^1fUq#+a+AS{J1Tb20&EVXh=_}05EBoi3kM`H8NhFBYyfQY6O`_L zk44#z0}D?OmhUMjY`2C;o31wqLPJ9n1U&gcH^6Y(SnpnBIbRnGpef{njg75RY4MIH z_B?fewmJet!piDuYpvZTE*m5!TfkHKpBf4pI9VknOfvECwOQ+CfPIUhFc?(3%Y3C4 z_-(73GR+V)LWR1`sh10`a^{HucJcG`YZw7^Z?V{v(i(so9ToLGG7{bW=In2GcU~W! z0=UB-H(4QYC)?o6!s9*v0VmfdFDQ$XKA9zEo&Lrh8MR7IQU` zpuMTm*cH6)>`eja40J3@SI4Vu?d^J?^aIERKr?l0jq)a^R}}3n2xCHS`#^xzme5w!An|@?HXpTazV86YWoUBJWWLUUlZVIr;9E@f zqEmHoPEMydiMvPyF<*r-Tz+mCD9RAN`V3~LCKGjab?{6U%NbS>0PuG#ipoZ_jnM4P z$zOs#AS14VoQ9RUTUiN9%~?5fhmjgWf%wzqCaC4c{raHSsbsFqc0M8!@c0RkZaiq! zl%2&h>25C%H*?ZF^zU!ZFR8h01T4XQ19T9J|CJw<9~2_)wuk%M%4}w+<)YguGPoH7 z5aC&=Pe1rNoBoVtf)^T71lVH*z+>Z`u{^Chdx^>Amqdt&hz0;ixB-x>EcqI=0Miv_ z7@wJI9LMvOlf3_|{4EE?_UY576+Pexa=BeGg5YW@mheVfSro2&^GZGf8IRewNV{G^ zORI4Avv0V%rY7t+`V*piKp9{HO$)tN%}0IxcQmoV;A-bLsoL*HGR0A`8FZvgO{qZK zZq8JiKZl23+1^&quh+Az^SI|uX15$c>d|TT-~;tqZ>=lx(lS}-<$Pq32%t#NdIkoJ z!6IyJZ|hlG4}vva%RhN`0A9s6AOIGP>FK2ZB?a*Be1|=W|Cw3T0$rZ*BQasX1|8zeMGQU2x? zjM@pj%`dsa9+rsI`otw=(W9=fm{FU6FYKX54|j6|Kc&w8cVdLtyj)D};ht=9Yzj%y zzzz-{H}Q+bl-JMibeJ#3AXv54R#A#yqxq==;0yZB5>UC2>lV>*P~%6Yt6cRYZl0l3o0YuGoJ&D9;jKluF5{ z&vW~(>W$L}Y;!w;x~d%sj_QRoD}lfcU*q4uEcH`3rC~opI?cXJc|A!HJ956Xv9~x-&SWQf`yXu=*dt2rd$M_~{9Nqd zqwb)WV2U_%pE(k7e`Eenq}*|uHzV|ROl(Pr)F!oV=TE!0kAE9dM5+EL$jd3tiSWxK z&+f>^#Y_D1TlYj*S57WsRzUj{@svsh%Z7y^S<{me4}jionrJAC3YYn*eh%; zq|7@nSXnFcPacfdewQ-n6FdfmH-mxWpX5xG-kxD2ot@*2uX3fHxTCw$cG7fS!Tpc;G*!$C znZ~LM(tU3fD7zUIv8XtqE^#kSPtL}MwV znVKFC$7%VLz3qo)5^X_aD{c>MvC|Q+Y6t$@y14&Em}D*%n``ScwWdwYDC_r(U|$E% z-NTHlim-}sq6yoZ0-<}zi;|LJZzeX_oh$YvbK>SrCkquT>yE}=RBFiFRfdRYp-?c> z`-V_6;cjh@&Np&A;}ajLpa0S))6-0*@SA3(cr^K%?JGJs|Di`7NjSH19e-!?P%bkj z{&x!BUac@;TcxyS6>J{w-f=P@yAi~9eCUCCl2L{ckv3y|h42NL#g|rF32|KN*jtYV zY+OL|$FV+5+MZg!aoont(MQ3+A_;CveG=h#WMFt{<6L<{?WC);qwnZ{b=uqH_j|sf zV@e0ZC4Es7ivsIB;Xm^E(HI1)TlGB)O3HMY_3T3fmm9^0z4;y}iS04&L#L|E)t)XZ zBXfI>yMWuwdFyzo43U`o;~Lf)n%goJLgocpvKuyKvT^9nF|#S61O0F9MmP%~~HnW@Rw?e8-7&aS-P$ zD{Z-lqYg#yMW4xN5L*pTrAbGEONFC_Zm0a@|J^9N{Hyf7bI-IGf*@&p-mn}u-L{X- zXLFA<4otH?o}2N1{C*p0x6aN7q%X(~l}U^npSq}FVs6+_oiIGSo)^05XN7m=A7~R? zcdD$jKj+oGX&$Wo{WaD7j7T}DK=D1DFow)`#4AXRPMmKp8r&XD~=kFa>^&K)s`0&rlLKSHtLIWhL5o86Q2Ag`e#8VAMmbQ&hxSNt( z{01KrI<}=Kon4lc9!4)8hbB3O1jk~d{!K0`dY79)<8IaaiW)psCKpqFoE%m<`2*v9 zhE1~%c;4u<$EMSQ|+Q1zHBq_Ir7e`8^|@C=EEm!)QlTXKw#C$Dd6>FG&c|zWQs=B7pcvR=|Z@ipao0!tcCNz+7*t{fVnr+HJKSPc=#wxipCi#T^q>LkI7@D^+&M7sSL((D*XQr%C+BM^co=O+3n+bT8Ag>L7C zI@u)46EEv_otCARpt18-0U4%TJ^ivhlJy(`VV64;VWOb;A2t(cCM&wufd+OrZet^9DD^?aPza@3)vCD$SJi5W ziD%oyh@koPd7)Bvk+XO5^)%hLb&jN&sxi@of8I0ZJv@NAa{SjKlj*!)Z_c)15(4*c zs@I6s?k$I%9_y`4j|K^oxX^Ww6?CmryWCB#PM#@$27U-6-d#zj9=XUyJteZKvK%Pf#9o=Ip)P*p^v~S9F#Ax=SZTQ2HqKgZ z-kvPgX}jE$$Q>acj`R;QMHsvDQr~-dol^U#E-4V9r_no7R(!I9D)%NDvpcj@cVrx@ z)1UZQY&h{JG%s^=2r5Iepn1*=68e1Q-1iq4s>3sRe2Q@b;&YW#++qJonSlsHs65SU zgBS(ZSBcigmK-0=)gfZc#Sd5Sul;J>&i33i*li}|V^*vHmn40b++vz$a&6ozUO4mE zIAM!HrucBV!oXT>XK*sOD$x}A*`)M;2ir^C;ma#?l!q>HInUOQgPj#|+O?5gyHaUF zx^fYhsSi&zrCfk7PV%?girZeil^jIob|QwS;%~cG!?nLS^;;myDj2 zQCc7h9NYvui47Qkil?lIBhS`09*L4qU@KW_Eq!dAnG+M256<7(#aAJ4SA^C`SCYwOC<6i5rz^evZRff_x|-jNF8gfpK9 zO;2g^>`)2GC#N2qzR}j;Yw?_H5^FgR(df+%y-Jvn-A^pNQ9ePmGk2f;FJ+G@f?j5+ z-ZJe(|FPQnw~Q{-C|S0UbZP9H4gr(4#>ShI|IGrVDjuN?PmY?5l$cFvvMo0%GekSl zikJ5d{rNGNcJIA+C%u8tS9EVV`7Pw1yI)Dg!op!Tzc<)#D`|0X~b%n7HAlF{8;nCZ^~xU3sPbQfAI(IiIruG=k$lG@C(u18P~+=<2oo zojwxs10Hr#V)8&JTk%M`x(V?imuvuf@NM_Zod2X)L+9|;{hi|$CDe%D^7hpE^7zjB zG(f9YGOyB7^514meo%zmw+vv0hSMp!p9CC}F|@%go6U01Fm;I7Wy~Gl9Uqy^R$v%> z6Bq>G!iJt&$b34clfPr8&)+5a0kn0|nG&$!f(&A61uUk^h|8^&o0qMPX%iY%+iUpY zqKBL7q>4rwBc4H|0OVxnA+UJ5YMVEB2Srko@LrR5W;~n5DTS(3!5CYiIUnHwl;Z{0 z!*NLRlP6F5QZ#Q!*%7hnzMQOe_a$=_YwY(YF!}6G7OSdJ0x}R#W-Klzh9e^*`QuG! z8IDjSt-e@-pg!jlTF^?ct{+b_l$p-v@LqJWR9Nn$x4snB9)WGxkG#3QUc==oxym>P z8+YHx`Ho`{n1&k*HJ6t2c8GvfV7S;VZeCfIuh$&{#lqn7U>>kXX0d5Nrv>E3$<=Cv zYAv*;h7(AqAyBBL-#K8poVT;$0|Nt>fD*v=O7o>WV${g0n!}PS#kI`nj?izFF}H_K zR#1^wkHtH78HLgjC$Pg@^oEixkTnML5CbaX8oBnGad!yH&WeiKK4JdwnPSgC>h5orB~4W}rjrKOzQ+%P)!>9c22 z(8)3*DWG{Onh{h331NAEKP)v>$M1N0dV09l&IDQz4JfB-(^(S$XjiGzUTLg*66>~4 z`+n6Syu$_=mpfQ?O97yN=jsciqDNPaLBNHG897V4 z-jS1&6Yh(-c`x9(Dt3Ta|H{?%R$&(?{I&;kT!1x#Q>(M5_V@R%sjYni6OX|Z2ko4P zktH0!0Hc7ahjdc<=DL#NMA&TY={DR?(LvP%0fH(woK!{HeR$u$uel8t&U_HrIc)Ea z&SRncV}aYJNlMe*y}vEcv^mAwe;19Ml5!N>bpI}3!0dpOE93b91|`q{qN33Y(Rgby?R0Z z&jJBKxMg};{d8t}IuSMo0O(pc6k^`MfB^AY)irl__wA`tGQcjfuXaXsc6Un@KnXak ze#FPC>LFoO+HCaU0g<4jyu3i(4eVGsgBvYQamUfdQKH5=y3OCch`GNt9?^`94qhFF{tMxtpbZV>!yBsO0OqbUr<2HVZA`d=5>AXWf>eJ$yKW2FrIq!aaMlPw)-5F0=1?~%{%Uh48MB; z?I+{GNiQ@_hMN*8Q?%=qhrVBNfRwm7{Sf`K(fQ{;m?C+NBkXE7eoD2K@|_ec=dc-C zTkAsbhrs4w;NeLCE)eK+Io69!>qTimtNC@Y9KwP19@t_NWk;K%^!uR z$8L~M9FU}H^^Q~b#CG~`dsm)`li@`RT@dNIonp%Rf#z<0y zjcdnyMa5BtU1f4usB!`}rki8M3l$J69I-lA}TUAvR z@U)?RelOsNxb43jue9Uh;mK=h^?{rSWCSI@+2Y)=rKKv*HNc zaD0>&)+nUe06p*7!B#+{G6sPOH zhSYC6)cw)^tE;Pt+zzlo51>MobXeBa)&jnJPCmpT`cmPP_>Jdk7gbH^b--7%XgAqD$4`c37d zy8#4}pGZ;Ra=HN&Le(;{buBHe9y;s!x^uotO?fvb{=;AV-#$m6lJ-P{=Hj6%McTz8 zPQ_&_YgL3&l<~IK8n!?~oHI2;d43$ANBSL$dsVd`(HKjn=`(SfwCJh~k)p4BNxFkf zKtOP@H{A+$D=;jqy}v(9j=#3LvpyssfRJQGuZ(Prgpbc1-X(mD=2D<4ik+Uwbh=Gj zJTeGj_{*XE&n7paU9&F0bt9ePw^sc^*6@j@eFvaH#=^u%wAl(TA zJL`p&W(Mo_T<<5w#vKV7xO&4SPq5>V8QC~m`sUP5 zn-l$*j5ov*lH%`*bCKZioHf(tcaKR$+-YNEd*QwcDO&Kk%%dp7fZz@{eYUz9dU%!&oKfZPWJue!teqD+G#7Q z0OLP$vGqd96BJowiJBNe*@+J_wW-8g1Y35lbj2FbUn=u_)pnF;NY;_|T!`^;DwlP% zk2GR88y1h`J~gA_$6Fhr;vAHHA41LDc`m=Xy_DD8LtG37+eO@8nS+VKSxF4?fZ5Sy z1UG4ZW_9OVb|TH*bQVvhp;IQAYq&vlx|s{SYd@C+{AA@Re|z#b;2J@=?kzT_feE+M zwP?9F*w`xj?7VecdS7zyhqI}E(WoeDDV@mCQeW|?GnO@YyPTFsVUBry7b=jYFf_s} zfecGzKbm0ZHdY5%?q=2yMu%%?HzMrCDoU#WF>TO^yDwdh$fSet`7yt zlRH$Jw+pm9TSE;jt}X25v6q*)Vv+fQtHZHQlr#>VZ>gz+K*gNYiCOU;2C}KGiLeXq zPfnZfZEYgj0mpyxcUKJn{y75~O}*S$&sz7K`gX?2!SL3fMLFO6%dd#Y$S141mmQv+ zZ5^N;zmrhfy48(2;~+r>R^w9a&Cka-{pUHum#VJj~ZsZujRm zE=DVU#Q-fKoLVwRwt0d06i#i}LyEs@jYnSF5)eq;&c{{NG&B~{0!15RQd0WCLnJ$> z2S93_mdvAuG&H3206<6tJsEq-nf*PF^ZgGE6vknwSCcU9V17=aYFJh2e> z>hP?su9W(L=YUQB$>oYr*i5B^$o(IAYTk>i})nz*ejs> zCoYu0@2p&zf-LoqhD_pqhQ8?e$VU_V`q?ud=1Ii@O!_prO=;8DCUQAwB+1@EiKI8} z-;6@Z;GPNdeT;})<-@%b(Y$`sG-#2mHdG(Z@Qst1q_bPjHSApTOGp{Bk*{@c|An0UqG{Q4!Y zZaVRW7N=cG;4i~>K1Dy`6$7C@T>IP{dP7@|h9+y}HrLwm#rw)GL`?GmCV7KKvTThD72+^I>wCH~O3hLW9&m0C2f-gt-rgum^To51Y5NOpHF zmxs5H9BcQsld*t#kY|{m=D6?MR(gFB%&HnK9=iLHXOIFHFMi$~7S9*5aauA19e+Ne z_KHz7@b<^6>|5+QGl(dIg&i)8Mef&_Ub-~ou`RPk$8ZVTI#POConkVY{}o>&acN<= zNF`gOG081@MIURRe|;b_mq#yNZn!5MS;aVv)d(n7T+wJ91+CfJjLgT3rRBE2B*<`N z+X#mwk?QLBThb_1%#o#=k^$oq_$~b?E;wYE{C==ijv_iKM&=oY@EqTs%Sroy{nk!k znD)3y`SIRCn{IO1_Jb*6YT}w-P@dZy-zPdcf~ECYOoqj5UPLX4u6N8^uR**Ps=K|8 zl}yhwC!2Ag-*#ME7)E*KlfU@tHGkBffyF__9f4FN+--VQh-gY+AZoTEqV;}R&D*iy z;ER4f2h3P!+)C>WiLP}F4WrZ#^_eOKoXNNW5~FV~ZT6 zc-Qo!GN}}>hD#GKM#EcIzkju}D$dMpYt65eLI_rF2Pg)D%ziL72Tt%0+esL~WwSWP z^^298H#Q;H{Fj$huhaAgx_Mrcd^-66pvqC5JzdB~q__ zy#4oG75{}gL-bWc3FaOHa)JVMEhJg@lOU*!;WB&y-c6+8 zVaajjacFFt`jg+gdS~YS=Llz?q9xlF_1VBj;RbSp0gM(fo5fa4L_~zgr2iaDcX5YG zj)$<~&cn3xy|pEXyX1%sE~2#qh0@yy(7N zspa2r#Rp96#g?g(CvX!RVWp)d>k5!i5P#K0TD2`;ENJf_ekW$**Q|JZQhSXkCz*J+n6Io8~VmN%!qvn@!X^7QtRb^#+)+6!bTikW}y7! zN(uH(C(hT;8mXg+O{y5v+K|0PG$3$Af-3I36_Qs31I0^zI68kiI}vzzc$yv`T=(|( zr@_eE#6+FDj;NRww@bCHDP&ft;Ldi(rB?Ip0Rc`uHqfHqYc>BK59@EQdI8XWj}~B# z<#WLF?$uE%DqC@97(pi(bV+0}2}j9%6U)SI+I39CVK&k8vRJ1d!fM@sb}nf6m6=BQ zTEe?Yusgc!d`MUx6SMNWM%L%A^LRdlQp`o0!@2l_qi7CfA3lWP=s0_WnLlRdqc3n{ z5H`?F7z4$EPO}Qh3p9jP7SlqKlCPg3p!^0SjSg>gd%{HE2noz6pMXmFO*TJ=fDMg7t za=r6Nv$FxXCNQwl^Yx2;WsKdCkQg76m`I>!Y!wQicXQDVp5MDr!v?{|3cF2NZl{C7 zbN7tmV!4kW;qdUt6-V=xXh6pt2u9BU4`tN#gVgO}+JyIV&hC=0DJJy&**S7a^$77$ zYEa2>My8~_-1prND;07J09R0_DholybT1@HNo zVjYTG*mLa4*JX~D1O5MxtR3ZWAC?D7GE$&d7pm6TNV;{<1?T6MoBf9$w zoE7?Z0}Cw<9F(euCLcTW;Y)WOWEm((pp!J^>GJr>;>~=!P)`96vc1oYXTAgEJ*%@BTzMJZB;$@^ScIm|MY0xy3nh; z;BD;^e1Yie>|fYJOG*M`1q%O;^#Ng0Ny1)9+Am1Z@DnCO(*wyu!UGMwzXM0OX@8l+ zr8@z3cAVk5nWu_cVytw(yA#)#zJ3X~JHU`>Y%q(;g9TXuTWtbZw6%=~yIuYDo>)U; zW80lEYRA1PLEyUp7J!lxMqo_Fpw_zD zK}<|c8*t)u4L)whjR4CZm(7Yu)}g4w1T?n@P*I@&Gy$C8y45ZyVte!Tss(#sO1e<3 z^m|K7i=+Y69Q4w#o(T4*;r5`u0ZfZFT+En{LsrFzh?!(HyyU4y2m!}@6^D<2=93RI*0 zWW9HLwwj^1`GFf45^(YHPk`p}guHx7T|RT);;XCX_BqQ6VR z!|6$1HF8P)pzsuS4QZ+$yMjh7E+029C+@>1t99j87|5eA)3nTfUbcWyNcCDLa(GY5 zyu?}#$?@XYOeS)2KOm>TIM0m}m<8c40?F5hJC}#MQ#lHmq~F)1cOcuGfML}#FzP;0 zq}>Z_9oN8hqh4nC3OE6m!I7Zg*0@yx7O}e)P!eIzoWrJDdSDQmpo0;Bzy=EDLCeAT zdK1XNG@Z7<+(L;$!rup;{3I|u-1y<{nv;h|^~OWVWWHwyg^=?{G^JdIO8kAy0AP%; z>D0U=&jel?8?(QJq9RLKVG>{8`dSC*kY++KuxRsQALG8D-mjSx& zvEvsPd-zP>LkQSEYjrH1=m2)&DHv-9ti&^~kPt+HhbzEUlFPk0yZk4vjUFs%3wXXR zeT2Qs@xL38k5%6Zg2mR`BLp43`XqyOp6_l9gG+O!3gYn zCOt9KFefCC65{^+`3PKqPZ(KQ-vhDi6$Zr;7+-fe5Okmp7P7bHM6B-DYcpABs6E50 z0yJ^XueLa%M^)s9dhB7m4xU>ci)zeu~r~=Dj=5^tn9`dVr4D}{c z^2I*&T$h9|_DV=k2&zxV#TU`+HlF%bzm}SrYf8IL^AK12{5(zeF)H&`j?rWW#}`4o z%y|17w#RWJMfOxeh;+&oKM(sp#j@=?;2U7ObtKF^a#z3At?!x`s22Pz`DeGksn&?e|~m$1-u5sqoZWZ%u#@n zClC-2D1<`QD@@U05>Bf>^0TD?5|1GyE2t!0HE2s=v)>CIx0Yaj-6oDsy#-987o6D- z?i6aOYjbdLfI?jZ#+*@5vP|efYD55+Gnyl3&Oe7r$oU7zGBjc3MWCXn+*VnN#x%=) zdGTqkGNdhqXPATa_q0L8@-nkhBXM*l@Lb9~Dp76Uun5x;)^!! zbh#<+FfiD&)3Yf)U07I%%lFN`wig(EASM*NFO(#^orb^+*QeV%BGQ=^|nJE?EnveJ+ zDn_XI32+m{(`y<3WjHl8o&GVlrj*@u_avU7Z8$%S_ST7H1=7RTq{fS&$f9U#cam`2 z(Mh=A6eEss{&WfU6CG|GT5~CxWF`~(lC^5T1kHrf^9Uk0fkSbAUDkj&tNx(ZJiRz9 z8h@7Ht^`7RpL=gTvnS`L^d&rj%R%7{NF4=Z;4wM>{_*{>WGv;gf=_hYKnwya5Jm zBYGC#kM8GK1RAm*Fg^oe?AAG;s{CLj*93@GpgZa4wby(w- zB_)4GM#|=B*})6Le9i!|!;w2#|0jSJ5bm~ql+XJ-1_T?wHiYLTu4|uE*sb~=Hq$6w z4s~SS$ZL0Z1GNMm27IZ4TL5$fUhH(xcdZxc%4-8dc9BkFJ|3NFG&{X+6VgYZgFFG$ z&6TI7QEG30-cGz+zL>MZk%Ivn=n@~;&r(yC zj?70B7T!nvB$_W2dUm*2cnk}Z_5`UUdZC=~=f@z^7+s_n%W8X#(N2E-I?|*z-7_ES zA4k3_oy^Jcci?Z_*)F+(P^%Bw7T+J$Q=h51mQbC0*Eht3>FUi6vnm<_Wlv@t?K|f( z-v70=b7}`a2Ep*ebh30!R%;`S4vx2xhe^MW@ik&d4IzP?!X1`ERI$qW{)ht3@l#eC z+qdVE{rZJ8&xD0BMbp)w^OXxzLkTU+Z+tYk-YF_5n1b?B+dEmP-U=XJ*T6u>_&62@ z#{OR#r)GB6JIcbc8<9PBz-|w1)WFE(_2Zs#7H*}|W z*RSIX9v?F3db*dvXE$i6HR3BGAmDRY%T6p-pB3zYB#^|zRE>v=%LrVqu+>HcF$_ zoKYu}#3~3?u{+-xx5e1)nR)s8bqjFX766xz2O+QX4TNYTp+A5APXC!}NJd8+HX9RuG;Xv-o#lPjKE*+HQMZ*=rkRzrw2F+T zK@gM59uYw>rl6pF@EMBY)x97gUfw(Az{5?K6W--HyFr&>p2^z*zV^b2!6X6yck3H# z!v)r;jjOWsvOoE-a&Buk%5_sLX)tl|v^|>?=So_}Vx_hVZ*~w?WGR=n_PnCYA5Ith zO~ahiZwC2jS1&y1i^$Vx99~fL>~`msjy#XuU?+#Ks;Y93ZSvib5ra9GAFc;IfmfLU z^R;MsN6e)CDuFL>-Tq8Tv9Y&*FCahyJl?m61?tsYrJ&ai1q*%zx*{fEHKzOUfuL}4 z&W<2oQ%x-pOqw)q`UeDLjzhpl9~gnbg-~3kjBX|!gDi!}+i_LGJcCctnwgDyLM}cI z$~2#;sCxU_4tA8KZEd@_JP32(o7RiFJ39PV^zTbu$jQmwfEgJHm(dIOKE;iv^s=0@8O?L$G)ZD+q5KS92$ z_`HC0r3K$53yVnxXkHx6wU! z?|(*d^T&pl#~GL$g+80!TYDyHOpf(oVqioI6zykQ4s0x$${ip_C)?TC+I)31Jvkgn zSeH`yVrJA$x%hx#PGJ5 zi~@@xfc&LpWiW7GM=An_F)SSEc$^O216>(>97rUn`pGauX8b2G2%v9erE}QoA-uUD ztsN^V3R(&vXq-Q|P{m66BjL5c+>4(+Ej3;)nBSou!*gL{+uyCn8_B$>+lE#&gT5z zu2Iel=&~N@`zHSu^n^4539yVpO|9WgBeMNRx;>m@2kys@4`qvG? zY!YI?9Ev-_uOhg&UcPggk7W>SW> z&9(e28)3c>Co*gyGe|yn9Vh4DiFgpc-6pP(OUrG97%5hYHNb7hvwXeG_iU4q`uuo| z-8-iC7#1$6=xs)1r={_p33%jy_uU6Lsx>(Bj*h;<5EPKbULhf^ffkUHb55fpONqwi zdOiO5?96a5m9H;>=^2<+fYb4~HiETMASa8dt0yk_-1fIAXlV4nJ|zY?cO$?c14Gl* zJ20I4o=hzC?f>iPtOKHYzBZ0Um(ndFAsqtJN-13e0ty1sxil=W3IY-fBHi5$(y=ts z(jC&>o$stazwaOT4|w<9xie?ZJm)!|1zns`x^5U^VhBN+W(uKG;|&Hz#OJVM z)u{CU4n75t8H53qf#J!M)KS5C_=v)rH;rRsl}$Gk=5)`VVes=;3Nl^;R7k1$2s3aK zR5&d*NllP}!3@Xb$O@hwGkih^4eIEqb`tSoisR zVN+{c>*7R{cM~1CQfX}N?eB)Gqiu54e!cYKK3h7wtwDZdVXnOn_Php z!>~zm1%l9X84+>Qg{|N*qQC(KNQ2GbUED#or~-)>_`vp#$Mnj8Nbo-n$s-_))d*mW zZG5l?F=umT%k6kW>f^`comJ3I4XWKPpqo%ePR?+;3gU)06&e}}TnYqKRB&(ad%zKx z0e;3OC&AwgePrd$$jsz6>LQ%E7y=FO$So7NMDWSUk?fvL4-}iN>A0L)aEu3tgwZuh zAD}w~!Qs1I`%BW9nWii(CELUPeM-V#ZijQmN2-ji+kk$8Opf1x{^G}vKZEY|n}aCC zng*O)!0st9ZKS8C4`0+;*<)>Pb1cRsAT0vw4^TL95BwkA}#66_M?nSVML*-~Eb zT7NQGo~Ic;O9XlN97$ub%H?jLCa`Ol8CUd!!2x)ym^fJdr?lcxJvH@KRbtZ zSW;4wb;N_uV40Q5lnfI-dL;hl%{N`G-ndUmq8=ODh!Xoa?aI2kc%UNh@4{|tXB!HU z=XG+pbY=6kq4Q z?^d=pdd9^fpZILFnK39NC2KO)=_xf|exP9&_Uwvwn<_Hfk~ke>uASN6nXL%1uCH0x znfU2S-m9Kd*w}OAt1r2+u`FjZMRD&l$o+mqMgnIdB&RQ-7r=rluFNQRcF5 zfRr)-Ho(T*?kJ(Fbut#32*th4QG?LDDDI27VKW1I!`4(~k<=78z%4~+>gF6Xn1VP7 znsRw_;LfwIS)-hv>*|D&pe_JT+L+;4@MlakwdJl&dHVDzr`^&UB#lBNj~<|(fWrq! zdE@Eu2U3?#S-Ld5yEF>t?z%(DAF5%b!6k!V2SgaTN-tfW+(k>ZT(C>4Aa){*T$xig zR?;_nC1NsNQx)yvsaF|M#e*SyzF^3vL6S>jm*oD3tE~LA5GADe(HFGUo3-O3jQHkBR7id z3~iR*WYl=cIvOQ}y|jra@#oU77mwL*Hhl4dSGe-fctdw61G-JCmb&g6Og_zg9Ue|> z0F}6#EQg(MZD{ZqTO#KzGL}jB(N3a+U4U500Q;G+a6CBsQ3zrWNY9v!A(JeeeJyL7 z(~yeR*}>4^yiPYGr^pi&!U*E|Pf&X(90qN#g9(t*rb5ssp@>D44Pb`*vH| zdK$4Iq0Q(Nfs=u2$lfH=yARA{A_$KQ8`}#{m{Hj>s;Z(9H^)UNK(dVj`(Zp#&SolZ zS`(Hvitw=H2>Lo!zsG$DC@Jw`W~)iiDpE;qoF2T-LP21;)m!5Hvvss7KEM($moOq- zkF~XBb%)B3Ber9t&%5WU+s(+@DUp=yStol>YS`-*dki1b!hA36=4-T#2&1KpKc6eVuhj%!cHIZR|97+DJk#_3W}TS5U+NHegO>*Q~@ zBh&GgN?`=h-9v-2gs-Z38WQ?)bQCWw{ zFHbcH*$;2yZS6g@-OEg`i%u=QJ5%|yUDhz(YUUSv52vj|YJF~Q?vq+h0;LXIx8-$L zGnW@GW3IuVEcs13BBzw>G>EQ2cjlW|#H;B}`BYB@$rKbDF*Na-+K1D<37_#z-8RvLvCdvzJigtrEiu5TAv96_w%C*>#93DO_B*W zy`MwnZpMow4?^ zlUlX$@t6UDVWL}nlDj*Q_Kw?&Ocs#$8v_J~n-wT7j#k&^Rb5W^9H)%Dh5UJsi@_E1 zwDpsnC@q?L1}eW2g;(=5Cl~L^R_BrSA$Cv@p=mkiM@dF%w_L_d;~zl*k&C+z#qFf8 zaEzJ=qlkWJhI@O%pQfZ5edtl7ZKRVdV&!GQ0C)Ns`X*r&xumPu;%5rTmaKb|Rc_v@ ztA~2#D4)W&i}IAzG;*8!n!G+k<1uzt6r&QUU)21(O{i_#R^fRF7mATFlc5LY$@{a5 z%`Hl&>2i3^lphLEUU(c~W~Ci#e&bRl*WWem3$wp`I4%_#OvuL3NcVL+%X5U|a`DfW z>d6BcY{|e{cixC^pYOOCb&~BzGbyai59ajQBfXQ;PMAJ-m1u;7J+?@nchMAN2K)>c zUQpB!`*nSmWSFh44el9ZT|-2S_C*g7OWX==l%+4LGrzhoO_`W~XqHTFlhtH2`i)Sn~ z{HROa2v|@-&x2V=RvMnn`u^8*ABq>^1Bq{QS*l%lV;FZlREmTJ=%{Hx!)G{yVSm7aFJ)+cZU;Zv}@6mTw`b0#gON#R^ zr8S}mE;&MN83NbpNn8z_Xei^CtXdQDIT7*pB_sCl`VxOVX3V><#zTM8)Hi+ka#eb@ zc=(gGnU@kH8ko2c+lo&sb)IK_FDjdDXm^ZhXJ>w!^R{NS{hlcbDXfdLxi6!+fK3`> z8q$}=m^_-jzLJL+oQ(-&tjdx&b?Zm2DSg{aW7(O2*C<5G=6#GyYrZ~PQ?WtKYraGw zJCLUF^c|v*VP-a&{RxzKA^Qk~2*Uqa|4HhtEkbZJup+BYzSpO9bF4Aru)4OrG0l{7D4WHC!yGZ1vweqH zD;eT3V|dqwU+dDD<@1dV{|s_Cae+oREQ)gF*AAg8^tbegyT#iC^riKaPIPpL@o+kR z&5>=#6~in!@6wlNDWuPgf?`ZRd=NT$!mymJs}*f?e>s<1wXAP(mD)7|}r?5J4$Xog2hCci~rnbg-KqT5cU_3fIJ{$cxJ}>~qCf>LoQ!?kegVS;?*z7T))% zhR~OzfD+3v>?xW$j8zM^BTo#2dJ=>sZ8U*Z=6m6Ie>m2}4ur3ISB5kOAN=WF92SeA zsX@fk2hI4+?sV@OJRSm3MLJ-EgZt|JJxGN;-HP~6;JJ{>ejf4ky%-5CkwIocKu=gH|Ho3qLNLPxm$>Z*;DnV0BjU0AZ{%65U;?flfjmOT== z?Fs4jW~j&os`tRQNM>}rDAc1gLu~~E5%tCXGCZ~2Q{GeQ#?8bq=CB_NvX)yt>y#VK z>0~qec#!s?j=taem;>flGv1K0(}j=CiXRM6eit1o^HE*W&>Km;(;6q`6d#~&O{Yu? z)4^wV+NmkUR2N|6pj^3ScwVRGUhm%os(?D|;gq&{KXAEfI-b@a7#Mz zosZ2@w^A#;)+h9evFO^yE&9OCSei@hst|EBM>5&&EDx?B30B*osSjt!aM{Q=BA>i*yK4=~$k!sPS7W;3bX z63Ch_U;LB1t$jBBC(G(U_ynM4(9po3_ar@6Rm}qS)-Ai%Fs|1Km!`MqC8xNnVc#ML z`AwOO+l{w^XL`3z3vE;}U2lVt0{gz)y8;rw(gl@gy^xcrAq$ zkeW=w4^)Ym8pX!Rpo~~xiXih@kit?3@mOvZ-C9~%WS%OVAiK<^(?Zje$$qMv@2nfj ztSW0t_&t$~GtoDfnM+RD`ZkdrMT(6{<{#P|Z773AI_(&KhmO#h*(xG(t@U0|pbMC} zOFk{1NQ}AjH>0Jekj}aR>u8P z=$1g4!lQcwtR>GnI-m6zd^*K&TNYBZdfG^LU#zk{s>KSn3-!TICEA`S^V8II&5)X! zF4n(C=DR>!Sp`%)oKb%OE(2IZ&;%F=8pPtv_0S>q7k=0+ zJ>&7&(QvorMX1u^^m1AHaymH^H-vG@(G6=x=(uT&_oZg$X!eAwF+ocUIZOuync20n z0praBU=Oky;G=u;WW3Y}3&8)}mi_(x0YEtnz!v$d3y^(upy#oy%-;JLP>H)h86NyT z1!!{u`dGBFzouKg^z~26ZhoD*E!SUNE-nv;&T#2q6UJ1jfqc@Q`y77}y1DC9!eLGE zfZi1-Sq5Q~e_1lI&wvGBY3Y-6FeOGK5bTisU)om3E9O2vK0OISQ9y^$US-$*`3)4o zHX{HB${)yf_W_0zxITaZCD$<#V5)jk|QbvbBP z1fG8MVqwt0!3fjGYrj6Lgu_W_IU)l!NO9WCDdB<&i^pOIr(Unf{W^4aeaIDk2Ul0Y z{BO6mX(s410NhirIGy7I8_+iQn4LWsAj?pSEho5v!i0g2p6yr&n2NxCHO8U?h_!`< zBLpsJIOMHh^xqq9}o0L{u40~kp!T0133)!C2;5fmCd5~w*5jaZv-iJ>jJQ0 zjuNfpCi&c|3P5Klsc3yE>}hWfE_tXnZs$&=U0_+mL|%E?<0Q)*5Hr3DsXyRFL$ow? zg?^!>i=9SBZu9|pP||X7T}LERaehQeNl5{d!Vetp{s4s6YBeyc-GA_)1o$RU0FGAy zSa%%fW}&XGp>c6?W@ard7~~rqe0;>9tO)!zvBO#Tsg7_A7b@`>?Kmp~czQqoTP|*AO7THZ_nu#o~#K)UQ zIByL5gQ+RaNRLM&8V?#K?jdR6zIcd+#r5*eX5bWpx2x#Ec>NyoW*`Tl^m&=F`0nd- z$ebPX$Qa`_RN#U$b?U_^)jN6{97%87R;f^}?|nzK{TmTBFAhYAa_y+Mgsw9u|Mttr zc8-jck8&p?+w}mLZ6U@aQ6G4_vft*q_0#ZKl4dC-tpF=5=sMzdSW})U$whtE_Y`a795<%Yj&pbZ~-tV~P0)xDRIt zgciu$08I$|4tSK5g>#J@A8Nh=3j_cQ9w*Kz!$4UmUdS0VNVz?)Mh=O6`QgX6A!u3; z%kRTA3Rq5^4wi3p!?a+wyyozlFT|}g=KV2NOT@a%oqx)Xy7(!u z@{Qfe02yFcMh=TUsghJ5J4kw8eo3!+aZZtOvS1M@L6d9M%VYfF%u7p;T=s zz>R|K7ioU|09ek(Ku|&gA!iTCH#r0awJXV0)Gi3cNrU~o`SHGrwH{F2N@o-fN7M?r za9Pc&e6vPDc{q>!j)1+Sch0s%AiALjDgWf%#Jl;Xowt(nOW`GvSH8iHW9# zCrTqQkDUYeFU9sQI97wsrmRj6X#n^JyTi;B9(ZH1T$aQFQkq)Ocd)ZRh7w5~gFUh3 zXd5(Dgbo4x|dABru}m*^I~hVoCQ?G&Jki9_ zTU_kUx-CT;e3z$gdy_g41uQf(_D|xJ^7YSm16@}AGe}uBX%d+xE3Zq0z9|TFn)F`> z4X#}nx*OjRd5&Ka^#@;w#aqV0IHFPjPY|FCtUhPN@WRM>lgj-x>_mA~cE>FUNPg(V zx7hf>_>>)*e+P79o$H_4F`Pi-ts5?&!|tW~R`0h(Vuo-1bv7jau|4<}zU=v}Z%z2X z@?D9nMveuXf0wlB;?7)5yMLGhtHjC z4GRCbBdKssRnq^>OKVNv(S16jI5FV0J@Pr>ymz69l&cR7SzvA#< zK^ZaSg~+HFGKT2%0PP$r6`4o4*%@s zoO?a36iBJ-PUb=4Rp#Ha55*=;F~uR;z>KtZNeV8!Bg|vhFk1rh+;{f#I>sTcSZEfj z#Owb7VEEdH$Ab_`*I&a{@sP31t;5$xq;ctn=gh6!fZZgEoJo9uykY9(nQNOs-Q}7I zDN9k2_}ljyzl6lDV_tob=B^n_C*J)3t1*q|v4B9aeAtU6;7qTvJD!g=`}FrFwW!uD zdj?SkYJl>z;#9EBeB%VuY)lOy$7`B;L#(le;0oE6%`oB$(Vt+~mT6I@Q^7J0(K0 z?W$cz?WUme5F&@n4v};WI5)TIL0?*us;X}594uNwT|Htax(v>8>vo{?qp-Ei;PMgj zdaBxr%t_Yoe-#&=9=6tVtWyQnyLd?_tLgt?p9Xvdrm7BRk2qcchI_7v z-WnCw0p{|ISyCy76B-5X^~Yp%DY;Izu9ZbzEc65H<=$t3%1nechOTWBbtMM^ZfD2( zD|=d%88DLW8 zA06rymlqrUS-c&X%9qb5T!KgR8>T-0lVFx)@F~5Hjf<3DSL*K&l1>i4>i-^2-Jz#Z z-$>Gb8v@E-4jl}~P|Ap!A4;B3G($Q=->)+!jc?j|nG2Yf^=_e9gqWhPZoGWNPBn(= z>gsj32+bE!)ZJ12w_XJq*H(cNv;TWL({~6lAK1v>d}9}#i8(zcaEnX2Bh0;KMvXX? z(y+V@_cn1RXOe}K$#%<~jm7dm%V9EJ=MkH?+{|>o%Cn*=6EVKGD{}GRW~Zr=m-ych z?BD}^b{2MoWyxw8gIJIW=)yb-7USO_%EWc^HA375e&9k-Fv$+Q^~pGQ-y5<3C5^JB zm|f(4Bh;|7XWrm{@l})BJxMeHZSKScDNTVdy&hDF?j_yBCa1w*#yT`x1)~5d} zp#V${U_r+RFJ=4X&&Au6|SOs>(uOlDXi^6C%fIhvU1u zo?aWlij3{n39+~bi^nos!Dt7 zzNa9(82?%927u6Ep@!8hjhmW{2kp|r&0Abp+MqtI-kZSv6@P)f9C&y^e>x6TJCy}+ zO5aDDo0Wk8T0lbWqwcNcp?#2JEXK^~TUn<$U$ve~)LqP(*p}O`WbqEorD~cj$J-nQF0-nlgh*05nw^4L*QUT#ZJ%SucfEZ z(mClPrF306TKSu#h~coySt(5OM@yigE?t#G^p_{~Lh9KpXHMOZaNBnmVnSgn{!qQa zsXFXjMsgT<6Ucc$vI|Qa-Pic{r8$yNTY=LjWj8!T8KGRaZgvl-;;)Z_qcjK)clr+} z2x=oby{Qcy&OS*9yU#juAFv-z_`<$}Pn=SV0tbHl`b99u-OINPky9t@b&ui7-UMpE z-xL-wRh;M$Pop#u(Ae<&r^KQ+G&PsU146p$>TMhK-Dd`e;$DId%SxxcEwhuIF9#}M zwT66UZmY08N35mmb-m%(Px*t{F1M?SFTr6!sE_0U!FYpH!n@~fO5(D?wZ^0 zk@Mljk`MAARv-v5%X+tW&3Yhb=W5UzDCt0L`uWXN5hz}0Sn71`+oQ#ZE(s)(3D6j3 z+{B9gFO<0UWpo_Ors@6c5`6&wFWA)&nDYXv6|p4|W^I0<`zJJs{#R|_oz(inaLvfloB0rAVuh>N zP$#-BQRB3wo~NsCCW^eJ4<>v(hG(pa0r5klk2wDexV1omO1i$eBes3(3+kl@Fo036 zB%9=2U#t>vA$z<~p_DdIyxPMD(p>*c*%qGA!|3r{u5jt{ zQ#{c~_s^BE_(18rl_I?Bz=l^6I%4zf|F&vKuOZA9x1(#=YqcA;>doyyg21;Vh7y?K*jOZHRP(U~14; z_23ArrZR#KLH}=tPjB~SBpK}&+1OuQz4CSR_zYr0%NTF+>;;${6ShlGPq7By9|s0C z4qJ+nzaKZ>yU;h&h5Gjiy#m7GD$k=AKZ>K$FfMxevoO-AT>}8hCErv*Tmx9 zcRDeWtb|ODExvMpf3+#1S)fw3KHl$6aEt*?C^5fRRg7_yeCi|ASZ+|+WdD~qqeBuZ zWV;K85Qod)9wI%ycs8AK8;*B>y#Ow(I`G&h@!$&q#(O0hw=>e~?&H0-5f^lz`z`df zPdDYoR87U8jY_4gBRvWCBN_QXdfIJl3^Nm;u+HyN_k5n$$KK_O>`TPiom1A(YK|n> z)T&>V8$4v^0;l{$axOfM*GU=|Y}OS2W}2jxc7g9U7oybsH0r6Ye}+kxCo;`Iy^q)O z>&?V`wK+U?C})6DcD$_w%kPc65L`B`d7wQexbViM_H3|e0?%eOxN02w(cE%!VShDh z$&P;Y5m<8RMp?GcHt&KxC~Y(wQevM~Yh&YvhMTIiN?SEv%|EG&Jedd_>47NaubqZG zN5lxOkqJ`?{dCzv{WmYan!a-w^wikZYENnX0G^wR;YuHDwW_CMP0vi+lU10!8+mYs9=SSeY_;I@x8spb%Dy*ly62gQN_v$ zAc5h^-iq-X?AkQWgC)xkwj!E+ICe420g0+hw^=O20@ zpvrmMsQIJWGWD^NcGAKCvmD>x5?>{k#iSXbZ?h~3p6&>TToyc?75f*n|6lM^X+Kk= zc}SG-!yfg<1a`csdnBg|!9~FxRdldDX&L%+5s&hkf@F)83ORrJx*l5C$DvMXn!O!4 zd?0KN6v#EUr;+`W4dNt81(Zj1pHcDX)35YeuYVQ02;`D9?Xd z49GG>6Q*+Cvpvd83lsyX`&kWY#j1Y`+pB+ZV}LJQJrdYblwO%ppVJG3hm+h>ey{tj zqMa_UI!7Q=mL~|VP+aD4wkQS#&q6+9_-a`0-+!gOZvw}r`Wx@R;y3U8H|F9WvE%t2 i{wDI^A8*-9SVxC9J~OqQDfos+6d5T+$wKjuUjGNA?0lR6 literal 0 HcmV?d00001 diff --git a/graphs/reduction.svg b/graphs/reduction.svg new file mode 100644 index 0000000..fcb47ca --- /dev/null +++ b/graphs/reduction.svg @@ -0,0 +1,93 @@ + + + + + + +reduction_dup + +(lambda x. x x) y reduction graph + + +n0 + +(lambda x. x x) y + + + +n1 + +(x x)[x/y] + + + +n0->n1 + + +B + + + +n2 + +(y x)[x/y] + + + +n1->n2 + + +R + + + +n2b + +(x y)[x/y] + + + +n1->n2b + + +R + + + +n3 + +(y y)[x/y] + + + +n2->n3 + + +R + + + +n2b->n3 + + +R + + + +nf + + +y y (normal form) + + + +n3->nf + + +Gc + + + diff --git a/graphs/rules.dot b/graphs/rules.dot new file mode 100644 index 0000000..c0054d6 --- /dev/null +++ b/graphs/rules.dot @@ -0,0 +1,19 @@ +digraph lambda_sub_cfg { + rankdir=TB; + bgcolor="white"; + node [fontname=Inter, fontsize=10]; + edge [fontname=Inter, fontsize=9, color="#333333"]; + start [label="term", shape=oval, style=filled, fillcolor="#f3f3f3", color="#333333"]; + beta [label="(lambda x. t) u", shape=box, style="rounded,filled", fillcolor="#f5f5f5", color="#333333", fontcolor="#333333"]; + es [label="t[x/u]", shape=box, style="rounded,filled", fillcolor="#f5f5f5", color="#333333", fontcolor="#333333"]; + pure [label="pure term", shape=oval, style=filled, fillcolor="#f3f3f3", color="#333333"]; + nf [label="normal form", shape=doublecircle, style=filled, fillcolor="#d9ead3", color="#38761d"]; + start -> beta [label="App(Lam,_)"]; + start -> es [label="ESub"]; + start -> pure [label="BVar/FVar/Lam"]; + beta -> es [label="B", color="#990000"]; + es -> es [label="R (one occurrence)", color="#674ea7"]; + es -> pure [label="Gc (x not in fv)", color="#38761d"]; + pure -> pure [label="B under context", color="#990000"]; + es -> nf [label="R/Gc normalisation", color="#674ea7"]; +} diff --git a/graphs/rules.png b/graphs/rules.png new file mode 100644 index 0000000000000000000000000000000000000000..cb48afa22530eade491e8347b2ab044cc18ce34a GIT binary patch literal 44541 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

!~qM@O@tJ>%_uXw`swO-xE!f9cYt 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 yFG^g;5(GgIY7LRJ1VIplT0 + + + + + +lambda_sub_cfg + + + +start + +term + + + +beta + +(lambda x. t) u + + + +start->beta + + +App(Lam,_) + + + +es + +t[x/u] + + + +start->es + + +ESub + + + +pure + +pure term + + + +start->pure + + +BVar/FVar/Lam + + + +beta->es + + +B + + + +es->es + + +R (one occurrence) + + + +es->pure + + +Gc (x not in fv) + + + +nf + + +normal form + + + +es->nf + + +R/Gc normalisation + + + +pure->pure + + +B under context + + + diff --git a/graphs/theorems.json b/graphs/theorems.json new file mode 100644 index 0000000..f36a280 --- /dev/null +++ b/graphs/theorems.json @@ -0,0 +1,272 @@ +{ + "paper": { + "title": "Milner's Lambda-Calculus with Partial Substitutions", + "authors": ["Delia Kesner", "Shane Ó Conchúir"], + "url": "https://arxiv.org/abs/2312.13270", + "html": "https://arxiv.org/html/2312.13270v1" + }, + "milestones": ["M0", "M1", "M2", "M3", "M4", "M5", "M6"], + "current": "M0", + "nodes": [ + { + "id": "exec_step", + "label": "exec_step", + "kind": "infra", + "status": "proved", + "milestone": "M0", + "section": "", + "file": "theory/ExecReducer.v", + "depends": [] + }, + { + "id": "exec_examples", + "label": "exec_examples", + "kind": "infra", + "status": "proved", + "milestone": "M0", + "section": "", + "file": "theory/ExecReducer.v", + "depends": ["exec_step"] + }, + { + "id": "m1_syntax", + "label": "M1 syntax/binding", + "kind": "infra", + "status": "planned", + "milestone": "M1", + "section": "2", + "file": "", + "depends": ["exec_examples"] + }, + { + "id": "m1_open_close", + "label": "open/close laws", + "kind": "infra", + "status": "planned", + "milestone": "M1", + "section": "2", + "file": "", + "depends": ["m1_syntax"] + }, + { + "id": "m1_red1", + "label": "red1 (B, Gc, R)", + "kind": "infra", + "status": "planned", + "milestone": "M1", + "section": "2", + "file": "", + "depends": ["m1_syntax", "m1_open_close"] + }, + { + "id": "lemma_2_1_fv_preserved", + "label": "Lemma 2.1 fv preserved", + "kind": "paper", + "status": "planned", + "milestone": "M2", + "section": "2", + "file": "", + "depends": ["m1_red1"] + }, + { + "id": "lemma_2_2_full_comp", + "label": "Lemma 2.2 full composition", + "kind": "paper", + "status": "planned", + "milestone": "M2", + "section": "2", + "file": "", + "depends": ["m1_red1"] + }, + { + "id": "lemma_2_3_beta_sim", + "label": "Lemma 2.3 β-simulation", + "kind": "paper", + "status": "planned", + "milestone": "M2", + "section": "2", + "file": "", + "depends": ["m1_red1", "lemma_2_2_full_comp"] + }, + { + "id": "m3_measure", + "label": "sub measure", + "kind": "infra", + "status": "planned", + "milestone": "M3", + "section": "A", + "file": "", + "depends": ["m1_red1"] + }, + { + "id": "m3_termination", + "label": "{R,Gc} termination", + "kind": "paper", + "status": "planned", + "milestone": "M3", + "section": "3.1", + "file": "", + "depends": ["m3_measure"] + }, + { + "id": "m3_local_confluence", + "label": "{R,Gc} local confluence", + "kind": "paper", + "status": "planned", + "milestone": "M3", + "section": "3.1", + "file": "", + "depends": ["m3_termination", "m1_red1"] + }, + { + "id": "lemma_3_2_sub_nf_unique", + "label": "Lemma 3.2 sub NF unique", + "kind": "paper", + "status": "planned", + "milestone": "M3", + "section": "3.1", + "file": "", + "depends": ["m3_local_confluence"] + }, + { + "id": "m4_par", + "label": "parallel reduction par", + "kind": "infra", + "status": "planned", + "milestone": "M4", + "section": "3.2", + "file": "", + "depends": ["m1_red1", "lemma_3_2_sub_nf_unique"] + }, + { + "id": "m4_par_diamond", + "label": "par diamond", + "kind": "paper", + "status": "planned", + "milestone": "M4", + "section": "3.2", + "file": "", + "depends": ["m4_par"] + }, + { + "id": "theorem_confluence_terms", + "label": "Confluence on terms", + "kind": "paper", + "status": "planned", + "milestone": "M4", + "section": "3.2", + "file": "", + "depends": ["m4_par_diamond", "lemma_2_3_beta_sim"] + }, + { + "id": "m5_mvar", + "label": "XΔ metaterms", + "kind": "infra", + "status": "planned", + "milestone": "M5", + "section": "3.3", + "file": "", + "depends": ["m1_syntax"] + }, + { + "id": "m5_rx", + "label": "RX rule", + "kind": "paper", + "status": "planned", + "milestone": "M5", + "section": "3.3", + "file": "", + "depends": ["m5_mvar", "m1_red1"] + }, + { + "id": "m5_eq_C", + "label": "=C setoid", + "kind": "paper", + "status": "planned", + "milestone": "M5", + "section": "3.3", + "file": "", + "depends": ["m5_mvar"] + }, + { + "id": "m5_coherence", + "label": "RX + =C coherence", + "kind": "paper", + "status": "planned", + "milestone": "M5", + "section": "3.3", + "file": "", + "depends": ["m5_rx", "m5_eq_C", "lemma_3_2_sub_nf_unique"] + }, + { + "id": "theorem_confluence_metaterms", + "label": "Confluence on metaterms", + "kind": "paper", + "status": "planned", + "milestone": "M5", + "section": "3.3", + "file": "", + "depends": ["m5_coherence", "m4_par_diamond"] + }, + { + "id": "m6_translation", + "label": "translation to λβp", + "kind": "paper", + "status": "planned", + "milestone": "M6", + "section": "4", + "file": "", + "depends": ["m1_red1"] + }, + { + "id": "m6_sn", + "label": "SN for simply typed", + "kind": "paper", + "status": "planned", + "milestone": "M6", + "section": "6", + "file": "", + "depends": ["m6_translation"] + }, + { + "id": "m6_intersection", + "label": "intersection typing", + "kind": "paper", + "status": "planned", + "milestone": "M6", + "section": "6", + "file": "", + "depends": ["m6_sn"] + }, + { + "id": "m6_typable_sn", + "label": "typable → SN", + "kind": "paper", + "status": "planned", + "milestone": "M6", + "section": "6", + "file": "", + "depends": ["m6_intersection"] + }, + { + "id": "m6_sn_typable", + "label": "SN → typable", + "kind": "paper", + "status": "planned", + "milestone": "M6", + "section": "6", + "file": "", + "depends": ["m6_typable_sn"] + }, + { + "id": "corollary_6_21_psn", + "label": "Cor 6.21 PSN", + "kind": "paper", + "status": "planned", + "milestone": "M6", + "section": "6", + "file": "", + "depends": ["m6_sn_typable", "theorem_confluence_terms"] + } + ] +} diff --git a/scripts/audit.sh b/scripts/audit.sh new file mode 100755 index 0000000..2c0c386 --- /dev/null +++ b/scripts/audit.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +set -euo pipefail +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +cd "$ROOT" + +if ! command -v rocq >/dev/null 2>&1; then + if command -v opam >/dev/null 2>&1; then + eval "$(opam env --switch=rocq-system --set-switch 2>/dev/null || true)" + fi +fi + +if ! command -v rocq >/dev/null 2>&1; then + echo "rocq not on PATH; run: eval \$(opam env --switch=rocq-system --set-switch)" >&2 + exit 1 +fi + +fail=0 + +echo "== forbidden tokens ==" +while IFS= read -r -d '' f; do + if grep -nE '\b(Admitted|admit|Axiom|Conjecture|native_compute)\b|TODO|FIXME|XXX' "$f"; then + echo "forbidden token in $f" >&2 + fail=1 + fi +done < <(find theory -name '*.v' -print0 2>/dev/null) + +echo "== forbidden Parameter ==" +while IFS= read -r -d '' f; do + if grep -nE '^[[:space:]]*Parameter[[:space:]]' "$f"; then + echo "forbidden Parameter in $f" >&2 + fail=1 + fi +done < <(find theory -name '*.v' -print0 2>/dev/null) + +echo "== Print Assumptions ==" +mkdir -p /tmp/opencode/audit +out="$(rocq compile -o /tmp/opencode/audit/ExecReducer.vo theory/ExecReducer.v 2>&1 || true)" +echo "$out" +if echo "$out" | grep -q "Axioms:"; then + echo "unexpected axioms reported" >&2 + fail=1 +fi +if ! echo "$out" | grep -q "Closed under the global context"; then + echo "no Closed-under-global-context report found" >&2 + fail=1 +fi + +if [ "$fail" -ne 0 ]; then + echo "AUDIT FAIL" + exit 1 +fi +echo "AUDIT OK" diff --git a/scripts/gen_graphs.py b/scripts/gen_graphs.py new file mode 100755 index 0000000..a572dd9 --- /dev/null +++ b/scripts/gen_graphs.py @@ -0,0 +1,180 @@ +#!/usr/bin/env python3 +import json +import os +import subprocess +import sys + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +GRAPH_DIR = os.path.join(ROOT, "graphs") +META = os.path.join(GRAPH_DIR, "theorems.json") + +STATUS_FILL = { + "proved": "#d9ead3", + "stated": "#fff2cc", + "planned": "#f3f3f3", + "blocked": "#f4cccc", +} +STATUS_PEN = { + "proved": "#38761d", + "stated": "#b45f06", + "planned": "#777777", + "blocked": "#cc0000", +} +STATUS_STYLE = { + "proved": "filled", + "stated": "filled,dashed", + "planned": "dashed", + "blocked": "filled,bold", +} +INK = "#333333" +RULE_B = "#990000" +RULE_R = "#674ea7" +RULE_G = "#38761d" + + +def q(s): + return '"' + str(s).replace("\\", "\\\\").replace('"', '\\"') + '"' + + +def load(): + with open(META, "r", encoding="utf-8") as f: + return json.load(f) + + +def dependency_dot(data): + nodes = data["nodes"] + by_id = {n["id"]: n for n in nodes} + title = data["paper"]["title"] + " - theorem dependency (" + data["current"] + ")" + lines = [ + "digraph theorem_deps {", + " rankdir=LR;", + " bgcolor=\"white\";", + " node [fontname=Inter, fontsize=10, fontcolor=\"%s\"];" % INK, + " edge [fontname=Inter, fontsize=8, color=\"%s\"];" % INK, + " graph [fontname=Inter, fontsize=12, labelloc=t, label=%s];" % q(title), + ] + for ms in data["milestones"]: + members = [n for n in nodes if n["milestone"] == ms] + if not members: + continue + lines.append(" subgraph cluster_%s {" % ms) + lines.append(" label=%s;" % q(ms)) + lines.append(" style=\"rounded\";") + lines.append(" color=\"#bbbbbb\";") + lines.append(" fontcolor=\"%s\";" % INK) + for n in members: + fill = STATUS_FILL.get(n["status"], "#f3f3f3") + pen = STATUS_PEN.get(n["status"], "#777777") + style = STATUS_STYLE.get(n["status"], "dashed") + tip = n["id"] + if n.get("section"): + tip += " (section " + n["section"] + ")" + if n.get("file"): + tip += " " + n["file"] + tip += " " + data["paper"]["html"] + attrs = [ + "label=%s" % q(n["label"]), + "color=%s" % q(pen), + "fillcolor=%s" % q(fill), + "style=%s" % q(style), + "fontcolor=%s" % q(INK), + "tooltip=%s" % q(tip), + "shape=%s" % ("box" if n["kind"] == "paper" else "ellipse"), + ] + lines.append(" %s [%s];" % (n["id"], ", ".join(attrs))) + lines.append(" }") + for n in nodes: + for d in n.get("depends", []): + if d in by_id: + lines.append(" %s -> %s;" % (d, n["id"])) + lines.append("}") + return "\n".join(lines) + "\n" + + +def rules_dot(): + box = 'shape=box, style="rounded,filled", fillcolor="#f5f5f5", color="%s", fontcolor="%s"' % (INK, INK) + lines = [ + "digraph lambda_sub_cfg {", + " rankdir=TB;", + " bgcolor=\"white\";", + " node [fontname=Inter, fontsize=10];", + " edge [fontname=Inter, fontsize=9, color=\"%s\"];" % INK, + " start [label=\"term\", shape=oval, style=filled, fillcolor=\"#f3f3f3\", color=\"%s\"];" % INK, + " beta [label=\"(lambda x. t) u\", %s];" % box, + " es [label=\"t[x/u]\", %s];" % box, + " pure [label=\"pure term\", shape=oval, style=filled, fillcolor=\"#f3f3f3\", color=\"%s\"];" % INK, + " nf [label=\"normal form\", shape=doublecircle, style=filled, fillcolor=\"#d9ead3\", color=\"%s\"];" % RULE_G, + " start -> beta [label=\"App(Lam,_)\"];", + " start -> es [label=\"ESub\"];", + " start -> pure [label=\"BVar/FVar/Lam\"];", + " beta -> es [label=\"B\", color=\"%s\"];" % RULE_B, + " es -> es [label=\"R (one occurrence)\", color=\"%s\"];" % RULE_R, + " es -> pure [label=\"Gc (x not in fv)\", color=\"%s\"];" % RULE_G, + " pure -> pure [label=\"B under context\", color=\"%s\"];" % RULE_B, + " es -> nf [label=\"R/Gc normalisation\", color=\"%s\"];" % RULE_R, + "}", + ] + return "\n".join(lines) + "\n" + + +def reduction_dot(): + box = 'shape=box, style="filled", fillcolor="#f5f5f5", color="%s", fontcolor="%s"' % (INK, INK) + lines = [ + "digraph reduction_dup {", + " rankdir=LR;", + " bgcolor=\"white\";", + " node [fontname=Inter, fontsize=10];", + " edge [fontname=Inter, fontsize=9, color=\"%s\"];" % INK, + " graph [labelloc=t, fontcolor=\"%s\", label=\"(lambda x. x x) y reduction graph\"];" % INK, + " n0 [label=\"(lambda x. x x) y\", %s];" % box, + " n1 [label=\"(x x)[x/y]\", %s];" % box, + " n2 [label=\"(y x)[x/y]\", %s];" % box, + " n2b [label=\"(x y)[x/y]\", %s];" % box, + " n3 [label=\"(y y)[x/y]\", %s];" % box, + " nf [label=\"y y (normal form)\", shape=doublecircle, style=filled, fillcolor=\"#d9ead3\", color=\"%s\", fontcolor=\"%s\"];" % (RULE_G, INK), + " n0 -> n1 [label=\"B\", color=\"%s\"];" % RULE_B, + " n1 -> n2 [label=\"R\", color=\"%s\"];" % RULE_R, + " n1 -> n2b [label=\"R\", color=\"%s\"];" % RULE_R, + " n2 -> n3 [label=\"R\", color=\"%s\"];" % RULE_R, + " n2b -> n3 [label=\"R\", color=\"%s\"];" % RULE_R, + " n3 -> nf [label=\"Gc\", color=\"%s\"];" % RULE_G, + " {rank=same; n2; n2b;}", + "}", + ] + return "\n".join(lines) + "\n" + + +def run_dot(path): + svg = path[:-4] + ".svg" + png = path[:-4] + ".png" + ok = True + for fmt, out in (("svg", svg), ("png", png)): + r = subprocess.run(["dot", "-T" + fmt, path, "-o", out], capture_output=True, text=True) + if r.returncode != 0: + print(r.stderr, file=sys.stderr) + ok = False + else: + print("wrote", os.path.relpath(out, ROOT)) + return ok + + +def main(): + data = load() + outputs = { + "dependency.dot": dependency_dot(data), + "rules.dot": rules_dot(), + "reduction.dot": reduction_dot(), + } + ok = True + for name, text in outputs.items(): + p = os.path.join(GRAPH_DIR, name) + with open(p, "w", encoding="utf-8") as f: + f.write(text) + print("wrote", os.path.relpath(p, ROOT)) + if not run_dot(p): + ok = False + return 0 if ok else 1 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/theory/ExecReducer.v b/theory/ExecReducer.v new file mode 100644 index 0000000..01cc7cc --- /dev/null +++ b/theory/ExecReducer.v @@ -0,0 +1,272 @@ +From Stdlib Require Import List Bool PeanoNat Lia. +Import ListNotations. + +Definition atom := nat. + +Inductive trm : Type := +| BVar : nat -> trm +| FVar : atom -> trm +| App : trm -> trm -> trm +| Lam : trm -> trm +| ESub : trm -> trm -> trm. + +Fixpoint fvs (t : trm) : list atom := + match t with + | BVar _ => [] + | FVar x => [x] + | App t1 t2 => fvs t1 ++ fvs t2 + | Lam t1 => fvs t1 + | ESub t1 t2 => fvs t1 ++ fvs t2 + end. + +Definition in_fvs (x : atom) (t : trm) : bool := + existsb (Nat.eqb x) (fvs t). + +Fixpoint lift (k : nat) (t : trm) : trm := + match t with + | BVar n => if Nat.ltb n k then BVar n else BVar (S n) + | FVar x => FVar x + | App t1 t2 => App (lift k t1) (lift k t2) + | Lam t1 => Lam (lift (S k) t1) + | ESub t1 t2 => ESub (lift (S k) t1) (lift k t2) + end. + +Fixpoint open_rec (k : nat) (u : trm) (t : trm) : trm := + match t with + | BVar n => if Nat.eqb n k then lift k u else BVar n + | FVar x => FVar x + | App t1 t2 => App (open_rec k u t1) (open_rec k u t2) + | Lam t1 => Lam (open_rec (S k) u t1) + | ESub t1 t2 => ESub (open_rec (S k) u t1) (open_rec k u t2) + end. + +Fixpoint close_rec (x : atom) (k : nat) (t : trm) : trm := + match t with + | BVar n => BVar n + | FVar y => if Nat.eqb y x then BVar k else FVar y + | App t1 t2 => App (close_rec x k t1) (close_rec x k t2) + | Lam t1 => Lam (close_rec x (S k) t1) + | ESub t1 t2 => ESub (close_rec x (S k) t1) (close_rec x k t2) + end. + +Definition subst (x : atom) (u t : trm) : trm := + open_rec 0 u (close_rec x 0 t). + +Fixpoint occurs (n : nat) (t : trm) : bool := + match t with + | BVar m => Nat.eqb m n + | FVar _ => false + | App t1 t2 => occurs n t1 || occurs n t2 + | Lam t1 => occurs (S n) t1 + | ESub t1 t2 => occurs (S n) t1 || occurs n t2 + end. + +Definition occurs0 (t : trm) : bool := occurs 0 t. + +Inductive rule : Type := RB | RGc | RR. + +Definition rule_eqb (r s : rule) : bool := + match r, s with + | RB, RB => true + | RGc, RGc => true + | RR, RR => true + | _, _ => false + end. + +Inductive zctx : Type := +| ZTop : zctx +| ZAppL : zctx -> trm -> zctx +| ZAppR : trm -> zctx -> zctx +| ZLam : zctx -> zctx +| ZESubL : zctx -> trm -> zctx +| ZESubR : trm -> zctx -> zctx. + +Fixpoint zplug (C : zctx) (k : nat) (t : trm) : trm := + match C with + | ZTop => t + | ZAppL C1 u => App (zplug C1 k t) u + | ZAppR u C1 => App u (zplug C1 k t) + | ZLam C1 => Lam (zplug C1 (S k) t) + | ZESubL C1 u => ESub (zplug C1 (S k) t) u + | ZESubR t1 C1 => ESub t1 (zplug C1 k t) + end. + +Fixpoint zplug_lift (C : zctx) (k : nat) (t : trm) : trm := + match C with + | ZTop => lift k t + | ZAppL C1 u => App (zplug_lift C1 k t) u + | ZAppR u C1 => App u (zplug_lift C1 k t) + | ZLam C1 => Lam (zplug_lift C1 (S k) t) + | ZESubL C1 u => ESub (zplug_lift C1 (S k) t) u + | ZESubR t1 C1 => ESub t1 (zplug_lift C1 k t) + end. + +Fixpoint zdecs (t : trm) (k : nat) : list zctx := + match t with + | BVar n => if Nat.eqb n k then [ZTop] else [] + | FVar _ => [] + | App t1 t2 => + map (fun C => ZAppL C t2) (zdecs t1 k) + ++ map (fun C => ZAppR t1 C) (zdecs t2 k) + | Lam t1 => map ZLam (zdecs t1 (S k)) + | ESub t1 t2 => + map (fun C => ZESubL C t2) (zdecs t1 (S k)) + ++ map (fun C => ZESubR t1 C) (zdecs t2 k) + end. + +Definition root_steps (t : trm) : list (rule * trm) := + match t with + | App (Lam body) u => [(RB, ESub body u)] + | ESub body u => + (if occurs0 body then [] else [(RGc, body)]) + ++ map (fun C => (RR, ESub (zplug_lift C 0 u) u)) (zdecs body 0) + | _ => [] + end. + +Inductive ctx : Type := +| GHole : ctx +| GAppL : ctx -> trm -> ctx +| GAppR : trm -> ctx -> ctx +| GLam : ctx -> ctx +| GESubL : ctx -> trm -> ctx +| GESubR : trm -> ctx -> ctx. + +Fixpoint plug (C : ctx) (t : trm) : trm := + match C with + | GHole => t + | GAppL C1 u => App (plug C1 t) u + | GAppR u C1 => App u (plug C1 t) + | GLam C1 => Lam (plug C1 t) + | GESubL C1 u => ESub (plug C1 t) u + | GESubR t1 C1 => ESub t1 (plug C1 t) + end. + +Fixpoint positions (t : trm) : list ctx := + GHole :: + match t with + | BVar _ => [] + | FVar _ => [] + | App t1 t2 => + map (fun C => GAppL C t2) (positions t1) + ++ map (fun C => GAppR t1 C) (positions t2) + | Lam t1 => map GLam (positions t1) + | ESub t1 t2 => + map (fun C => GESubL C t2) (positions t1) + ++ map (fun C => GESubR t1 C) (positions t2) + end. + +Fixpoint at_ctx (C : ctx) (t : trm) : option trm := + match C, t with + | GHole, t => Some t + | GAppL C1 _, App t1 _ => at_ctx C1 t1 + | GAppR _ C2, App _ t2 => at_ctx C2 t2 + | GLam C1, Lam t1 => at_ctx C1 t1 + | GESubL C1 _, ESub t1 _ => at_ctx C1 t1 + | GESubR _ C2, ESub _ t2 => at_ctx C2 t2 + | _, _ => None + end. + +Definition step_at (C : ctx) (t : trm) : list (rule * trm) := + match at_ctx C t with + | None => [] + | Some s => map (fun p => (fst p, plug C (snd p))) (root_steps s) + end. + +Definition steps (t : trm) : list (rule * trm) := + flat_map (fun C => step_at C t) (positions t). + +Definition has_rule (r : rule) (l : list (rule * trm)) : bool := + existsb (fun p => rule_eqb r (fst p)) l. + +Definition count_rule (r : rule) (l : list (rule * trm)) : nat := + length (filter (fun p => rule_eqb r (fst p)) l). + +Definition normal_form (t : trm) : bool := + match steps t with [] => true | _ => false end. + +Definition ex_id : trm := App (Lam (BVar 0)) (FVar 1). +Definition ex_dup : trm := App (Lam (App (BVar 0) (BVar 0))) (FVar 1). +Definition ex_dup_es : trm := ESub (App (BVar 0) (BVar 0)) (FVar 1). +Definition ex_es : trm := ESub (BVar 0) (FVar 1). +Definition ex_gc : trm := ESub (FVar 2) (FVar 1). +Definition ex_nested : trm := ESub (ESub (BVar 0) (FVar 1)) (FVar 2). + +Example ex_id_beta : has_rule RB (steps ex_id) = true. +Proof. reflexivity. Qed. + +Example ex_id_one_step : length (steps ex_id) = 1. +Proof. reflexivity. Qed. + +Example ex_dup_beta : has_rule RB (steps ex_dup) = true. +Proof. reflexivity. Qed. + +Example ex_dup_es_two_R : count_rule RR (steps ex_dup_es) = 2. +Proof. reflexivity. Qed. + +Example ex_dup_es_no_Gc : has_rule RGc (steps ex_dup_es) = false. +Proof. reflexivity. Qed. + +Example ex_es_R : has_rule RR (steps ex_es) = true. +Proof. reflexivity. Qed. + +Example ex_es_no_Gc : has_rule RGc (steps ex_es) = false. +Proof. reflexivity. Qed. + +Example ex_gc_gc : has_rule RGc (steps ex_gc) = true. +Proof. reflexivity. Qed. + +Example ex_gc_no_R : has_rule RR (steps ex_gc) = false. +Proof. reflexivity. Qed. + +Example ex_nested_has_gc : has_rule RGc (steps ex_nested) = true. +Proof. reflexivity. Qed. + +Example ex_id_terminates : normal_form (plug GHole (FVar 5)) = true. +Proof. reflexivity. Qed. + +Example fvs_lam : fvs (Lam (App (BVar 0) (FVar 1))) = [1]. +Proof. reflexivity. Qed. + +Example fvs_es : fvs (ESub (FVar 0) (FVar 1)) = [0; 1]. +Proof. reflexivity. Qed. + +Example occurs0_lam : occurs0 (Lam (BVar 0)) = false. +Proof. reflexivity. Qed. + +Example occurs0_bvar : occurs0 (BVar 0) = true. +Proof. reflexivity. Qed. + +Example open_basic : open_rec 0 (FVar 1) (BVar 0) = FVar 1. +Proof. reflexivity. Qed. + +Example open_under_lam : open_rec 0 (FVar 1) (Lam (BVar 1)) = Lam (FVar 1). +Proof. reflexivity. Qed. + +Example subst_hit : subst 0 (FVar 1) (FVar 0) = FVar 1. +Proof. reflexivity. Qed. + +Example subst_miss : subst 0 (FVar 1) (FVar 2) = FVar 2. +Proof. reflexivity. Qed. + +Example capture_avoid_1 : + subst 0 (FVar 1) (Lam (BVar 0)) = Lam (BVar 0). +Proof. reflexivity. Qed. + +Example capture_avoid_2 : + subst 0 (FVar 1) (Lam (App (BVar 0) (FVar 0))) + = Lam (App (BVar 0) (FVar 1)). +Proof. reflexivity. Qed. + +Example capture_avoid_es : + subst 0 (FVar 1) (ESub (FVar 0) (FVar 2)) + = ESub (FVar 1) (FVar 2). +Proof. reflexivity. Qed. + +Print Assumptions ex_id_beta. +Print Assumptions ex_dup_es_two_R. +Print Assumptions ex_gc_gc. +Print Assumptions ex_nested_has_gc. +Print Assumptions capture_avoid_1. +Print Assumptions capture_avoid_2. +Print Assumptions capture_avoid_es. +Print Assumptions open_under_lam. diff --git a/theory/dune b/theory/dune new file mode 100644 index 0000000..7f43088 --- /dev/null +++ b/theory/dune @@ -0,0 +1,3 @@ +(rocq.theory + (name LambdaSub) + (theories Stdlib))