From 8c78a2f8e5d296514e3125baf02c61d0e13cf7d9 Mon Sep 17 00:00:00 2001 From: Naveen Sundar Govindarajulu Date: Sat, 14 Jan 2017 22:08:51 -0500 Subject: [PATCH] First commits. --- .gitignore | 34 + pom.xml | 36 + snark-20120808r02/INSTALL | 53 + snark-20120808r02/LICENSE | 453 +++ snark-20120808r02/README | 36 + snark-20120808r02/compile | 4 + .../examples/BOO002-1+rm_eq_rstfp.kif | 47 + .../examples/COL003-1+rm_eq_rstfp.kif | 53 + .../examples/COL049-1+rm_eq_rstfp.kif | 52 + .../examples/GRP001-1+rm_eq_rstfp.kif | 78 + .../examples/GRP002-1+rm_eq_rstfp.kif | 98 + .../examples/GRP002-3+rm_eq_rstfp.kif | 53 + .../examples/GRP014-1+rm_eq_rstfp.kif | 38 + .../examples/LCL024-1+rm_eq_rstfp.kif | 44 + .../examples/LCL038-1+rm_eq_rstfp.kif | 42 + .../examples/LCL109-2+rm_eq_rstfp.kif | 54 + snark-20120808r02/examples/LCL111-1.tptp | 55 + .../examples/LCL114-1+rm_eq_rstfp.kif | 53 + snark-20120808r02/examples/PUZ031+1.kif | 155 + .../examples/RNG008-6+rm_eq_rstfp.kif | 129 + .../examples/RNG009-5+rm_eq_rstfp.kif | 60 + .../examples/RNG010-5+rm_eq_rstfp.kif | 117 + .../examples/RNG011-5+rm_eq_rstfp.kif | 97 + .../examples/ROB005-1+rm_eq_rstfp.kif | 53 + .../examples/coder-examples.abcl | Bin 0 -> 34443 bytes .../examples/coder-examples.lisp | 362 +++ .../examples/front-last-example.abcl | Bin 0 -> 2559 bytes .../examples/front-last-example.lisp | 82 + .../examples/hot-drink-example.abcl | Bin 0 -> 9774 bytes .../examples/hot-drink-example.lisp | 130 + snark-20120808r02/examples/latin-squares.abcl | Bin 0 -> 16909 bytes snark-20120808r02/examples/latin-squares.lisp | 121 + snark-20120808r02/examples/overbeek-test.abcl | Bin 0 -> 27509 bytes snark-20120808r02/examples/overbeek-test.lisp | 359 +++ .../examples/ramsey-examples.lisp | 191 ++ .../examples/reverse-example.abcl | Bin 0 -> 2610 bytes .../examples/reverse-example.lisp | 51 + snark-20120808r02/examples/snark-test | 19 + .../examples/steamroller-example.abcl | Bin 0 -> 3775 bytes .../examples/steamroller-example.lisp | 82 + snark-20120808r02/make-snark-ccl | 6 + snark-20120808r02/make-snark-ccl64 | 6 + snark-20120808r02/make-snark-sbcl | 6 + snark-20120808r02/make-snark-sbcl64 | 6 + snark-20120808r02/run-snark | 55 + snark-20120808r02/snark-interface.fasl | Bin 0 -> 21080 bytes snark-20120808r02/snark-interface.lisp | 167 ++ snark-20120808r02/snark-system.lisp | 160 ++ snark-20120808r02/src/ac-rpo.abcl | Bin 0 -> 16409 bytes snark-20120808r02/src/ac-rpo.lisp | 304 ++ snark-20120808r02/src/agenda-system.lisp | 36 + snark-20120808r02/src/agenda.abcl | Bin 0 -> 70779 bytes snark-20120808r02/src/agenda.lisp | 234 ++ snark-20120808r02/src/alists.abcl | Bin 0 -> 7931 bytes snark-20120808r02/src/alists.lisp | 121 + snark-20120808r02/src/argument-bag-ac.abcl | Bin 0 -> 9317 bytes snark-20120808r02/src/argument-bag-ac.lisp | 82 + snark-20120808r02/src/argument-list-a1.abcl | Bin 0 -> 10348 bytes snark-20120808r02/src/argument-list-a1.lisp | 145 + snark-20120808r02/src/assertion-analysis.abcl | Bin 0 -> 176653 bytes snark-20120808r02/src/assertion-analysis.lisp | 502 ++++ snark-20120808r02/src/assertion-file.abcl | Bin 0 -> 149678 bytes snark-20120808r02/src/assertion-file.lisp | 262 ++ snark-20120808r02/src/clocks.abcl | Bin 0 -> 22913 bytes snark-20120808r02/src/clocks.lisp | 169 ++ snark-20120808r02/src/closure1.lisp | 66 + snark-20120808r02/src/code-for-bags4.abcl | Bin 0 -> 19234 bytes snark-20120808r02/src/code-for-bags4.lisp | 116 + snark-20120808r02/src/code-for-lists2.abcl | Bin 0 -> 2124 bytes snark-20120808r02/src/code-for-lists2.lisp | 34 + snark-20120808r02/src/code-for-numbers3.abcl | Bin 0 -> 87751 bytes snark-20120808r02/src/code-for-numbers3.lisp | 505 ++++ snark-20120808r02/src/code-for-strings2.abcl | Bin 0 -> 8052 bytes snark-20120808r02/src/code-for-strings2.lisp | 62 + snark-20120808r02/src/coder.abcl | Bin 0 -> 137196 bytes snark-20120808r02/src/coder.lisp | 714 +++++ snark-20120808r02/src/collectors.abcl | Bin 0 -> 21604 bytes snark-20120808r02/src/collectors.lisp | 143 + snark-20120808r02/src/connectives.abcl | Bin 0 -> 81516 bytes snark-20120808r02/src/connectives.lisp | 550 ++++ snark-20120808r02/src/constants.abcl | Bin 0 -> 149163 bytes snark-20120808r02/src/constants.lisp | 305 ++ snark-20120808r02/src/constraints.abcl | Bin 0 -> 68522 bytes snark-20120808r02/src/constraints.lisp | 335 +++ snark-20120808r02/src/counters.abcl | Bin 0 -> 28012 bytes snark-20120808r02/src/counters.lisp | 90 + snark-20120808r02/src/date-reasoning2.abcl | Bin 0 -> 30816 bytes snark-20120808r02/src/date-reasoning2.lisp | 347 +++ snark-20120808r02/src/davis-putnam3.abcl | Bin 0 -> 428783 bytes snark-20120808r02/src/davis-putnam3.lisp | 2344 +++++++++++++++ snark-20120808r02/src/deque-system.lisp | 38 + snark-20120808r02/src/deque2.abcl | Bin 0 -> 39439 bytes snark-20120808r02/src/deque2.lisp | 228 ++ snark-20120808r02/src/dp-refute.abcl | Bin 0 -> 49255 bytes snark-20120808r02/src/dp-refute.lisp | 250 ++ snark-20120808r02/src/dpll-system.lisp | 46 + snark-20120808r02/src/equal.abcl | Bin 0 -> 8667 bytes snark-20120808r02/src/equal.lisp | 115 + snark-20120808r02/src/eval.abcl | Bin 0 -> 39264 bytes snark-20120808r02/src/eval.lisp | 350 +++ snark-20120808r02/src/feature-system.lisp | 37 + .../src/feature-vector-index.abcl | Bin 0 -> 59806 bytes .../src/feature-vector-index.lisp | 157 + .../src/feature-vector-trie.abcl | Bin 0 -> 13058 bytes .../src/feature-vector-trie.lisp | 76 + snark-20120808r02/src/feature-vector.abcl | Bin 0 -> 24704 bytes snark-20120808r02/src/feature-vector.lisp | 153 + snark-20120808r02/src/feature.abcl | Bin 0 -> 189510 bytes snark-20120808r02/src/feature.lisp | 831 ++++++ snark-20120808r02/src/functions.abcl | Bin 0 -> 278789 bytes snark-20120808r02/src/functions.lisp | 414 +++ snark-20120808r02/src/globals.abcl | Bin 0 -> 7193 bytes snark-20120808r02/src/globals.lisp | 352 +++ snark-20120808r02/src/infix-operators.abcl | Bin 0 -> 36710 bytes snark-20120808r02/src/infix-operators.lisp | 105 + .../src/infix-reader-system.lisp | 31 + snark-20120808r02/src/infix-reader.abcl | Bin 0 -> 38793 bytes snark-20120808r02/src/infix-reader.lisp | 441 +++ snark-20120808r02/src/input.abcl | Bin 0 -> 106180 bytes snark-20120808r02/src/input.lisp | 984 +++++++ .../src/jepd-relations-tables.abcl | Bin 0 -> 2772 bytes .../src/jepd-relations-tables.lisp | 511 ++++ snark-20120808r02/src/jepd-relations.abcl | Bin 0 -> 83370 bytes snark-20120808r02/src/jepd-relations.lisp | 731 +++++ .../src/knuth-bendix-ordering2.abcl | Bin 0 -> 17220 bytes .../src/knuth-bendix-ordering2.lisp | 205 ++ snark-20120808r02/src/lisp-system.lisp | 102 + snark-20120808r02/src/lisp.abcl | Bin 0 -> 74092 bytes snark-20120808r02/src/lisp.lisp | 566 ++++ snark-20120808r02/src/loads.lisp | 30 + snark-20120808r02/src/main.abcl | Bin 0 -> 304705 bytes snark-20120808r02/src/main.lisp | 2528 +++++++++++++++++ snark-20120808r02/src/map-file.abcl | Bin 0 -> 11869 bytes snark-20120808r02/src/map-file.lisp | 85 + snark-20120808r02/src/multiset-ordering.abcl | Bin 0 -> 7231 bytes snark-20120808r02/src/multiset-ordering.lisp | 349 +++ snark-20120808r02/src/mvlet.abcl | Bin 0 -> 16610 bytes snark-20120808r02/src/mvlet.lisp | 251 ++ snark-20120808r02/src/nonhorn-magic-set.abcl | Bin 0 -> 13378 bytes snark-20120808r02/src/nonhorn-magic-set.lisp | 131 + snark-20120808r02/src/numbering-system.lisp | 32 + snark-20120808r02/src/numbering.abcl | Bin 0 -> 7824 bytes snark-20120808r02/src/numbering.lisp | 82 + snark-20120808r02/src/options.abcl | Bin 0 -> 1300392 bytes snark-20120808r02/src/options.lisp | 395 +++ snark-20120808r02/src/output.abcl | Bin 0 -> 54499 bytes snark-20120808r02/src/output.lisp | 506 ++++ snark-20120808r02/src/patches.abcl | Bin 0 -> 932 bytes snark-20120808r02/src/patches.lisp | 26 + snark-20120808r02/src/path-index.abcl | Bin 0 -> 214943 bytes snark-20120808r02/src/path-index.lisp | 870 ++++++ snark-20120808r02/src/pattern-match.abcl | Bin 0 -> 1642 bytes snark-20120808r02/src/pattern-match.lisp | 45 + snark-20120808r02/src/posets.abcl | Bin 0 -> 11530 bytes snark-20120808r02/src/posets.lisp | 69 + snark-20120808r02/src/progc.abcl | Bin 0 -> 19098 bytes snark-20120808r02/src/progc.lisp | 288 ++ .../src/recursive-path-ordering.abcl | Bin 0 -> 29075 bytes .../src/recursive-path-ordering.lisp | 292 ++ .../src/resolve-code-tables.abcl | Bin 0 -> 13031 bytes .../src/resolve-code-tables.lisp | 154 + snark-20120808r02/src/resolve-code.abcl | Bin 0 -> 30771 bytes snark-20120808r02/src/resolve-code.lisp | 193 ++ snark-20120808r02/src/rewrite-code.abcl | Bin 0 -> 39337 bytes snark-20120808r02/src/rewrite-code.lisp | 402 +++ snark-20120808r02/src/rewrite.abcl | Bin 0 -> 93200 bytes snark-20120808r02/src/rewrite.lisp | 488 ++++ snark-20120808r02/src/row-contexts.abcl | Bin 0 -> 23103 bytes snark-20120808r02/src/row-contexts.lisp | 184 ++ snark-20120808r02/src/rows.abcl | Bin 0 -> 172990 bytes snark-20120808r02/src/rows.lisp | 387 +++ .../src/simplification-ordering.abcl | Bin 0 -> 48482 bytes .../src/simplification-ordering.lisp | 356 +++ snark-20120808r02/src/snark-pkg.lisp | 308 ++ snark-20120808r02/src/solve-sum.abcl | Bin 0 -> 8190 bytes snark-20120808r02/src/solve-sum.lisp | 95 + snark-20120808r02/src/sorts-functions.abcl | Bin 0 -> 7044 bytes snark-20120808r02/src/sorts-functions.lisp | 81 + snark-20120808r02/src/sorts-interface.abcl | Bin 0 -> 36346 bytes snark-20120808r02/src/sorts-interface.lisp | 180 ++ snark-20120808r02/src/sorts.abcl | Bin 0 -> 42628 bytes snark-20120808r02/src/sorts.lisp | 284 ++ .../src/sparse-array-system.lisp | 49 + snark-20120808r02/src/sparse-array.abcl | Bin 0 -> 48843 bytes snark-20120808r02/src/sparse-array.lisp | 465 +++ .../src/sparse-vector-expression.abcl | Bin 0 -> 55343 bytes .../src/sparse-vector-expression.lisp | 343 +++ snark-20120808r02/src/sparse-vector5.abcl | Bin 0 -> 162998 bytes snark-20120808r02/src/sparse-vector5.lisp | 982 +++++++ snark-20120808r02/src/subst.abcl | Bin 0 -> 86991 bytes snark-20120808r02/src/subst.lisp | 611 ++++ snark-20120808r02/src/substitute.abcl | Bin 0 -> 28769 bytes snark-20120808r02/src/substitute.lisp | 201 ++ snark-20120808r02/src/subsume-bag.abcl | Bin 0 -> 12857 bytes snark-20120808r02/src/subsume-bag.lisp | 192 ++ snark-20120808r02/src/subsume-clause.abcl | Bin 0 -> 33823 bytes snark-20120808r02/src/subsume-clause.lisp | 349 +++ snark-20120808r02/src/subsume.abcl | Bin 0 -> 56835 bytes snark-20120808r02/src/subsume.lisp | 503 ++++ snark-20120808r02/src/symbol-definitions.abcl | Bin 0 -> 10428 bytes snark-20120808r02/src/symbol-definitions.lisp | 184 ++ snark-20120808r02/src/symbol-ordering.abcl | Bin 0 -> 18753 bytes snark-20120808r02/src/symbol-ordering.lisp | 251 ++ snark-20120808r02/src/symbol-table2.abcl | Bin 0 -> 68310 bytes snark-20120808r02/src/symbol-table2.lisp | 397 +++ snark-20120808r02/src/term-hash.abcl | Bin 0 -> 50686 bytes snark-20120808r02/src/term-hash.lisp | 250 ++ snark-20120808r02/src/term-memory.abcl | Bin 0 -> 172189 bytes snark-20120808r02/src/term-memory.lisp | 286 ++ snark-20120808r02/src/terms2.abcl | Bin 0 -> 45879 bytes snark-20120808r02/src/terms2.lisp | 231 ++ snark-20120808r02/src/topological-sort.abcl | Bin 0 -> 4242 bytes snark-20120808r02/src/topological-sort.lisp | 81 + snark-20120808r02/src/tptp-symbols.abcl | Bin 0 -> 9431 bytes snark-20120808r02/src/tptp-symbols.lisp | 98 + snark-20120808r02/src/tptp.abcl | Bin 0 -> 60328 bytes snark-20120808r02/src/tptp.lisp | 645 +++++ snark-20120808r02/src/trie-index.abcl | Bin 0 -> 237676 bytes snark-20120808r02/src/trie-index.lisp | 574 ++++ snark-20120808r02/src/trie.abcl | Bin 0 -> 19490 bytes snark-20120808r02/src/trie.lisp | 101 + snark-20120808r02/src/unify-bag.abcl | Bin 0 -> 92091 bytes snark-20120808r02/src/unify-bag.lisp | 859 ++++++ snark-20120808r02/src/unify-vector.abcl | Bin 0 -> 12588 bytes snark-20120808r02/src/unify-vector.lisp | 135 + snark-20120808r02/src/unify.abcl | Bin 0 -> 43348 bytes snark-20120808r02/src/unify.lisp | 234 ++ snark-20120808r02/src/useful.abcl | Bin 0 -> 27833 bytes snark-20120808r02/src/useful.lisp | 167 ++ snark-20120808r02/src/variables.abcl | Bin 0 -> 18456 bytes snark-20120808r02/src/variables.lisp | 77 + snark-20120808r02/src/variant.abcl | Bin 0 -> 13758 bytes snark-20120808r02/src/variant.lisp | 148 + snark-20120808r02/src/weight.abcl | Bin 0 -> 30440 bytes snark-20120808r02/src/weight.lisp | 197 ++ snark-20120808r02/src/wffs.abcl | Bin 0 -> 73930 bytes snark-20120808r02/src/wffs.lisp | 680 +++++ 237 files changed, 36267 insertions(+) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 snark-20120808r02/INSTALL create mode 100644 snark-20120808r02/LICENSE create mode 100644 snark-20120808r02/README create mode 100644 snark-20120808r02/compile create mode 100644 snark-20120808r02/examples/BOO002-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/COL003-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/COL049-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/GRP001-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/GRP002-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/GRP002-3+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/GRP014-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/LCL024-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/LCL038-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/LCL109-2+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/LCL111-1.tptp create mode 100644 snark-20120808r02/examples/LCL114-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/PUZ031+1.kif create mode 100644 snark-20120808r02/examples/RNG008-6+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/RNG009-5+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/RNG010-5+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/RNG011-5+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/ROB005-1+rm_eq_rstfp.kif create mode 100644 snark-20120808r02/examples/coder-examples.abcl create mode 100644 snark-20120808r02/examples/coder-examples.lisp create mode 100644 snark-20120808r02/examples/front-last-example.abcl create mode 100644 snark-20120808r02/examples/front-last-example.lisp create mode 100644 snark-20120808r02/examples/hot-drink-example.abcl create mode 100644 snark-20120808r02/examples/hot-drink-example.lisp create mode 100644 snark-20120808r02/examples/latin-squares.abcl create mode 100644 snark-20120808r02/examples/latin-squares.lisp create mode 100644 snark-20120808r02/examples/overbeek-test.abcl create mode 100644 snark-20120808r02/examples/overbeek-test.lisp create mode 100644 snark-20120808r02/examples/ramsey-examples.lisp create mode 100644 snark-20120808r02/examples/reverse-example.abcl create mode 100644 snark-20120808r02/examples/reverse-example.lisp create mode 100644 snark-20120808r02/examples/snark-test create mode 100644 snark-20120808r02/examples/steamroller-example.abcl create mode 100644 snark-20120808r02/examples/steamroller-example.lisp create mode 100755 snark-20120808r02/make-snark-ccl create mode 100755 snark-20120808r02/make-snark-ccl64 create mode 100755 snark-20120808r02/make-snark-sbcl create mode 100755 snark-20120808r02/make-snark-sbcl64 create mode 100755 snark-20120808r02/run-snark create mode 100644 snark-20120808r02/snark-interface.fasl create mode 100644 snark-20120808r02/snark-interface.lisp create mode 100644 snark-20120808r02/snark-system.lisp create mode 100644 snark-20120808r02/src/ac-rpo.abcl create mode 100644 snark-20120808r02/src/ac-rpo.lisp create mode 100644 snark-20120808r02/src/agenda-system.lisp create mode 100644 snark-20120808r02/src/agenda.abcl create mode 100644 snark-20120808r02/src/agenda.lisp create mode 100644 snark-20120808r02/src/alists.abcl create mode 100644 snark-20120808r02/src/alists.lisp create mode 100644 snark-20120808r02/src/argument-bag-ac.abcl create mode 100644 snark-20120808r02/src/argument-bag-ac.lisp create mode 100644 snark-20120808r02/src/argument-list-a1.abcl create mode 100644 snark-20120808r02/src/argument-list-a1.lisp create mode 100644 snark-20120808r02/src/assertion-analysis.abcl create mode 100644 snark-20120808r02/src/assertion-analysis.lisp create mode 100644 snark-20120808r02/src/assertion-file.abcl create mode 100644 snark-20120808r02/src/assertion-file.lisp create mode 100644 snark-20120808r02/src/clocks.abcl create mode 100644 snark-20120808r02/src/clocks.lisp create mode 100644 snark-20120808r02/src/closure1.lisp create mode 100644 snark-20120808r02/src/code-for-bags4.abcl create mode 100644 snark-20120808r02/src/code-for-bags4.lisp create mode 100644 snark-20120808r02/src/code-for-lists2.abcl create mode 100644 snark-20120808r02/src/code-for-lists2.lisp create mode 100644 snark-20120808r02/src/code-for-numbers3.abcl create mode 100644 snark-20120808r02/src/code-for-numbers3.lisp create mode 100644 snark-20120808r02/src/code-for-strings2.abcl create mode 100644 snark-20120808r02/src/code-for-strings2.lisp create mode 100644 snark-20120808r02/src/coder.abcl create mode 100644 snark-20120808r02/src/coder.lisp create mode 100644 snark-20120808r02/src/collectors.abcl create mode 100644 snark-20120808r02/src/collectors.lisp create mode 100644 snark-20120808r02/src/connectives.abcl create mode 100644 snark-20120808r02/src/connectives.lisp create mode 100644 snark-20120808r02/src/constants.abcl create mode 100644 snark-20120808r02/src/constants.lisp create mode 100644 snark-20120808r02/src/constraints.abcl create mode 100644 snark-20120808r02/src/constraints.lisp create mode 100644 snark-20120808r02/src/counters.abcl create mode 100644 snark-20120808r02/src/counters.lisp create mode 100644 snark-20120808r02/src/date-reasoning2.abcl create mode 100644 snark-20120808r02/src/date-reasoning2.lisp create mode 100644 snark-20120808r02/src/davis-putnam3.abcl create mode 100644 snark-20120808r02/src/davis-putnam3.lisp create mode 100644 snark-20120808r02/src/deque-system.lisp create mode 100644 snark-20120808r02/src/deque2.abcl create mode 100644 snark-20120808r02/src/deque2.lisp create mode 100644 snark-20120808r02/src/dp-refute.abcl create mode 100644 snark-20120808r02/src/dp-refute.lisp create mode 100644 snark-20120808r02/src/dpll-system.lisp create mode 100644 snark-20120808r02/src/equal.abcl create mode 100644 snark-20120808r02/src/equal.lisp create mode 100644 snark-20120808r02/src/eval.abcl create mode 100644 snark-20120808r02/src/eval.lisp create mode 100644 snark-20120808r02/src/feature-system.lisp create mode 100644 snark-20120808r02/src/feature-vector-index.abcl create mode 100644 snark-20120808r02/src/feature-vector-index.lisp create mode 100644 snark-20120808r02/src/feature-vector-trie.abcl create mode 100644 snark-20120808r02/src/feature-vector-trie.lisp create mode 100644 snark-20120808r02/src/feature-vector.abcl create mode 100644 snark-20120808r02/src/feature-vector.lisp create mode 100644 snark-20120808r02/src/feature.abcl create mode 100644 snark-20120808r02/src/feature.lisp create mode 100644 snark-20120808r02/src/functions.abcl create mode 100644 snark-20120808r02/src/functions.lisp create mode 100644 snark-20120808r02/src/globals.abcl create mode 100644 snark-20120808r02/src/globals.lisp create mode 100644 snark-20120808r02/src/infix-operators.abcl create mode 100644 snark-20120808r02/src/infix-operators.lisp create mode 100644 snark-20120808r02/src/infix-reader-system.lisp create mode 100644 snark-20120808r02/src/infix-reader.abcl create mode 100644 snark-20120808r02/src/infix-reader.lisp create mode 100644 snark-20120808r02/src/input.abcl create mode 100644 snark-20120808r02/src/input.lisp create mode 100644 snark-20120808r02/src/jepd-relations-tables.abcl create mode 100644 snark-20120808r02/src/jepd-relations-tables.lisp create mode 100644 snark-20120808r02/src/jepd-relations.abcl create mode 100644 snark-20120808r02/src/jepd-relations.lisp create mode 100644 snark-20120808r02/src/knuth-bendix-ordering2.abcl create mode 100644 snark-20120808r02/src/knuth-bendix-ordering2.lisp create mode 100644 snark-20120808r02/src/lisp-system.lisp create mode 100644 snark-20120808r02/src/lisp.abcl create mode 100644 snark-20120808r02/src/lisp.lisp create mode 100644 snark-20120808r02/src/loads.lisp create mode 100644 snark-20120808r02/src/main.abcl create mode 100644 snark-20120808r02/src/main.lisp create mode 100644 snark-20120808r02/src/map-file.abcl create mode 100644 snark-20120808r02/src/map-file.lisp create mode 100644 snark-20120808r02/src/multiset-ordering.abcl create mode 100644 snark-20120808r02/src/multiset-ordering.lisp create mode 100644 snark-20120808r02/src/mvlet.abcl create mode 100644 snark-20120808r02/src/mvlet.lisp create mode 100644 snark-20120808r02/src/nonhorn-magic-set.abcl create mode 100644 snark-20120808r02/src/nonhorn-magic-set.lisp create mode 100644 snark-20120808r02/src/numbering-system.lisp create mode 100644 snark-20120808r02/src/numbering.abcl create mode 100644 snark-20120808r02/src/numbering.lisp create mode 100644 snark-20120808r02/src/options.abcl create mode 100644 snark-20120808r02/src/options.lisp create mode 100644 snark-20120808r02/src/output.abcl create mode 100644 snark-20120808r02/src/output.lisp create mode 100644 snark-20120808r02/src/patches.abcl create mode 100644 snark-20120808r02/src/patches.lisp create mode 100644 snark-20120808r02/src/path-index.abcl create mode 100644 snark-20120808r02/src/path-index.lisp create mode 100644 snark-20120808r02/src/pattern-match.abcl create mode 100644 snark-20120808r02/src/pattern-match.lisp create mode 100644 snark-20120808r02/src/posets.abcl create mode 100644 snark-20120808r02/src/posets.lisp create mode 100644 snark-20120808r02/src/progc.abcl create mode 100644 snark-20120808r02/src/progc.lisp create mode 100644 snark-20120808r02/src/recursive-path-ordering.abcl create mode 100644 snark-20120808r02/src/recursive-path-ordering.lisp create mode 100644 snark-20120808r02/src/resolve-code-tables.abcl create mode 100644 snark-20120808r02/src/resolve-code-tables.lisp create mode 100644 snark-20120808r02/src/resolve-code.abcl create mode 100644 snark-20120808r02/src/resolve-code.lisp create mode 100644 snark-20120808r02/src/rewrite-code.abcl create mode 100644 snark-20120808r02/src/rewrite-code.lisp create mode 100644 snark-20120808r02/src/rewrite.abcl create mode 100644 snark-20120808r02/src/rewrite.lisp create mode 100644 snark-20120808r02/src/row-contexts.abcl create mode 100644 snark-20120808r02/src/row-contexts.lisp create mode 100644 snark-20120808r02/src/rows.abcl create mode 100644 snark-20120808r02/src/rows.lisp create mode 100644 snark-20120808r02/src/simplification-ordering.abcl create mode 100644 snark-20120808r02/src/simplification-ordering.lisp create mode 100644 snark-20120808r02/src/snark-pkg.lisp create mode 100644 snark-20120808r02/src/solve-sum.abcl create mode 100644 snark-20120808r02/src/solve-sum.lisp create mode 100644 snark-20120808r02/src/sorts-functions.abcl create mode 100644 snark-20120808r02/src/sorts-functions.lisp create mode 100644 snark-20120808r02/src/sorts-interface.abcl create mode 100644 snark-20120808r02/src/sorts-interface.lisp create mode 100644 snark-20120808r02/src/sorts.abcl create mode 100644 snark-20120808r02/src/sorts.lisp create mode 100644 snark-20120808r02/src/sparse-array-system.lisp create mode 100644 snark-20120808r02/src/sparse-array.abcl create mode 100644 snark-20120808r02/src/sparse-array.lisp create mode 100644 snark-20120808r02/src/sparse-vector-expression.abcl create mode 100644 snark-20120808r02/src/sparse-vector-expression.lisp create mode 100644 snark-20120808r02/src/sparse-vector5.abcl create mode 100644 snark-20120808r02/src/sparse-vector5.lisp create mode 100644 snark-20120808r02/src/subst.abcl create mode 100644 snark-20120808r02/src/subst.lisp create mode 100644 snark-20120808r02/src/substitute.abcl create mode 100644 snark-20120808r02/src/substitute.lisp create mode 100644 snark-20120808r02/src/subsume-bag.abcl create mode 100644 snark-20120808r02/src/subsume-bag.lisp create mode 100644 snark-20120808r02/src/subsume-clause.abcl create mode 100644 snark-20120808r02/src/subsume-clause.lisp create mode 100644 snark-20120808r02/src/subsume.abcl create mode 100644 snark-20120808r02/src/subsume.lisp create mode 100644 snark-20120808r02/src/symbol-definitions.abcl create mode 100644 snark-20120808r02/src/symbol-definitions.lisp create mode 100644 snark-20120808r02/src/symbol-ordering.abcl create mode 100644 snark-20120808r02/src/symbol-ordering.lisp create mode 100644 snark-20120808r02/src/symbol-table2.abcl create mode 100644 snark-20120808r02/src/symbol-table2.lisp create mode 100644 snark-20120808r02/src/term-hash.abcl create mode 100644 snark-20120808r02/src/term-hash.lisp create mode 100644 snark-20120808r02/src/term-memory.abcl create mode 100644 snark-20120808r02/src/term-memory.lisp create mode 100644 snark-20120808r02/src/terms2.abcl create mode 100644 snark-20120808r02/src/terms2.lisp create mode 100644 snark-20120808r02/src/topological-sort.abcl create mode 100644 snark-20120808r02/src/topological-sort.lisp create mode 100644 snark-20120808r02/src/tptp-symbols.abcl create mode 100644 snark-20120808r02/src/tptp-symbols.lisp create mode 100644 snark-20120808r02/src/tptp.abcl create mode 100644 snark-20120808r02/src/tptp.lisp create mode 100644 snark-20120808r02/src/trie-index.abcl create mode 100644 snark-20120808r02/src/trie-index.lisp create mode 100644 snark-20120808r02/src/trie.abcl create mode 100644 snark-20120808r02/src/trie.lisp create mode 100644 snark-20120808r02/src/unify-bag.abcl create mode 100644 snark-20120808r02/src/unify-bag.lisp create mode 100644 snark-20120808r02/src/unify-vector.abcl create mode 100644 snark-20120808r02/src/unify-vector.lisp create mode 100644 snark-20120808r02/src/unify.abcl create mode 100644 snark-20120808r02/src/unify.lisp create mode 100644 snark-20120808r02/src/useful.abcl create mode 100644 snark-20120808r02/src/useful.lisp create mode 100644 snark-20120808r02/src/variables.abcl create mode 100644 snark-20120808r02/src/variables.lisp create mode 100644 snark-20120808r02/src/variant.abcl create mode 100644 snark-20120808r02/src/variant.lisp create mode 100644 snark-20120808r02/src/weight.abcl create mode 100644 snark-20120808r02/src/weight.lisp create mode 100644 snark-20120808r02/src/wffs.abcl create mode 100644 snark-20120808r02/src/wffs.lisp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6a215b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +planner.iml +.idea/compiler.xml +.idea/misc.xml +.idea/modules.xml +.idea/uiDesigner.xml +.idea/workspace.xml +.idea/libraries/Maven__com_beust_jcommander_1_27.xml +.idea/libraries/Maven__com_eclipsesource_j2v8_j2v8_linux_x86_64_3_0_2.xml +.idea/libraries/Maven__com_eclipsesource_j2v8_j2v8_macosx_x86_64_3_0_2.xml +.idea/libraries/Maven__com_eclipsesource_j2v8_j2v8_win32_x86_64_3_0_2.xml +.idea/libraries/Maven__com_kitfox_svg_svg_salamander_1_0.xml +.idea/libraries/Maven__guru_nidi_graphviz_java_0_0_2.xml +.idea/libraries/Maven__junit_junit_4_10.xml +.idea/libraries/Maven__logic_prover_0_09.xml +.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml +.idea/libraries/Maven__org_armedbear_lisp_abcl_1_0_1.xml +.idea/libraries/Maven__org_beanshell_bsh_2_0b4.xml +.idea/libraries/Maven__org_clojure_clojure_1_8_0.xml +.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml +.idea/libraries/Maven__org_json_json_20160212.xml +.idea/libraries/Maven__org_testng_testng_6_8.xml +.idea/libraries/Maven__org_yaml_snakeyaml_1_6.xml +.idea/libraries/Maven__us_bpsm_edn_java_0_5_0.xml +target/classes/edu/rpi/rair/Action.class +target/classes/edu/rpi/rair/completeness_problems.clj +target/classes/edu/rpi/rair/DepthFirstPlanner.class +target/classes/edu/rpi/rair/Goal.class +target/classes/edu/rpi/rair/GoalTracker.class +target/classes/edu/rpi/rair/Operations.class +target/classes/edu/rpi/rair/Plan.class +target/classes/edu/rpi/rair/Planner.class +target/classes/edu/rpi/rair/State.class +target/classes/edu/rpi/rair/utils/PlanningProblem.class +target/test-classes/edu/rpi/rair/DepthFirstPlannerTest.class diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d7191e8 --- /dev/null +++ b/pom.xml @@ -0,0 +1,36 @@ + + + 4.0.0 + + edu.rpi.rair + planner + 0.01 + + + + + + logic + prover + 0.09 + + + + org.testng + testng + 6.8 + test + + + + us.bpsm + edn-java + 0.5.0 + + + + + + \ No newline at end of file diff --git a/snark-20120808r02/INSTALL b/snark-20120808r02/INSTALL new file mode 100644 index 0000000..aff6738 --- /dev/null +++ b/snark-20120808r02/INSTALL @@ -0,0 +1,53 @@ +SNARK is run regularly in + Macintosh Common Lisp on Mac OS X + Steel Bank Common Lisp (SBCL) on Mac OS X + Clozure Common Lisp (CCL nee OpenMCL) on Mac OS X +and has been run in other ANSI Common Lisp systems + +After editing for the correct name and location of the SBCL Lisp system in the appropriate make-xxx file +a 32-bit executable of SNARK in SBCL named snark can be made by ./make-snark-sbcl; +a 64-bit executable of SNARK in SBCL named snark64 can be make by ./make-snark-sbcl64. + +After editing for the correct name and location of the CCL Lisp system in the appropriate make-xxx file +a 32-bit executable of SNARK in CCL named snark-ccl can be made by ./make-snark-ccl; +a 64-bit executable of SNARK in CCL named snark-ccl64 can be maded by ./make-snark-ccl64 + + + +Older detailed instructions: + +(replace "yyyymmdd" by the SNARK version date) + +Installing SNARK: + + tar xfz snark-yyyymmdd.tar.gz + cd snark-yyyymmdd + lisp + (load "snark-system.lisp") + (make-snark-system t) ;t specifies compilation + (make-snark-system t) ;compile again for more inlining (optional) + ;can use :optimize instead of t to compile for + ;higher speed at the expense of less error checking + (quit) + +Running SNARK: + + lisp + (load "snark-system.lisp") + (make-snark-system) ;loads SNARK files compiled above + : + +The lengthy load process in running SNARK can be eliminated +for CCL, SBCL, CMUCL, Allegro Common Lisp, or CLISP by doing + lisp + (load "snark-system.lisp") + (make-snark-system) + (save-snark-system) +after installing SNARK as above. +(save-snark-system) will print instructions for running +the resulting Lisp core image with SNARK preloaded. + +In the case of SBCL, (save-snark-system) can be replaced by +(save-snark-system :name "snark" :executable t) +to create a standalone SNARK executable. This is done +by the make-snark-sbcl and make-snark-sbcl64 scripts. diff --git a/snark-20120808r02/LICENSE b/snark-20120808r02/LICENSE new file mode 100644 index 0000000..7da89f9 --- /dev/null +++ b/snark-20120808r02/LICENSE @@ -0,0 +1,453 @@ + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is SNARK. + + The Initial Developer of the Original Code is SRI International. + Portions created by the Initial Developer are Copyright (C) 1981-2011. + All Rights Reserved. + + Contributor(s): Mark E. Stickel . diff --git a/snark-20120808r02/README b/snark-20120808r02/README new file mode 100644 index 0000000..172d903 --- /dev/null +++ b/snark-20120808r02/README @@ -0,0 +1,36 @@ +(replace "yyyymmdd" by the SNARK version date) + +Obtaining SNARK: + + SNARK can be downloaded from the SNARK web page + http://www.ai.sri.com/~stickel/snark.html + +See INSTALL file for installation instructions + +Running SNARK: + + lisp + (load "snark-system.lisp") + (make-snark-system) + : + +Examples: + + (overbeek-test) in overbeek-test.lisp + some standard theorem-proving examples, some time-consuming + + (steamroller-example) in steamroller-example.lisp + illustrates sorts + + (front-last-example) in front-last-example.lisp + illustrates program synthesis + + (reverse-example) in reverse-example.lisp + illustrates logic programming style usage + +A guide to SNARK has been written: + + http://www.ai.sri.com/snark/tutorial/tutorial.html + +but has not been updated yet to reflect changes in SNARK, +especially for temporal and spatial reasoning. diff --git a/snark-20120808r02/compile b/snark-20120808r02/compile new file mode 100644 index 0000000..59884f7 --- /dev/null +++ b/snark-20120808r02/compile @@ -0,0 +1,4 @@ +(load "snark-system.lisp") +(make-snark-system t) +(make-snark-system :optimize) +(quit) diff --git a/snark-20120808r02/examples/BOO002-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/BOO002-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..558a5c4 --- /dev/null +++ b/snark-20120808r02/examples/BOO002-1+rm_eq_rstfp.kif @@ -0,0 +1,47 @@ +;-------------------------------------------------------------------------- +; File : BOO002-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Boolean Algebra (Ternary) +; Problem : In B3 algebra, X * X^-1 * Y = Y +; Version : [OTTER] (equality) axioms : Reduced > Incomplete. +; English : + +; Refs : [LO85] Lusk & Overbeek (1985), Reasoning about Equality +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : Problem 5 [LO85] +; : CADE-11 Competition Eq-3 [Ove90] +; : THEOREM EQ-3 [LM93] +; : PROBLEM 3 [Zha93] + +; Status : unsatisfiable +; Rating : 0.33 v2.2.0, 0.43 v2.1.0, 0.38 v2.0.0 +; Syntax : Number of clauses : 5 ( 0 non-Horn; 5 unit; 1 RR) +; Number of literals : 5 ( 5 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 4 ( 2 constant; 0-3 arity) +; Number of variables : 11 ( 2 singleton) +; Maximal term depth : 3 ( 2 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp BOO002-1.p +;-------------------------------------------------------------------------- +; associativity, axiom. +(or (= (multiply (multiply ?A ?B ?C) ?D (multiply ?A ?B ?E)) (multiply ?A ?B (multiply ?C ?D ?E)))) + +; ternary_multiply_1, axiom. +(or (= (multiply ?A ?B ?B) ?B)) + +; ternary_multiply_2, axiom. +(or (= (multiply ?A ?A ?B) ?A)) + +; left_inverse, axiom. +(or (= (multiply (inverse ?A) ?A ?B) ?B)) + +; prove_equation, conjecture. +(or (/= (multiply a (inverse a) b) b)) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/COL003-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/COL003-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..edc3293 --- /dev/null +++ b/snark-20120808r02/examples/COL003-1+rm_eq_rstfp.kif @@ -0,0 +1,53 @@ +;-------------------------------------------------------------------------- +; File : COL003-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Combinatory Logic +; Problem : Strong fixed point for B and W +; Version : [WM88] (equality) axioms. +; English : The strong fixed point property holds for the set +; P consisting of the combinators B and W alone, where ((Bx)y)z +; = x(yz) and (Wx)y = (xy)y. + +; Refs : [Smu85] Smullyan (1978), To Mock a Mocking Bird and Other Logi +; : [MW87] McCune & Wos (1987), A Case Study in Automated Theorem +; : [WM88] Wos & McCune (1988), Challenge Problems Focusing on Eq +; : [Wos88] Wos (1988), Automated Reasoning - 33 Basic Research Pr +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [LW92] Lusk & Wos (1992), Benchmark Problems in Which Equalit +; : [Wos93] Wos (1993), The Kernel Strategy and Its Use for the St +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [WM88] +; Names : C2 [WM88] +; : Test Problem 17 [Wos88] +; : Sages and Combinatory Logic [Wos88] +; : CADE-11 Competition Eq-8 [Ove90] +; : CL2 [LW92] +; : THEOREM EQ-8 [LM93] +; : Question 3 [Wos93] +; : Question 5 [Wos93] +; : PROBLEM 8 [Zha93] + +; Status : unknown +; Rating : 1.00 v2.0.0 +; Syntax : Number of clauses : 3 ( 0 non-Horn; 3 unit; 1 RR) +; Number of literals : 3 ( 3 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 4 ( 2 constant; 0-2 arity) +; Number of variables : 6 ( 0 singleton) +; Maximal term depth : 4 ( 3 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp COL003-1.p +;-------------------------------------------------------------------------- +; b_definition, axiom. +(or (= (apply (apply (apply b ?A) ?B) ?C) (apply ?A (apply ?B ?C)))) + +; w_definition, axiom. +(or (= (apply (apply w ?A) ?B) (apply (apply ?A ?B) ?B))) + +; prove_strong_fixed_point, conjecture. +(or (/= (apply ?A (f ?A)) (apply (f ?A) (apply ?A (f ?A))))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/COL049-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/COL049-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..f9b2587 --- /dev/null +++ b/snark-20120808r02/examples/COL049-1+rm_eq_rstfp.kif @@ -0,0 +1,52 @@ +;-------------------------------------------------------------------------- +; File : COL049-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Combinatory Logic +; Problem : Strong fixed point for B, W, and M +; Version : [WM88] (equality) axioms. +; English : The strong fixed point property holds for the set +; P consisting of the combinators B, W, and M, where ((Bx)y)z +; = x(yz), (Wx)y = (xy)y, Mx = xx. + +; Refs : [Smu85] Smullyan (1978), To Mock a Mocking Bird and Other Logi +; : [MW87] McCune & Wos (1987), A Case Study in Automated Theorem +; : [WM88] Wos & McCune (1988), Challenge Problems Focusing on Eq +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [LW92] Lusk & Wos (1992), Benchmark Problems in Which Equalit +; : [Wos93] Wos (1993), The Kernel Strategy and Its Use for the St +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : Problem 2 [WM88] +; : CADE-11 Competition Eq-6 [Ove90] +; : CL1 [LW92] +; : THEOREM EQ-6 [LM93] +; : Question 2 [Wos93] +; : PROBLEM 6 [Zha93] + +; Status : unsatisfiable +; Rating : 0.22 v2.2.0, 0.14 v2.1.0, 0.62 v2.0.0 +; Syntax : Number of clauses : 4 ( 0 non-Horn; 4 unit; 1 RR) +; Number of literals : 4 ( 4 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 5 ( 3 constant; 0-2 arity) +; Number of variables : 7 ( 0 singleton) +; Maximal term depth : 4 ( 3 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp COL049-1.p +;-------------------------------------------------------------------------- +; b_definition, axiom. +(or (= (apply (apply (apply b ?A) ?B) ?C) (apply ?A (apply ?B ?C)))) + +; w_definition, axiom. +(or (= (apply (apply w ?A) ?B) (apply (apply ?A ?B) ?B))) + +; m_definition, axiom. +(or (= (apply m ?A) (apply ?A ?A))) + +; prove_strong_fixed_point, conjecture. +(or (/= (apply ?A (f ?A)) (apply (f ?A) (apply ?A (f ?A))))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/GRP001-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/GRP001-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..f99f349 --- /dev/null +++ b/snark-20120808r02/examples/GRP001-1+rm_eq_rstfp.kif @@ -0,0 +1,78 @@ +;-------------------------------------------------------------------------- +; File : GRP001-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Group Theory +; Problem : X^2 = identity => commutativity +; Version : [MOW76] axioms. +; English : If the square of every element is the identity, the system +; is commutative. + +; Refs : [Rob63] Robinson (1963), Theorem Proving on the Computer +; : [Wos65] Wos (1965), Unpublished Note +; : [MOW76] McCharen et al. (1976), Problems and Experiments for a +; : [WM76] Wilson & Minker (1976), Resolution, Refinements, and S +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; Source : [MOW76] +; Names : - [Rob63] +; : wos10 [WM76] +; : G1 [MOW76] +; : CADE-11 Competition 1 [Ove90] +; : THEOREM 1 [LM93] +; : xsquared.ver1.in [ANL] + +; Status : unsatisfiable +; Rating : 0.00 v2.0.0 +; Syntax : Number of clauses : 11 ( 0 non-Horn; 8 unit; 5 RR) +; Number of literals : 19 ( 1 equality) +; Maximal clause size : 4 ( 1 average) +; Number of predicates : 2 ( 0 propositional; 2-3 arity) +; Number of functors : 6 ( 4 constant; 0-2 arity) +; Number of variables : 23 ( 0 singleton) +; Maximal term depth : 2 ( 1 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp GRP001-1.p +;-------------------------------------------------------------------------- +; left_identity, axiom. +(or (product identity ?A ?A)) + +; right_identity, axiom. +(or (product ?A identity ?A)) + +; left_inverse, axiom. +(or (product (inverse ?A) ?A identity)) + +; right_inverse, axiom. +(or (product ?A (inverse ?A) identity)) + +; total_function1, axiom. +(or (product ?A ?B (multiply ?A ?B))) + +; total_function2, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?A ?B ?D)) + (= ?C ?D)) + +; associativity1, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?B ?D ?E)) + (not (product ?C ?D ?F)) + (product ?A ?E ?F)) + +; associativity2, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?B ?D ?E)) + (not (product ?A ?E ?F)) + (product ?C ?D ?F)) + +; square_element, hypothesis. +(or (product ?A ?A identity)) + +; a_times_b_is_c, hypothesis. +(or (product a b c)) + +; prove_b_times_a_is_c, conjecture. +(or (not (product b a c))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/GRP002-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/GRP002-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..650f6e8 --- /dev/null +++ b/snark-20120808r02/examples/GRP002-1+rm_eq_rstfp.kif @@ -0,0 +1,98 @@ +;-------------------------------------------------------------------------- +; File : GRP002-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Group Theory +; Problem : Commutator equals identity in groups of order 3 +; Version : [MOW76] axioms. +; English : In a group, if (for all x) the cube of x is the identity +; (i.e. a group of order 3), then the equation [[x,y],y]= +; identity holds, where [x,y] is the product of x, y, the +; inverse of x and the inverse of y (i.e. the commutator +; of x and y). + +; Refs : [MOW76] McCharen et al. (1976), Problems and Experiments for a +; : [OMW76] Overbeek et al. (1976), Complexity and Related Enhance +; : [Wos88] Wos (1988), Automated Reasoning - 33 Basic Research Pr +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; Source : [MOW76] +; Names : G6 [MOW76] +; : Theorem 1 [OMW76] +; : Test Problem 2 [Wos88] +; : Commutator Theorem [Wos88] +; : CADE-11 Competition 2 [Ove90] +; : THEOREM 2 [LM93] +; : commutator.ver1.in [ANL] + +; Status : unsatisfiable +; Rating : 0.67 v2.2.0, 0.71 v2.1.0, 1.00 v2.0.0 +; Syntax : Number of clauses : 16 ( 0 non-Horn; 11 unit; 11 RR) +; Number of literals : 26 ( 1 equality) +; Maximal clause size : 4 ( 1 average) +; Number of predicates : 2 ( 0 propositional; 2-3 arity) +; Number of functors : 10 ( 8 constant; 0-2 arity) +; Number of variables : 26 ( 0 singleton) +; Maximal term depth : 2 ( 1 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp GRP002-1.p +;-------------------------------------------------------------------------- +; left_identity, axiom. +(or (product identity ?A ?A)) + +; right_identity, axiom. +(or (product ?A identity ?A)) + +; left_inverse, axiom. +(or (product (inverse ?A) ?A identity)) + +; right_inverse, axiom. +(or (product ?A (inverse ?A) identity)) + +; total_function1, axiom. +(or (product ?A ?B (multiply ?A ?B))) + +; total_function2, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?A ?B ?D)) + (= ?C ?D)) + +; associativity1, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?B ?D ?E)) + (not (product ?C ?D ?F)) + (product ?A ?E ?F)) + +; associativity2, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?B ?D ?E)) + (not (product ?A ?E ?F)) + (product ?C ?D ?F)) + +; x_cubed_is_identity_1, hypothesis. +(or (not (product ?A ?A ?B)) + (product ?A ?B identity)) + +; x_cubed_is_identity_2, hypothesis. +(or (not (product ?A ?A ?B)) + (product ?B ?A identity)) + +; a_times_b_is_c, conjecture. +(or (product a b c)) + +; c_times_inverse_a_is_d, conjecture. +(or (product c (inverse a) d)) + +; d_times_inverse_b_is_h, conjecture. +(or (product d (inverse b) h)) + +; h_times_b_is_j, conjecture. +(or (product h b j)) + +; j_times_inverse_h_is_k, conjecture. +(or (product j (inverse h) k)) + +; prove_k_times_inverse_b_is_e, conjecture. +(or (not (product k (inverse b) identity))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/GRP002-3+rm_eq_rstfp.kif b/snark-20120808r02/examples/GRP002-3+rm_eq_rstfp.kif new file mode 100644 index 0000000..e1ec0f8 --- /dev/null +++ b/snark-20120808r02/examples/GRP002-3+rm_eq_rstfp.kif @@ -0,0 +1,53 @@ +;-------------------------------------------------------------------------- +; File : GRP002-3 : TPTP v2.2.0. Released v1.0.0. +; Domain : Group Theory +; Problem : Commutator equals identity in groups of order 3 +; Version : [Ove90] (equality) axioms : Incomplete. +; English : In a group, if (for all x) the cube of x is the identity +; (i.e. a group of order 3), then the equation [[x,y],y]= +; identity holds, where [x,y] is the product of x, y, the +; inverse of x and the inverse of y (i.e. the commutator +; of x and y). + +; Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : CADE-11 Competition Eq-1 [Ove90] +; : THEOREM EQ-1 [LM93] +; : PROBLEM 1 [Zha93] +; : comm.in [OTTER] + +; Status : unsatisfiable +; Rating : 0.33 v2.2.0, 0.43 v2.1.0, 0.25 v2.0.0 +; Syntax : Number of clauses : 6 ( 0 non-Horn; 6 unit; 1 RR) +; Number of literals : 6 ( 6 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 6 ( 3 constant; 0-2 arity) +; Number of variables : 8 ( 0 singleton) +; Maximal term depth : 5 ( 2 average) + +; Comments : Uses an explicit formulation of the commutator. +; : tptp2X -f kif -t rm_equality:rstfp GRP002-3.p +;-------------------------------------------------------------------------- +; left_identity, axiom. +(or (= (multiply identity ?A) ?A)) + +; left_inverse, axiom. +(or (= (multiply (inverse ?A) ?A) identity)) + +; associativity, axiom. +(or (= (multiply (multiply ?A ?B) ?C) (multiply ?A (multiply ?B ?C)))) + +; commutator, axiom. +(or (= (commutator ?A ?B) (multiply ?A (multiply ?B (multiply (inverse ?A) (inverse ?B)))))) + +; x_cubed_is_identity, hypothesis. +(or (= (multiply ?A (multiply ?A ?A)) identity)) + +; prove_commutator, conjecture. +(or (/= (commutator (commutator a b) b) identity)) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/GRP014-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/GRP014-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..8b863e8 --- /dev/null +++ b/snark-20120808r02/examples/GRP014-1+rm_eq_rstfp.kif @@ -0,0 +1,38 @@ +;-------------------------------------------------------------------------- +; File : GRP014-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Group Theory +; Problem : Product is associative in this group theory +; Version : [Ove90] (equality) axioms : Incomplete. +; English : The group theory specified by the axiom given implies the +; associativity of multiply. + +; Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : CADE-11 Competition Eq-4 [Ove90] +; : THEOREM EQ-4 [LM93] +; : PROBLEM 4 [Zha93] + +; Status : unsatisfiable +; Rating : 0.33 v2.2.0, 0.43 v2.1.0, 0.50 v2.0.0 +; Syntax : Number of clauses : 2 ( 0 non-Horn; 2 unit; 1 RR) +; Number of literals : 2 ( 2 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 5 ( 3 constant; 0-2 arity) +; Number of variables : 4 ( 0 singleton) +; Maximal term depth : 9 ( 4 average) + +; Comments : The group_axiom is in fact a single axiom for group theory +; [LM93]. +; : tptp2X -f kif -t rm_equality:rstfp GRP014-1.p +;-------------------------------------------------------------------------- +; group_axiom, axiom. +(or (= (multiply ?A (inverse (multiply (multiply (inverse (multiply (inverse ?B) (multiply (inverse ?A) ?C))) ?D) (inverse (multiply ?B ?D))))) ?C)) + +; prove_associativity, conjecture. +(or (/= (multiply a (multiply b c)) (multiply (multiply a b) c))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/LCL024-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/LCL024-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..5cbf043 --- /dev/null +++ b/snark-20120808r02/examples/LCL024-1+rm_eq_rstfp.kif @@ -0,0 +1,44 @@ +;-------------------------------------------------------------------------- +; File : LCL024-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Logic Calculi (Equivalential) +; Problem : PYO depends on XGK +; Version : [Ove90] axioms. +; English : Show that Kalman's shortest single axiom for the +; equivalential calculus, XGK, can be derived from the Meredith +; single axiom PYO. + +; Refs : [Wos88] Wos (1988), Automated Reasoning - 33 Basic Research Pr +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; Source : [Ove90] +; Names : Test Problem 16 [Wos88] +; : XGK and Equivalential Calculus [Wos88] +; : CADE-11 Competition 4 [Ove90] +; : THEOREM 4 [LM93] + +; Status : unsatisfiable +; Rating : 0.78 v2.2.0, 0.89 v2.1.0, 0.75 v2.0.0 +; Syntax : Number of clauses : 3 ( 0 non-Horn; 2 unit; 2 RR) +; Number of literals : 5 ( 0 equality) +; Maximal clause size : 3 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 1-1 arity) +; Number of functors : 4 ( 3 constant; 0-2 arity) +; Number of variables : 5 ( 0 singleton) +; Maximal term depth : 5 ( 2 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp LCL024-1.p +;-------------------------------------------------------------------------- +; condensed_detachment, axiom. +(or (not (is_a_theorem (equivalent ?A ?B))) + (not (is_a_theorem ?A)) + (is_a_theorem ?B)) + +; prove_xgk, axiom. +(or (is_a_theorem (equivalent ?A (equivalent (equivalent ?B (equivalent ?C ?A)) (equivalent ?C ?B))))) + +; prove_pyo, conjecture. +(or (not (is_a_theorem (equivalent (equivalent (equivalent a (equivalent b c)) c) (equivalent b a))))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/LCL038-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/LCL038-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..39b99ef --- /dev/null +++ b/snark-20120808r02/examples/LCL038-1+rm_eq_rstfp.kif @@ -0,0 +1,42 @@ +;-------------------------------------------------------------------------- +; File : LCL038-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Logic Calculi (Implication/Falsehood 2 valued sentential) +; Problem : C0-1 depends on a single axiom +; Version : [McC92] axioms. +; English : An axiomatisation for the Implication/Falsehood 2 valued +; sentential calculus is {C0-1,C0-2,C0-3,C0-4} +; by Tarski-Bernays. Show that C0-1 can be derived from this +; suspected single axiom. + +; Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; Source : [Ove90] +; Names : CADE-11 Competition 5 [Ove90] +; : THEOREM 5 [LM93] + +; Status : unsatisfiable +; Rating : 0.89 v2.2.0, 1.00 v2.0.0 +; Syntax : Number of clauses : 3 ( 0 non-Horn; 2 unit; 2 RR) +; Number of literals : 5 ( 0 equality) +; Maximal clause size : 3 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 1-1 arity) +; Number of functors : 4 ( 3 constant; 0-2 arity) +; Number of variables : 6 ( 2 singleton) +; Maximal term depth : 4 ( 2 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp LCL038-1.p +;-------------------------------------------------------------------------- +; condensed_detachment, axiom. +(or (not (is_a_theorem (implies ?A ?B))) + (not (is_a_theorem ?A)) + (is_a_theorem ?B)) + +; single_axiom, axiom. +(or (is_a_theorem (implies (implies (implies ?A ?B) ?C) (implies (implies ?C ?A) (implies ?D ?A))))) + +; prove_c0_1, conjecture. +(or (not (is_a_theorem (implies (implies a b) (implies (implies b c) (implies a c)))))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/LCL109-2+rm_eq_rstfp.kif b/snark-20120808r02/examples/LCL109-2+rm_eq_rstfp.kif new file mode 100644 index 0000000..be3990f --- /dev/null +++ b/snark-20120808r02/examples/LCL109-2+rm_eq_rstfp.kif @@ -0,0 +1,54 @@ +;-------------------------------------------------------------------------- +; File : LCL109-2 : TPTP v2.2.0. Released v1.0.0. +; Domain : Logic Calculi (Many valued sentential) +; Problem : MV-4 depends on the Merideth system +; Version : [Ove90] axioms. +; Theorem formulation : Wajsberg algebra formulation. +; English : An axiomatisation of the many valued sentential calculus +; is {MV-1,MV-2,MV-3,MV-5} by Meredith. Wajsberg provided +; a different axiomatisation. Show that MV-4 depends on the +; Wajsberg system. + +; Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [LM92] Lusk & McCune (1992), Experiments with ROO, a Parallel +; : [LW92] Lusk & Wos (1992), Benchmark Problems in Which Equalit +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : CADE-11 Competition Eq-5 [Ove90] +; : Luka-5 [LM92] +; : MV4 [LW92] +; : THEOREM EQ-5 [LM93] +; : PROBLEM 5 [Zha93] + +; Status : unsatisfiable +; Rating : 0.56 v2.2.0, 0.71 v2.1.0, 1.00 v2.0.0 +; Syntax : Number of clauses : 5 ( 0 non-Horn; 5 unit; 1 RR) +; Number of literals : 5 ( 5 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 5 ( 3 constant; 0-2 arity) +; Number of variables : 8 ( 0 singleton) +; Maximal term depth : 4 ( 2 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp LCL109-2.p +; ; 'true' renamed to 'true0' - MES +;-------------------------------------------------------------------------- +; wajsberg_1, axiom. +(or (= (implies true0 ?A) ?A)) + +; wajsberg_2, axiom. +(or (= (implies (implies ?A ?B) (implies (implies ?B ?C) (implies ?A ?C))) true0)) + +; wajsberg_3, axiom. +(or (= (implies (implies ?A ?B) ?B) (implies (implies ?B ?A) ?A))) + +; wajsberg_4, axiom. +(or (= (implies (implies (not ?A) (not ?B)) (implies ?B ?A)) true0)) + +; prove_wajsberg_mv_4, conjecture. +(or (/= (implies (implies (implies a b) (implies b a)) (implies b a)) true0)) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/LCL111-1.tptp b/snark-20120808r02/examples/LCL111-1.tptp new file mode 100644 index 0000000..19ad2e8 --- /dev/null +++ b/snark-20120808r02/examples/LCL111-1.tptp @@ -0,0 +1,55 @@ +%------------------------------------------------------------------------------ +% File : LCL111-1 : TPTP v3.0.0. Released v1.0.0. +% Domain : Logic Calculi (Many valued sentential) +% Problem : MV-25 depends on the Merideth system +% Version : [McC92] axioms. +% English : An axiomatisation of the many valued sentential calculus +% is {MV-1,MV-2,MV-3,MV-5} by Meredith. Show that MV-25 depends +% on the Meredith system. + +% Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +% : [MW92] McCune & Wos (1992), Experiments in Automated Deductio +% : [McC92] McCune (1992), Email to G. Sutcliffe +% : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +% : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +% Source : [McC92] +% Names : CADE-11 Competition 6 [Ove90] +% : MV-57 [MW92] +% : THEOREM 6 [LM93] +% : mv.in part 2 [OTTER] +% : mv25.in [OTTER] +% : ovb6 [SETHEO] + +% Status : Unsatisfiable +% Rating : 0.00 v2.4.0, 0.43 v2.3.0, 0.14 v2.2.1, 0.11 v2.2.0, 0.22 v2.1.0, 0.25 v2.0.0 +% Syntax : Number of clauses : 6 ( 0 non-Horn; 5 unit; 2 RR) +% Number of atoms : 8 ( 0 equality) +% Maximal clause size : 3 ( 1 average) +% Number of predicates : 1 ( 0 propositional; 1-1 arity) +% Number of functors : 5 ( 3 constant; 0-2 arity) +% Number of variables : 11 ( 1 singleton) +% Maximal term depth : 4 ( 3 average) + +% Comments : +% : tptp2X -f tptp:short LCL111-1.p +%------------------------------------------------------------------------------ +cnf(condensed_detachment,axiom,( + ~ is_a_theorem(implies(X,Y)) + | ~ is_a_theorem(X) + | is_a_theorem(Y) )). + +cnf(mv_1,axiom,( + is_a_theorem(implies(X,implies(Y,X))) )). + +cnf(mv_2,axiom,( + is_a_theorem(implies(implies(X,Y),implies(implies(Y,Z),implies(X,Z)))) )). + +cnf(mv_3,axiom,( + is_a_theorem(implies(implies(implies(X,Y),Y),implies(implies(Y,X),X))) )). + +cnf(mv_5,axiom,( + is_a_theorem(implies(implies(not(X),not(Y)),implies(Y,X))) )). + +cnf(prove_mv_25,negated_conjecture,( + ~ is_a_theorem(implies(implies(a,b),implies(implies(c,a),implies(c,b)))) )). +%------------------------------------------------------------------------------ diff --git a/snark-20120808r02/examples/LCL114-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/LCL114-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..0b064da --- /dev/null +++ b/snark-20120808r02/examples/LCL114-1+rm_eq_rstfp.kif @@ -0,0 +1,53 @@ +;-------------------------------------------------------------------------- +; File : LCL114-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Logic Calculi (Many valued sentential) +; Problem : MV-36 depnds on the Merideth system +; Version : [McC92] axioms. +; English : An axiomatisation of the many valued sentential calculus +; is {MV-1,MV-2,MV-3,MV-5} by Meredith. Show that 36 depends +; on the Meredith system. + +; Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [MW92] McCune & Wos (1992), Experiments in Automated Deductio +; : [McC92] McCune (1992), Email to G. Sutcliffe +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; Source : [McC92] +; Names : CADE-11 Competition 7 [Ove90] +; : MV-60 [MW92] +; : THEOREM 7 [LM93] + +; Status : unsatisfiable +; Rating : 0.89 v2.1.0, 0.88 v2.0.0 +; Syntax : Number of clauses : 6 ( 0 non-Horn; 5 unit; 2 RR) +; Number of literals : 8 ( 0 equality) +; Maximal clause size : 3 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 1-1 arity) +; Number of functors : 4 ( 2 constant; 0-2 arity) +; Number of variables : 11 ( 1 singleton) +; Maximal term depth : 4 ( 2 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp LCL114-1.p +;-------------------------------------------------------------------------- +; condensed_detachment, axiom. +(or (not (is_a_theorem (implies ?A ?B))) + (not (is_a_theorem ?A)) + (is_a_theorem ?B)) + +; mv_1, axiom. +(or (is_a_theorem (implies ?A (implies ?B ?A)))) + +; mv_2, axiom. +(or (is_a_theorem (implies (implies ?A ?B) (implies (implies ?B ?C) (implies ?A ?C))))) + +; mv_3, axiom. +(or (is_a_theorem (implies (implies (implies ?A ?B) ?B) (implies (implies ?B ?A) ?A)))) + +; mv_5, axiom. +(or (is_a_theorem (implies (implies (not ?A) (not ?B)) (implies ?B ?A)))) + +; prove_mv_36, conjecture. +(or (not (is_a_theorem (implies (implies a b) (implies (not b) (not a)))))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/PUZ031+1.kif b/snark-20120808r02/examples/PUZ031+1.kif new file mode 100644 index 0000000..0e451e4 --- /dev/null +++ b/snark-20120808r02/examples/PUZ031+1.kif @@ -0,0 +1,155 @@ +;-------------------------------------------------------------------------- +; File : PUZ031+1 : TPTP v2.2.0. Released v2.0.0. +; Domain : Puzzles +; Problem : Schubert's Steamroller +; Version : Especial. +; English : Wolves, foxes, birds, caterpillars, and snails are animals, and +; there are some of each of them. Also there are some grains, and +; grains are plants. Every animal either likes to eat all plants +; or all animals much smaller than itself that like to eat some +; plants. Caterpillars and snails are much smaller than birds, +; which are much smaller than foxes, which in turn are much +; smaller than wolves. Wolves do not like to eat foxes or grains, +; while birds like to eat caterpillars but not snails. +; Caterpillars and snails like to eat some plants. Therefore +; there is an animal that likes to eat a grain eating animal. + +; Refs : [Pel86] Pelletier (1986), Seventy-five Problems for Testing Au +; : [Hah94] Haehnle (1994), Email to G. Sutcliffe +; Source : [Hah94] +; Names : Pelletier 47 [Pel86] + +; Status : theorem +; Rating : 0.00 v2.1.0 +; Syntax : Number of formulae : 21 ( 6 unit) +; Number of atoms : 55 ( 0 equality) +; Maximal formula depth : 9 ( 3 average) +; Number of connectives : 36 ( 2 ~ ; 4 |; 14 &) +; ( 0 <=>; 16 =>; 0 <=) +; ( 0 <~>; 0 ~|; 0 ~&) +; Number of predicates : 10 ( 0 propositional; 1-2 arity) +; Number of functors : 0 ( 0 constant; --- arity) +; Number of variables : 33 ( 0 singleton; 22 !; 11 ?) +; Maximal term depth : 1 ( 1 average) + +; Comments : This problem is named after Len Schubert. +; : tptp2X -f kif PUZ031+1.p +;-------------------------------------------------------------------------- +; pel47_1_1, axiom. + (forall (?A) + (=> (wolf ?A) + (animal ?A) ) ) + +; pel47_1_2, axiom. + (exists (?A)(wolf ?A) ) + +; pel47_2_1, axiom. + (forall (?A) + (=> (fox ?A) + (animal ?A) ) ) + +; pel47_2_2, axiom. + (exists (?A)(fox ?A) ) + +; pel47_3_1, axiom. + (forall (?A) + (=> (bird ?A) + (animal ?A) ) ) + +; pel47_3_2, axiom. + (exists (?A)(bird ?A) ) + +; pel47_4_1, axiom. + (forall (?A) + (=> (caterpillar ?A) + (animal ?A) ) ) + +; pel47_4_2, axiom. + (exists (?A)(caterpillar ?A) ) + +; pel47_5_1, axiom. + (forall (?A) + (=> (snail ?A) + (animal ?A) ) ) + +; pel47_5_2, axiom. + (exists (?A)(snail ?A) ) + +; pel47_6_1, axiom. + (exists (?A)(grain ?A) ) + +; pel47_6_2, axiom. + (forall (?A) + (=> (grain ?A) + (plant ?A) ) ) + +; pel47_7, axiom. + (forall (?A) + (=> (animal ?A) + (or (forall (?B) + (=> (plant ?B) + (eats ?A ?B) ) ) + (forall (?C) + (=> (and (and (animal ?C) + (much_smaller ?C ?A) ) + (exists (?D) + (and (plant ?D) + (eats ?C ?D) ) ) ) + (eats ?A ?C) ) ) ) ) ) + +; pel47_8, axiom. + (forall (?A ?B) + (=> (and (bird ?B) + (or (snail ?A) + (caterpillar ?A) ) ) + (much_smaller ?A ?B) ) ) + +; pel47_9, axiom. + (forall (?A ?B) + (=> (and (bird ?A) + (fox ?B) ) + (much_smaller ?A ?B) ) ) + +; pel47_10, axiom. + (forall (?A ?B) + (=> (and (fox ?A) + (wolf ?B) ) + (much_smaller ?A ?B) ) ) + +; pel47_11, axiom. + (forall (?A ?B) + (=> (and (wolf ?A) + (or (fox ?B) + (grain ?B) ) ) + (not (eats ?A ?B) ) ) ) + +; pel47_12, axiom. + (forall (?A ?B) + (=> (and (bird ?A) + (caterpillar ?B) ) + (eats ?A ?B) ) ) + +; pel47_13, axiom. + (forall (?A ?B) + (=> (and (bird ?A) + (snail ?B) ) + (not (eats ?A ?B) ) ) ) + +; pel47_14, axiom. + (forall (?A) + (=> (or (caterpillar ?A) + (snail ?A) ) + (exists (?B) + (and (plant ?B) + (eats ?A ?B) ) ) ) ) + +; pel47, conjecture. + (not (exists (?A ?B) + (and (and (animal ?A) + (animal ?B) ) + (exists (?C) + (and (and (grain ?C) + (eats ?B ?C) ) + (eats ?A ?B) ) ) ) ) ) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/RNG008-6+rm_eq_rstfp.kif b/snark-20120808r02/examples/RNG008-6+rm_eq_rstfp.kif new file mode 100644 index 0000000..7bf412e --- /dev/null +++ b/snark-20120808r02/examples/RNG008-6+rm_eq_rstfp.kif @@ -0,0 +1,129 @@ +;-------------------------------------------------------------------------- +; File : RNG008-6 : TPTP v2.2.0. Released v1.0.0. +; Domain : Ring Theory +; Problem : Boolean rings are commutative +; Version : [MOW76] axioms : Augmented. +; English : Given a ring in which for all x, x * x = x, prove that for +; all x and y, x * y = y * x. + +; Refs : [MOW76] McCharen et al. (1976), Problems and Experiments for a +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; Source : [Ove90] +; Names : CADE-11 Competition 3 [Ove90] +; : THEOREM 3 [LM93] + +; Status : unsatisfiable +; Rating : 0.67 v2.2.0, 0.71 v2.1.0, 0.75 v2.0.0 +; Syntax : Number of clauses : 22 ( 0 non-Horn; 11 unit; 13 RR) +; Number of literals : 55 ( 2 equality) +; Maximal clause size : 5 ( 2 average) +; Number of predicates : 3 ( 0 propositional; 2-3 arity) +; Number of functors : 7 ( 4 constant; 0-2 arity) +; Number of variables : 74 ( 2 singleton) +; Maximal term depth : 2 ( 1 average) + +; Comments : Supplies multiplication to identity as lemmas +; : tptp2X -f kif -t rm_equality:rstfp RNG008-6.p +;-------------------------------------------------------------------------- +; additive_identity1, axiom. +(or (sum additive_identity ?A ?A)) + +; additive_identity2, axiom. +(or (sum ?A additive_identity ?A)) + +; closure_of_multiplication, axiom. +(or (product ?A ?B (multiply ?A ?B))) + +; closure_of_addition, axiom. +(or (sum ?A ?B (add ?A ?B))) + +; left_inverse, axiom. +(or (sum (additive_inverse ?A) ?A additive_identity)) + +; right_inverse, axiom. +(or (sum ?A (additive_inverse ?A) additive_identity)) + +; associativity_of_addition1, axiom. +(or (not (sum ?A ?B ?C)) + (not (sum ?B ?D ?E)) + (not (sum ?C ?D ?F)) + (sum ?A ?E ?F)) + +; associativity_of_addition2, axiom. +(or (not (sum ?A ?B ?C)) + (not (sum ?B ?D ?E)) + (not (sum ?A ?E ?F)) + (sum ?C ?D ?F)) + +; commutativity_of_addition, axiom. +(or (not (sum ?A ?B ?C)) + (sum ?B ?A ?C)) + +; associativity_of_multiplication1, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?B ?D ?E)) + (not (product ?C ?D ?F)) + (product ?A ?E ?F)) + +; associativity_of_multiplication2, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?B ?D ?E)) + (not (product ?A ?E ?F)) + (product ?C ?D ?F)) + +; distributivity1, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?A ?D ?E)) + (not (sum ?B ?D ?F)) + (not (product ?A ?F ?G)) + (sum ?C ?E ?G)) + +; distributivity2, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?A ?D ?E)) + (not (sum ?B ?D ?F)) + (not (sum ?C ?E ?G)) + (product ?A ?F ?G)) + +; distributivity3, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?D ?B ?E)) + (not (sum ?A ?D ?F)) + (not (product ?F ?B ?G)) + (sum ?C ?E ?G)) + +; distributivity4, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?D ?B ?E)) + (not (sum ?A ?D ?F)) + (not (sum ?C ?E ?G)) + (product ?F ?B ?G)) + +; addition_is_well_defined, axiom. +(or (not (sum ?A ?B ?C)) + (not (sum ?A ?B ?D)) + (= ?C ?D)) + +; multiplication_is_well_defined, axiom. +(or (not (product ?A ?B ?C)) + (not (product ?A ?B ?D)) + (= ?C ?D)) + +; x_times_identity_x_is_identity, axiom. +(or (product ?A additive_identity additive_identity)) + +; identity_times_x_is_identity, axiom. +(or (product additive_identity ?A additive_identity)) + +; x_squared_is_x, hypothesis. +(or (product ?A ?A ?A)) + +; a_times_b_is_c, hypothesis. +(or (product a b c)) + +; prove_b_times_a_is_c, conjecture. +(or (not (product b a c))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/RNG009-5+rm_eq_rstfp.kif b/snark-20120808r02/examples/RNG009-5+rm_eq_rstfp.kif new file mode 100644 index 0000000..a15f09e --- /dev/null +++ b/snark-20120808r02/examples/RNG009-5+rm_eq_rstfp.kif @@ -0,0 +1,60 @@ +;-------------------------------------------------------------------------- +; File : RNG009-5 : TPTP v2.2.0. Released v1.0.0. +; Domain : Ring Theory +; Problem : If X*X*X = X then the ring is commutative +; Version : [Peterson & Stickel,1981] (equality) axioms : +; Reduced > Incomplete. +; English : Given a ring in which for all x, x * x * x = x, prove that +; for all x and y, x * y = y * x. + +; Refs : [PS81] Peterson & Stickel (1981), Complete Sets of Reductions +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : CADE-11 Competition Eq-7 [Ove90] +; : THEOREM EQ-7 [LM93] +; : PROBLEM 7 [Zha93] + +; Status : unsatisfiable +; Rating : 0.67 v2.2.0, 0.71 v2.1.0, 1.00 v2.0.0 +; Syntax : Number of clauses : 9 ( 0 non-Horn; 9 unit; 1 RR) +; Number of literals : 9 ( 9 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 6 ( 3 constant; 0-2 arity) +; Number of variables : 17 ( 0 singleton) +; Maximal term depth : 3 ( 2 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp RNG009-5.p +;-------------------------------------------------------------------------- +; right_identity, axiom. +(or (= (add ?A additive_identity) ?A)) + +; right_additive_inverse, axiom. +(or (= (add ?A (additive_inverse ?A)) additive_identity)) + +; distribute1, axiom. +(or (= (multiply ?A (add ?B ?C)) (add (multiply ?A ?B) (multiply ?A ?C)))) + +; distribute2, axiom. +(or (= (multiply (add ?A ?B) ?C) (add (multiply ?A ?C) (multiply ?B ?C)))) + +; associative_addition, axiom. +(or (= (add (add ?A ?B) ?C) (add ?A (add ?B ?C)))) + +; commutative_addition, axiom. +(or (= (add ?A ?B) (add ?B ?A))) + +; associative_multiplication, axiom. +(or (= (multiply (multiply ?A ?B) ?C) (multiply ?A (multiply ?B ?C)))) + +; x_cubed_is_x, hypothesis. +(or (= (multiply ?A (multiply ?A ?A)) ?A)) + +; prove_commutativity, conjecture. +(or (/= (multiply a b) (multiply b a))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/RNG010-5+rm_eq_rstfp.kif b/snark-20120808r02/examples/RNG010-5+rm_eq_rstfp.kif new file mode 100644 index 0000000..a2f2f71 --- /dev/null +++ b/snark-20120808r02/examples/RNG010-5+rm_eq_rstfp.kif @@ -0,0 +1,117 @@ +;-------------------------------------------------------------------------- +; File : RNG010-5 : TPTP v2.2.0. Released v1.0.0. +; Domain : Ring Theory (Right alternative) +; Problem : Skew symmetry of the auxilliary function +; Version : [Ove90] (equality) axioms : +; Incomplete > Augmented > Incomplete. +; English : The three Moufang identities imply the skew symmetry +; of s(W,X,Y,Z) = (W*X,Y,Z) - X*(W,Y,Z) - (X,Y,Z)*W. +; Recall that skew symmetry means that the function sign +; changes when any two arguments are swapped. This problem +; proves the case for swapping the first two arguments. + +; Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : CADE-11 Competition Eq-9 [Ove90] +; : THEOREM EQ-9 [LM93] +; : PROBLEM 9 [Zha93] + +; Status : unknown +; Rating : 1.00 v2.0.0 +; Syntax : Number of clauses : 27 ( 0 non-Horn; 27 unit; 2 RR) +; Number of literals : 27 ( 27 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 11 ( 5 constant; 0-4 arity) +; Number of variables : 52 ( 2 singleton) +; Maximal term depth : 6 ( 2 average) + +; Comments : I copied this directly. I think the Moufang identities may +; be wrong. At least they're in another form. +; : tptp2X -f kif -t rm_equality:rstfp RNG010-5.p +;-------------------------------------------------------------------------- +; commutative_addition, axiom. +(or (= (add ?A ?B) (add ?B ?A))) + +; associative_addition, axiom. +(or (= (add (add ?A ?B) ?C) (add ?A (add ?B ?C)))) + +; right_identity, axiom. +(or (= (add ?A additive_identity) ?A)) + +; left_identity, axiom. +(or (= (add additive_identity ?A) ?A)) + +; right_additive_inverse, axiom. +(or (= (add ?A (additive_inverse ?A)) additive_identity)) + +; left_additive_inverse, axiom. +(or (= (add (additive_inverse ?A) ?A) additive_identity)) + +; additive_inverse_identity, axiom. +(or (= (additive_inverse additive_identity) additive_identity)) + +; property_of_inverse_and_add, axiom. +(or (= (add ?A (add (additive_inverse ?A) ?B)) ?B)) + +; distribute_additive_inverse, axiom. +(or (= (additive_inverse (add ?A ?B)) (add (additive_inverse ?A) (additive_inverse ?B)))) + +; additive_inverse_additive_inverse, axiom. +(or (= (additive_inverse (additive_inverse ?A)) ?A)) + +; multiply_additive_id1, axiom. +(or (= (multiply ?A additive_identity) additive_identity)) + +; multiply_additive_id2, axiom. +(or (= (multiply additive_identity ?A) additive_identity)) + +; product_of_inverse, axiom. +(or (= (multiply (additive_inverse ?A) (additive_inverse ?B)) (multiply ?A ?B))) + +; multiply_additive_inverse1, axiom. +(or (= (multiply ?A (additive_inverse ?B)) (additive_inverse (multiply ?A ?B)))) + +; multiply_additive_inverse2, axiom. +(or (= (multiply (additive_inverse ?A) ?B) (additive_inverse (multiply ?A ?B)))) + +; distribute1, axiom. +(or (= (multiply ?A (add ?B ?C)) (add (multiply ?A ?B) (multiply ?A ?C)))) + +; distribute2, axiom. +(or (= (multiply (add ?A ?B) ?C) (add (multiply ?A ?C) (multiply ?B ?C)))) + +; right_alternative, axiom. +(or (= (multiply (multiply ?A ?B) ?B) (multiply ?A (multiply ?B ?B)))) + +; associator, axiom. +(or (= (associator ?A ?B ?C) (add (multiply (multiply ?A ?B) ?C) (additive_inverse (multiply ?A (multiply ?B ?C)))))) + +; commutator, axiom. +(or (= (commutator ?A ?B) (add (multiply ?B ?A) (additive_inverse (multiply ?A ?B))))) + +; middle_associator, axiom. +(or (= (multiply (multiply (associator ?A ?A ?B) ?A) (associator ?A ?A ?B)) additive_identity)) + +; left_alternative, axiom. +(or (= (multiply (multiply ?A ?A) ?B) (multiply ?A (multiply ?A ?B)))) + +; defines_s, axiom. +(or (= (s ?A ?B ?C ?D) (add (add (associator (multiply ?A ?B) ?C ?D) (additive_inverse (multiply ?B (associator ?A ?C ?D)))) (additive_inverse (multiply (associator ?B ?C ?D) ?A))))) + +; right_moufang, hypothesis. +(or (= (multiply ?A (multiply ?B (multiply ?C ?B))) (multiply (commutator (multiply ?A ?B) ?C) ?B))) + +; left_moufang, hypothesis. +(or (= (multiply (multiply ?A (multiply ?B ?A)) ?C) (multiply ?A (commutator ?B (multiply ?A ?C))))) + +; middle_moufang, hypothesis. +(or (= (multiply (multiply ?A ?B) (multiply ?C ?A)) (multiply (multiply ?A (multiply ?B ?C)) ?A))) + +; prove_skew_symmetry, conjecture. +(or (/= (s a b c d) (additive_inverse (s b a c d)))) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/RNG011-5+rm_eq_rstfp.kif b/snark-20120808r02/examples/RNG011-5+rm_eq_rstfp.kif new file mode 100644 index 0000000..2f0e049 --- /dev/null +++ b/snark-20120808r02/examples/RNG011-5+rm_eq_rstfp.kif @@ -0,0 +1,97 @@ +;-------------------------------------------------------------------------- +; File : RNG011-5 : TPTP v2.2.0. Released v1.0.0. +; Domain : Ring Theory +; Problem : In a right alternative ring (((X,X,Y)*X)*(X,X,Y)) = Add Id +; Version : [Ove90] (equality) axioms : +; Incomplete > Augmented > Incomplete. +; English : + +; Refs : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : CADE-11 Competition Eq-10 [Ove90] +; : THEOREM EQ-10 [LM93] +; : PROBLEM 10 [Zha93] + +; Status : unsatisfiable +; Rating : 0.00 v2.0.0 +; Syntax : Number of clauses : 22 ( 0 non-Horn; 22 unit; 2 RR) +; Number of literals : 22 ( 22 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 8 ( 3 constant; 0-3 arity) +; Number of variables : 37 ( 2 singleton) +; Maximal term depth : 5 ( 2 average) + +; Comments : +; : tptp2X -f kif -t rm_equality:rstfp RNG011-5.p +;-------------------------------------------------------------------------- +; commutative_addition, axiom. +(or (= (add ?A ?B) (add ?B ?A))) + +; associative_addition, axiom. +(or (= (add (add ?A ?B) ?C) (add ?A (add ?B ?C)))) + +; right_identity, axiom. +(or (= (add ?A additive_identity) ?A)) + +; left_identity, axiom. +(or (= (add additive_identity ?A) ?A)) + +; right_additive_inverse, axiom. +(or (= (add ?A (additive_inverse ?A)) additive_identity)) + +; left_additive_inverse, axiom. +(or (= (add (additive_inverse ?A) ?A) additive_identity)) + +; additive_inverse_identity, axiom. +(or (= (additive_inverse additive_identity) additive_identity)) + +; property_of_inverse_and_add, axiom. +(or (= (add ?A (add (additive_inverse ?A) ?B)) ?B)) + +; distribute_additive_inverse, axiom. +(or (= (additive_inverse (add ?A ?B)) (add (additive_inverse ?A) (additive_inverse ?B)))) + +; additive_inverse_additive_inverse, axiom. +(or (= (additive_inverse (additive_inverse ?A)) ?A)) + +; multiply_additive_id1, axiom. +(or (= (multiply ?A additive_identity) additive_identity)) + +; multiply_additive_id2, axiom. +(or (= (multiply additive_identity ?A) additive_identity)) + +; product_of_inverse, axiom. +(or (= (multiply (additive_inverse ?A) (additive_inverse ?B)) (multiply ?A ?B))) + +; multiply_additive_inverse1, axiom. +(or (= (multiply ?A (additive_inverse ?B)) (additive_inverse (multiply ?A ?B)))) + +; multiply_additive_inverse2, axiom. +(or (= (multiply (additive_inverse ?A) ?B) (additive_inverse (multiply ?A ?B)))) + +; distribute1, axiom. +(or (= (multiply ?A (add ?B ?C)) (add (multiply ?A ?B) (multiply ?A ?C)))) + +; distribute2, axiom. +(or (= (multiply (add ?A ?B) ?C) (add (multiply ?A ?C) (multiply ?B ?C)))) + +; right_alternative, axiom. +(or (= (multiply (multiply ?A ?B) ?B) (multiply ?A (multiply ?B ?B)))) + +; associator, axiom. +(or (= (associator ?A ?B ?C) (add (multiply (multiply ?A ?B) ?C) (additive_inverse (multiply ?A (multiply ?B ?C)))))) + +; commutator, axiom. +(or (= (commutator ?A ?B) (add (multiply ?B ?A) (additive_inverse (multiply ?A ?B))))) + +; middle_associator, axiom. +(or (= (multiply (multiply (associator ?A ?A ?B) ?A) (associator ?A ?A ?B)) additive_identity)) + +; prove_equality, conjecture. +(or (/= (multiply (multiply (associator a a b) a) (associator a a b)) additive_identity)) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/ROB005-1+rm_eq_rstfp.kif b/snark-20120808r02/examples/ROB005-1+rm_eq_rstfp.kif new file mode 100644 index 0000000..2b70356 --- /dev/null +++ b/snark-20120808r02/examples/ROB005-1+rm_eq_rstfp.kif @@ -0,0 +1,53 @@ +;-------------------------------------------------------------------------- +; File : ROB005-1 : TPTP v2.2.0. Released v1.0.0. +; Domain : Robbins Algebra +; Problem : c + c=c => Boolean +; Version : [Win90] (equality) axioms. +; English : If there is an element c such that c+c=c, then the algebra +; is Boolean. + +; Refs : [HMT71] Henkin et al. (1971), Cylindrical Algebras +; : [Win90] Winker (1990), Robbins Algebra: Conditions that make a +; : [Ove90] Overbeek (1990), ATP competition announced at CADE-10 +; : [LW92] Lusk & Wos (1992), Benchmark Problems in Which Equalit +; : [Ove93] Overbeek (1993), The CADE-11 Competitions: A Personal +; : [LM93] Lusk & McCune (1993), Uniform Strategies: The CADE-11 +; : [Zha93] Zhang (1993), Automated Proofs of Equality Problems in +; Source : [Ove90] +; Names : CADE-11 Competition Eq-2 [Ove90] +; : Lemma 2.4 [Win90] +; : RA3 [LW92] +; : THEOREM EQ-2 [LM93] +; : PROBLEM 2 [Zha93] +; : robbins.occ.in [OTTER] + +; Status : unsatisfiable +; Rating : 0.67 v2.2.0, 0.71 v2.1.0, 0.88 v2.0.0 +; Syntax : Number of clauses : 5 ( 0 non-Horn; 5 unit; 2 RR) +; Number of literals : 5 ( 5 equality) +; Maximal clause size : 1 ( 1 average) +; Number of predicates : 1 ( 0 propositional; 2-2 arity) +; Number of functors : 5 ( 3 constant; 0-2 arity) +; Number of variables : 7 ( 0 singleton) +; Maximal term depth : 6 ( 2 average) + +; Comments : Commutativity, associativity, and Huntington's axiom +; axiomatize Boolean algebra. +; : tptp2X -f kif -t rm_equality:rstfp ROB005-1.p +;-------------------------------------------------------------------------- +; commutativity_of_add, axiom. +(or (= (add ?A ?B) (add ?B ?A))) + +; associativity_of_add, axiom. +(or (= (add (add ?A ?B) ?C) (add ?A (add ?B ?C)))) + +; robbins_axiom, axiom. +(or (= (negate (add (negate (add ?A ?B)) (negate (add ?A (negate ?B))))) ?A)) + +; idempotence, hypothesis. +(or (= (add c c) c)) + +; prove_huntingtons_axiom, conjecture. +(or (/= (add (negate (add a (negate b))) (negate (add (negate a) (negate b)))) b)) + +;-------------------------------------------------------------------------- diff --git a/snark-20120808r02/examples/coder-examples.abcl b/snark-20120808r02/examples/coder-examples.abcl new file mode 100644 index 0000000000000000000000000000000000000000..11cfa6c58fd8e2bc44c7047f808041adb25f2599 GIT binary patch literal 34443 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 <=ePCQ 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. + +(in-package :snark-user) + +(defun coder-test () + (time (coder-overbeek6)) + (time (coder-ycl-rst)) + (time (coder-ycl-rst-together)) + (time (coder-veroff-5-2)) + (time (coder-veroff-4-1 :all-proofs t)) + (time (coder-ex7b)) + (time (coder-ex9 :max-syms 18 :max-vars 2)) + nil) + +(defun coder-xcb-reflex (&rest options) + ;; 10-step proof + ;; 11-step proof by (coder-xcb-reflex :max-syms 35) + ;; 13-step proof by (coder-xcb-reflex :max-syms 31) + (apply + 'coder + '((e ?x (e (e (e ?x ?y) (e ?z ?y)) ?z))) + '(e a a) + options)) + +(defun coder-overbeek6 (&rest options) + ;; 5-step proof + (apply + 'coder + '("i(a,i(b,a))" ;Prolog style with declared variables + "i(i(X,Y),i(i(Y,?z),i(X,?z)))" ;Prolog style with explicit variables (capitalized-or ?-prefix) + (i (i (i a b) b) (i (i b a) a)) ;Lisp style with declared variables + (i (i (n ?x) (n ?y)) (i ?y ?x))) ;Lisp style with explicit variables + "i(i(a,b),i(i(c,a),i(c,b)))" ;variable declarations don't apply to target + :variables '(a b c) + options)) + +(defun coder-overbeek4 (&rest options) + ;; 10-step proof + (apply + 'coder + '((e ?x (e (e ?y (e ?z ?x)) (e ?z ?y)))) + '(e (e (e a (e b c)) c) (e b a)) + options)) + +(defun coder-ycl-rst (&rest options) + ;; prove reflexivity (4-step proof), + ;; symmetry (5-step proof), + ;; and transitivity (6-step proof) from ycl + ;; coder searches until all have been found + (apply + 'coder + '((e (e ?x ?y) (e (e ?z ?y) (e ?x ?z)))) + '(and + (e a a) + (e (e a b) (e b a)) + (e (e a b) (e (e b c) (e a c)))) + options)) + +(defun coder-ycl-rst-together (&rest options) + ;; prove reflexivity, symmetry, and transitivity from ycl in a single derivation + ;; 9-step proof + (apply + 'coder + '((e (e ?x ?y) (e (e ?z ?y) (e ?x ?z)))) + '(together + (e a a) + (e (e a b) (e b a)) + (e (e a b) (e (e b c) (e a c)))) + options)) + +(defun coder-veroff-5-2 (&rest options) + ;; problem from + ;; Robert Veroff, "Finding Shortest Proofs: An Application of Linked Inference Rules", + ;; JAR 27,2 (August 2001), 123-129 + ;; 8-step proof + (apply + 'coder + '((i ?x (i ?y ?x)) + (i (i ?x (i ?y ?z)) (i (i ?x ?y) (i ?x ?z)))) + '(i (i a (i b c)) (i b (i a c))) + options)) + +(defun coder-veroff-4-1 (&rest options) + ;; converse (because there's a typo) of problem from + ;; Robert Veroff, "Finding Shortest Proofs: An Application of Linked Inference Rules", + ;; JAR 27,2 (August 2001), 123-129 + ;; 7 6-step proofs, just like Veroff reported + (apply + 'coder + '((i (i (i ?v1 ?v2) ?v3) (i (i ?v2 (i ?v3 ?v5)) (i ?v4 (i ?v2 ?v5))))) + '(i (i v2 (i v3 v5)) (i (i (i v1 v2) v3) (i v4 (i v2 v5)))) + options)) + +(defun ii-schema () + '(i ?x (i ?y ?x))) + +(defun id-schema () + '(i (i ?x (i ?y ?z)) (i (i ?x ?y) (i ?x ?z)))) + +(defun cr-schema1 () + '(i (i ?x (n ?y)) (i (i ?x ?y) (n ?x)))) + +(defun cr-schema2 () + '(i (i (n ?x) (n ?y)) (i (i (n ?x) ?y) ?x))) + +(defun eq-schema1 () + '(i (e ?x ?y) (i ?x ?y))) + +(defun eq-schema2 () + '(i (e ?x ?y) (i ?y ?x))) + +(defun eq-schema3 () + '(i (i ?x ?y) (i (i ?y ?x) (e ?y ?x)))) + +(defun or-schema () + '(e (o ?x ?y) (i (n ?x) ?y))) + +(defun and-schema () + '(e (a ?x ?y) (n (o (n ?x) (n ?y))))) + +(defun alt-and-schema () + '(e (a ?x ?y) (n (i ?x (n ?y))))) + +(defun coder-ex1 (&rest options) + ;; from Genesereth chapter 4 + ;; 3-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + '(i p q) + '(i q r)) + '(i p r) + options)) + +(defun coder-ex2 (&rest options) + ;; from Genesereth chapter 4 exercise + ;; 6-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + '(i p q) + '(i q r)) + '(i (i p (n r)) (n p)) + options)) + +(defun coder-ex3 (&rest options) + ;; from Genesereth chapter 4 exercise + ;; 5-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + '(n (n p))) + 'p + options)) + +(defun coder-ex4 (&rest options) + ;; 5-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + 'p) + '(n (n p)) + options)) + +(defun coder-ex5 (&rest options) + ;; 4-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3)) + '(e p p) + options)) + +(defun coder-ex6 (&rest options) + ;; 4-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3) + '(e p q)) + '(e q p) + options)) + +(defun coder-ex6a (&rest options) + ;; 5-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3)) + '(i (e p q) (e q p)) + options)) + +(defun coder-ex6b (&rest options) + ;; 7-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3)) + '(e (e p q) (e q p)) + options)) + +(defun coder-ex7a () + ;; 5-step proof, 5-step proof, 2-step proof + (coder (list (ii-schema) + (id-schema) + (eq-schema1) + (eq-schema2) + (eq-schema3) + '(e p q) + '(e q r)) + '(i p r) + :must-use '(6 7)) + (coder (list (ii-schema) + (id-schema) + (eq-schema1) + (eq-schema2) + (eq-schema3) + '(e p q) + '(e q r)) + '(i r p) + :must-use '(6 7)) + (coder (list (ii-schema) + (id-schema) + (eq-schema1) + (eq-schema2) + (eq-schema3) + '(i p r) + '(i r p)) + '(e p r) + :must-use '(6 7))) + +(defun coder-ex7b () + ;; 12-step proof + (coder (list (ii-schema) + (id-schema) + (eq-schema1) + (eq-schema2) + (eq-schema3) + '(e p q) + '(e q r)) + '(together (e p r) (i p q) (i q r) (i p r) (i r q) (i q p) (i r p)) + :must-use t + :max-syms 7)) + +(defun coder-ex8 (&rest options) + ;; 3-step proof + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3) + (or-schema) + 'q) + '(o p q) + options)) + +(defun coder-ex9 (&rest options) + ;; no 1,...,8-step proof + ;; 9-step proof by (coder-ex9 :max-syms 18 :max-vars 2) + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3) + (or-schema) + 'p) + '(o p q) + options)) + +(defun coder-ex10 (&rest options) + ;; no 1,...,8-step proof + ;; 13-step proof by (coder-ex10 :max-syms 18 :max-vars 2 :must-use '(1 2 3 4 5 6 8 9 10 11)) + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3) + (or-schema) + (and-schema) + 'p + 'q) + '(a p q) + options)) + +(defun coder-ex11 (&rest options) + ;; no 1,...,8-step proof + ;; 9-step proof by (coder-ex11 :max-syms 16 :max-vars 2) + (apply + 'coder + (list (ii-schema) + (id-schema) + (cr-schema1) + (cr-schema2) + (eq-schema1) + (eq-schema2) + (eq-schema3) + (alt-and-schema) + 'p + 'q) + '(a p q) + options)) + +;;; coder-examples.lisp EOF diff --git a/snark-20120808r02/examples/front-last-example.abcl b/snark-20120808r02/examples/front-last-example.abcl new file mode 100644 index 0000000000000000000000000000000000000000..7bbf08efcf3f7fa8cfbfd552e683a955cfa14a4d GIT binary patch literal 2559 zcmZ{mc{Cg78pct(!3`pICAGAI24jn*MyU|72dTZnP}IH_Ri;!eT~JHW7O`)&R7IMi zqNKP8YAqrJMJ>RTI13NoA!&FWZoZ&AL z`0@7&z7-Iv=;t01s)&hn_Yd^LD7pGuI$I=O7KmN3pUKMQfZMCbo)?l7fp7^+KDj$w zUiM4jD5Dw9JpS$FATz5t$jvP60_3hG_oxfUfFFVLn7Ma#Y&~o*`iNq6Yy1|4edHitSNG81(dr@KNSKDyxEKma%8nOn}a_V`E;awn*5k{(wd$qy}kQ(BYr?MgQYHp z3mg($oCL__=Z8?(EX~;1T^&&-N{kE)q#tGZfAbdlPu{L)dAt5QZ&#?&4Zn~U`>04K zJK*q)3 z0zo}2Mgl>GZmc7B9E=12R{=jJ5NPIr%Bw$wKPcTb#wvbh`?fo%yHXS~v{gi%JC-=z z!m}|jZ%Z+02~*dO8}4RsHs~aJBwUgFv^Az>w9PD{1;kNXAn@y?2((+G)Oq)2hY)!e#*Fmi zd;4}~Zqf4v5Y{Ju{SwkvrKdmX9ehRYK?@42Nnow_@79VG7dG0++98AIVYYEEL(|f= zFe)>@r7^2Y2ljD6?txyQj4`#A)vcu;<*9BTff{R%pJhyME(eYF8Y=8~DusM8vRVUK zR@J}CiKgDho4%2#Y$5Xl#qYtjWd|a4Jd*KkR|>Ym@@$|k6$8pI6OqpH5*>48S7ah8 zQEh2%A8^D68nm!EnstdU?w4w3ctM_GMWT75QBKGOgTiC4rvST!u_>C!eHA!JFe<*< zEYWvMyLLM~q2$C_s+hXYevgJ+-J2I@>LuA&CFAOyF41uC=eRy#_>v!er;d*ptrpm2F#ULY;Ql0l!57hvFR= zVP4mcD3wyYdTS#u@3tA;jCGnPK5Y$mO&U2(f^1lDI#Du5M!_QRqi#VIPchc2`g zDAvox7g5QguUEgsqJB5l9O#`EXDgX&dWJ5mDskawKRosb&A;vo^5M>49KPpwU$>%x zq#T8trlzBP2>a@W@NpF5_3#tCQUuxJz$c;@^l5A!*)H@DD*7zlG$r;JhWd>>ZYSov z@I=+RYoY8G?pat5g-a=kTzYUb$(2tt70@51d-#e=x`mo3vS`mT5|9G>@B$gG*$`!N zms}KvUK)G1y}hneEf1Ig<{QV3CQ5Rf9_)t|V~m8c??BcW#in?}uKs z)?33-K#TXRwDf)dr%WwV{OAQ7Q~5D90b0 z*JW;DF|<&Lh#Pr9nx5F(3DA@}O(nEEA`xs%Yn_H0<+#8|t!&{w*bb;n&2dmWR;v$U zt4zCd+kowm1&>g=X0g+=C(WkaU=mPl{J`^_Kx`^qE;l}H6%2`gNI%XaWYSMQ+UF6{ z>DO}!_gA?ggbaFho=fMRH5Q~&wvHO!%^QNw_Usre^COP)0x(mg&~u|>h(yGYS9{hf zpV7)o?)WZAsjuEw{5r)R8`P+}1VHi)Vz|qN>X)p_g9I~kgh^3k|C&XsOu*u>>`PrqXNJQ2|FLTMp?o0K82ZgT)-;t^@ z7MQ&)*h(0W6wR#DnA1u;82@^DNzbW!fY|$K5k*lojl%`WnQf|IvzH_&ArLLM+g5Oi z%Wu0LC#NN6FIiCvAW<`iJTcKDhi~&^rVfXHibHj)66*!Ne<`#Cl#WoITR&eJVRs0` zLa)`@^gxe;I#4@PP;rK^|osu<8Rhk$P@1OWKJloTJB7nN14syu_Yu)Ta z0VPz&tKCApHg>|xU(^OM0UZe?mKI}g9*DM)MAho6LMBFb`X?b8rQZgEDcoXFLca6F zbuoH@+vZUfVs5~0Mmyc2aXwt8ty-z=8V3)Vg;&1QFs!r0^lKYm3T~VCv7TeksGW{Y zPtygwA(d9VS6Ck$!W8@6D3s^)ME~sIbAy<`)oct5Qh>9A&&VXe@F!yZ6$Z`_>%aAP n!1ccle|0~DhCdbf12F#O@HYryX~x2Ow#oG4rTpmb9B0!X=C7#k literal 0 HcmV?d00001 diff --git a/snark-20120808r02/examples/front-last-example.lisp b/snark-20120808r02/examples/front-last-example.lisp new file mode 100644 index 0000000..756fb49 --- /dev/null +++ b/snark-20120808r02/examples/front-last-example.lisp @@ -0,0 +1,82 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: front-last-example.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2002. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +;;; Let L be a nonempty list. +;;; Synthesize a program to compute the FRONT and LAST +;;; of the list where LAST of a list is its last element +;;; and FRONT is the list of all elements except the last. +;;; +;;; The program specification is +;;; (EXISTS (Y Z) (= L (APPEND Y (CONS Z NIL)))) +;;; i.e., find Y and Z such that L can be formed by +;;; appending Y (the FRONT of L) and a single element list +;;; containing Z (the LAST of L). +;;; +;;; The appropriate inductive axiom is given explicitly in the axiom +;;; named induction. +;;; +;;; Necessary properties of APPEND, CONS, HEAD, and TAIL are given +;;; in the axioms named append-nil, append-cons, and cons-definition. +;;; +;;; A proof of the query is found and the program +;;; defined by the values found for variables Y and Z +;;; in the specification. +;;; +;;; Resolution and paramodulation (for equality) are the inference +;;; rules used. + +(defun front-last-example () + ;; Waldinger program synthesis example 1989-12-14 + (initialize) + (use-resolution) + (use-paramodulation) + (use-literal-ordering-with-resolution 'literal-ordering-p) + (use-literal-ordering-with-paramodulation 'literal-ordering-p) + (use-conditional-answer-creation) + (declare-constant 'nil) + (declare-constant 'l) + (declare-function 'head 1) + (declare-function 'tail 1) + (declare-function 'cons 2) + (declare-function 'append 2) + (declare-function 'front 1) + (declare-function 'last 1) + (declare-ordering-greaterp 'l 'nil) + (declare-ordering-greaterp 'head 'l) + (declare-ordering-greaterp 'tail 'l) + (declare-ordering-greaterp 'cons 'head) + (declare-ordering-greaterp 'cons 'tail) + (declare-ordering-greaterp 'append 'cons) +;;(assert '(forall (x) (= x x))) + (assert '(/= l nil) + :name 'l-nonempty) + (assert '(implies (and (/= l nil) (/= (tail l) nil)) + (= (tail l) (append (front (tail l)) (cons (last (tail l)) nil)))) + :name 'induction) + (assert '(forall (u) (= (append nil u) u)) + :name 'append-nil) + (assert '(forall (u v w) (= (append (cons u v) w) (cons u (append v w)))) + :name 'append-cons) + (assert '(forall (x) (implied-by (= x (cons (head x) (tail x))) (/= x nil))) + :name 'cons-definition) + (prove '(= l (append ?y (cons ?z nil))) :answer '(values ?y ?z))) + +;;; front-last-example.lisp EOF diff --git a/snark-20120808r02/examples/hot-drink-example.abcl b/snark-20120808r02/examples/hot-drink-example.abcl new file mode 100644 index 0000000000000000000000000000000000000000..25caf6ad139ffb16a3778547bee624127514ee41 GIT binary patch literal 9774 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 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/examples/hot-drink-example.lisp b/snark-20120808r02/examples/hot-drink-example.lisp new file mode 100644 index 0000000..75d9566 --- /dev/null +++ b/snark-20120808r02/examples/hot-drink-example.lisp @@ -0,0 +1,130 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: hot-drink-example.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2005. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +;;; this is a simple example of one way of implementing partitions in SNARK +;;; rows are annotated with the partitions they're in and inferences are +;;; restricted to rows in the same partitions +;;; +;;; a partition communication table is used to augment the annotation +;;; of derived rows in case the row should be included in a neighboring +;;; partition too +;;; +;;; the partition communication table computation is invoked by including +;;; it as a pruning test +;;; +;;; this code is more illustrative than definitive + +;;; partition communication table is a set of triples +;;; (from-partition to-partition relation-names) like +;;; (1 2 (water)) +;;; (2 3 (steam)) + +(defun row-predicate-names (row) + (row-relation-names row)) + +(defun row-relation-names (row) + ;; returns list of relation names in formula part + ;; (but not answer, constraint, etc. parts) of a row + (let ((names nil)) + (prog-> + (snark::map-atoms-in-wff (row-wff row) ->* atom polarity) + (declare (ignore polarity)) + (dereference + atom nil + :if-constant (pushnew (constant-name atom) names) + :if-compound (pushnew (function-name (head atom)) names))) + names)) + +(defun partition-communication (row) + ;; could try to refine the context for added partitions + (when (use-partitions?) + (let ((table (partition-communication-table?)) + (preds (row-relation-names row)) + (context (snark::row-context row)) + (more-context nil)) + (flet ((message-passing-from (x) + (prog-> + (car x -> part1) + (sparse-matrix-row table part1 ->nonnil row) + (cdr x -> ctxt1) + (map-sparse-vector-with-indexes row ->* preds2 part2) + (when (and (null (assoc part2 context)) + (null (assoc part2 more-context)) + (subsetp preds preds2)) + (push (cons part2 ctxt1) more-context) + nil)))) + (mapc #'message-passing-from context) + (do () + ((null more-context)) + (push (pop more-context) context) + (message-passing-from (first context))) + (setf (snark::row-context row) context)))) + nil) + +(defun hot-drink-example (&key (use-partitions t) (use-ordering nil)) + ;; Amir & McIlraith partition-based reasoning example + (initialize) + (when use-partitions + (use-partitions '(1 2 3)) + (partition-communication-table + (let ((pct (make-sparse-matrix))) + (setf (sparef pct 1 2) '(water) + (sparef pct 2 3) '(steam)) + pct)) + (pruning-tests (append (pruning-tests?) '(partition-communication)))) + (cond + (use-ordering + (use-resolution t) + (use-literal-ordering-with-resolution 'literal-ordering-a) + (declare-proposition 'ok_pump) + (declare-proposition 'on_pump) + (declare-proposition 'man_fill) + (declare-proposition 'water) + (declare-proposition 'ok_boiler) + (declare-proposition 'on_boiler) + (declare-proposition 'steam) + (declare-proposition 'coffee) + (declare-proposition 'hot_drink) + (declare-ordering-greaterp '(ok_pump on_pump man_fill) 'water) + (declare-ordering-greaterp '(water ok_boiler on_boiler) 'steam) + (declare-ordering-greaterp 'coffee 'hot_drink)) + (t + (use-hyperresolution t))) + (dolist (wff '((or (not ok_pump) (not on_pump) water) + (or (not man_fill) water) + (or (not man_fill) (not on_pump)) + (or man_fill on_pump))) + (assert wff :partitions '(1))) + (dolist (wff '((or (not water) (not ok_boiler) (not on_boiler) steam) + (or water (not steam)) + (or ok_boiler (not steam)) + (or on_boiler (not steam)))) + (assert wff :partitions '(2))) + (dolist (wff '((or (not steam) (not coffee) hot_drink) + (or coffee teabag) + (or (not steam) (not teabag) hot_drink))) + (assert wff :partitions '(3))) + (assume 'ok_pump :partitions '(1)) + (assume 'ok_boiler :partitions '(2)) + (assume 'on_boiler :partitions '(2)) + (closure)) + +;;; hot-drink-example.lisp EOF diff --git a/snark-20120808r02/examples/latin-squares.abcl b/snark-20120808r02/examples/latin-squares.abcl new file mode 100644 index 0000000000000000000000000000000000000000..6170a397d4f1232a1593cf3b47910f40ab7dca64 GIT binary patch literal 16909 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 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/examples/latin-squares.lisp b/snark-20120808r02/examples/latin-squares.lisp new file mode 100644 index 0000000..01b8452 --- /dev/null +++ b/snark-20120808r02/examples/latin-squares.lisp @@ -0,0 +1,121 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: latin-squares.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2006. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +(defun latin-square-clauses (order &key clause-set (standard t) &allow-other-keys) + (let ((n-1 (- order 1))) + ;; row, column, and values are numbered in [0,...,order-1] + (unless clause-set + (setf clause-set (make-dp-clause-set))) + (dp-insert-wff `(forall ((i :in (ints 0 ,n-1)) (j :in (ints 0 ,n-1))) (exists ((k :in (ints 0 ,n-1))) (p i j k))) clause-set) + (dp-insert-wff `(forall ((i :in (ints 0 ,n-1)) (k :in (ints 0 ,n-1))) (exists ((j :in (ints 0 ,n-1))) (p i j k))) clause-set) + (dp-insert-wff `(forall ((j :in (ints 0 ,n-1)) (k :in (ints 0 ,n-1))) (exists ((i :in (ints 0 ,n-1))) (p i j k))) clause-set) + (dp-insert-wff `(forall ((i :in (ints 0 ,n-1)) + (j :in (ints 0 ,n-1)) + (k :in (ints 1 ,n-1)) + (l :in (ints 0 (- k 1)))) + (and + (or (not (p i j l)) (not (p i j k))) + (or (not (p i l j)) (not (p i k j))) + (or (not (p l i j)) (not (p k i j))))) + clause-set) + (when standard + ;; fix first row and column for standard form + (dp-insert-wff `(forall ((j :in (ints 0 ,n-1))) (p 0 j j)) clause-set) + (dp-insert-wff `(forall ((i :in (ints 0 ,n-1))) (p i 0 i)) clause-set)) + clause-set)) + +(defun model-to-latin-square (atoms &optional order) + ;; convert list of p atoms to sequence of sequences representation of latin square + (unless order + (let ((n 0)) ;find its order + (dolist (atom atoms) + (when (and (consp atom) (eq 'p (first atom))) + (dolist (k (rest atom)) + (when (> k n) + (setf n k))))) + (setf order (+ n 1)))) + (let ((ls (make-array order))) + (dotimes (i order) + (setf (aref ls i) (make-array order :initial-element nil))) + (dolist (atom atoms) + (when (and (consp atom) (eq 'p (first atom))) + (let ((i (second atom)) + (j (third atom)) + (k (fourth atom))) + (cl:assert (null (aref (aref ls i) j))) + (setf (aref (aref ls i) j) k)))) + ls)) + +(defun generate-latin-squares (order &rest options &key (apply nil) (time t) &allow-other-keys) + (let (clause-set) + (flet ((make-clause-set () + (setf clause-set (apply #'latin-square-clauses order options))) + (generate () + (dp-satisfiable-p clause-set + :find-all-models -1 + :model-test-function (and apply (lambda (model) (funcall apply (model-to-latin-square model order)) t)) + :trace-choices nil))) + (if time (time (make-clause-set)) (make-clause-set)) + (if time (time (generate)) (generate))))) + +(defun print-latin-square (ls) + (map nil (lambda (row) (format t "~%") (map nil (lambda (v) (format t "~3@A" v)) row)) ls) + ls) + +(defun latin-square-conjugate (ls conjugate) + (let* ((order (length ls)) + (ls* (make-array order))) + (dotimes (i order) + (setf (elt ls* i) (make-array order :initial-element nil))) + (dotimes (i order) + (dotimes (j order) + (let ((k (elt (elt ls i) j))) + (ecase conjugate + (132 + (setf (elt (elt ls* i) k) j)) + (213 + (setf (elt (elt ls* j) i) k)) + (231 + (setf (elt (elt ls* j) k) i)) + ((312 column) + (setf (elt (elt ls* k) i) j)) + ((321 row) + (setf (elt (elt ls* k) j) i)) + (123 ;makes copy of ls + (setf (elt (elt ls* i) j) k)))))) + ls*)) + +(defun latin-square-standard-form (ls) + (let* ((order (length ls)) + (ls* (make-array order))) + (dotimes (i order) + (setf (elt ls* i) (make-array order :initial-element nil))) + ;; renumber entries so first row is 0,...,order-1 + (let ((row0 (elt ls 0))) + (dotimes (i order) + (let ((rowi (elt ls i)) + (rowi* (elt ls* i))) + (dotimes (j order) + (setf (elt rowi* j) (position (elt rowi j) row0)))))) + ;; sort rows so that first column is 0,...,order-1 + (sort ls* #'< :key (lambda (x) (elt x 0))))) + +;;; latin-squares.lisp EOF diff --git a/snark-20120808r02/examples/overbeek-test.abcl b/snark-20120808r02/examples/overbeek-test.abcl new file mode 100644 index 0000000000000000000000000000000000000000..5d68af1caeaf62cddd75390ebb24b59918aff6b1 GIT binary patch literal 27509 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 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/examples/overbeek-test.lisp b/snark-20120808r02/examples/overbeek-test.lisp new file mode 100644 index 0000000..41e1ea6 --- /dev/null +++ b/snark-20120808r02/examples/overbeek-test.lisp @@ -0,0 +1,359 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: overbeek-test.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2008. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +(defun overbeek-test (&key (verbose t)) + #+Symbolics (zl:print-herald) + (let ((p1 (default-print-rows-when-given?)) + (p2 (default-print-rows-when-derived?)) + (p3 (default-print-rows-prettily?)) + (p4 (default-print-final-rows?)) + (p5 (default-print-options-when-starting?)) + (p6 (default-print-assertion-analysis-notes?)) + (p7 (default-print-term-memory-when-finished?)) + (p8 (default-print-agenda-when-finished?))) + (unwind-protect + (let ((total-seconds 0.0)) + (dolist (x '( + ;; (print-rows-when-given print-rows-when-derived print-wffs-when-done problem-name) + (t t nil overbeek1) + (t t nil overbeek1e) + (t t nil overbeek3e) + (t t nil overbeek6) + (t t nil overbeek2e) + (t :signal nil overbeek2) + (t t nil overbeek4e) + (t t nil overbeek3) + (t t nil overbeek7e) + (t :signal nil overbeek7) + (t :signal nil overbeek4) + (t :signal nil overbeek5e) + (t :signal nil overbeek6e) + (t :signal nil overbeek5) + (t :signal nil overbeek6-1) + (t :signal nil overbeek4-1) +;; (t t nil overbeek5-1) +;; (t t nil overbeek7-1) +;; (t t nil overbeek7e-1) + ;;overbeek8e + ;;overbeek9e + ;;overbeek10e + )) + (dotimes (i 3) (terpri)) + (let ((#-symbolics *break-on-signals* #+symbolics conditions::*break-on-signals* nil) + (snark::critique-options t)) + (default-print-rows-when-given (and verbose (first x))) + (default-print-rows-when-derived (and verbose (second x))) + (default-print-row-wffs-prettily nil) + (unless verbose + (default-print-final-rows nil) + (default-print-options-when-starting nil) + (default-print-assertion-analysis-notes nil) + (default-print-term-memory-when-finished nil) + (default-print-agenda-when-finished nil)) + (funcall (print (fourth x)))) + (incf total-seconds snark-lisp::*total-seconds*) + (when (third x) + (terpri) + (print-rows :ancestry t)) + (prin1 (fourth x)) + (terpri)) + (format t "~%OVERBEEK-TEST Total = ~D seconds" (round total-seconds))) + (default-print-rows-when-given p1) + (default-print-rows-when-derived p2) + (default-print-row-wffs-prettily p3) + (default-print-final-rows p4) + (default-print-options-when-starting p5) + (default-print-assertion-analysis-notes p6) + (default-print-term-memory-when-finished p7) + (default-print-agenda-when-finished p8) + nil))) + +(defun refute-snark-example-file (name options &key format) + (refute-file + (make-pathname :directory (append (pathname-directory cl-user::*snark-system-pathname*) (list "examples")) + :name name + :type (case format (:tptp "tptp") (otherwise "kif"))) + :options options + :format format + :ignore-errors nil + :verbose t + :output-file nil + :package :snark-user)) + +(defun overbeek1 () + (refute-snark-example-file + "GRP001-1+rm_eq_rstfp" + '(;;(agenda-ordering-function #'fifo) + ;;(row-weight-limit 4) ;4 is minimum value for which proof can be found + (declare-constant 'e :alias 'identity) + (declare-constant 'a) + (declare-constant 'b) + (declare-constant 'c) + (declare-function 'f 2 :alias 'multiply :ordering-status :left-to-right) + (declare-function 'g 1 :alias 'inverse :kbo-weight 0) + (declare-relation 'p 3 :alias 'product) + (ordering-functions>constants t) + (declare-ordering-greaterp 'g 'f 'c 'b 'a 'e) + (use-hyperresolution t) + (use-term-ordering :kbo)))) + +(defun overbeek2 () + (refute-snark-example-file + "GRP002-1+rm_eq_rstfp" + '(;;(ROW-WEIGHT-LIMIT 9) + (declare-constant 'e :alias 'identity) + (declare-constant 'a) + (declare-constant 'b) + (declare-constant 'c) + (declare-constant 'd) + (declare-constant 'h) + (declare-constant 'j) + (declare-constant 'k) + (declare-function 'f 2 :alias 'multiply) + (declare-function 'g 1 :alias 'inverse :kbo-weight '(1 2)) + (declare-relation 'p 3 :alias 'product) + (ordering-functions>constants t) + (declare-ordering-greaterp 'g 'f 'k 'j 'h 'd 'c 'b 'a 'e) + (use-hyperresolution t) + (use-term-ordering :kbo)))) + +(defun overbeek3 () + (refute-snark-example-file + "RNG008-6+rm_eq_rstfp" + '(;;(agenda-ordering-function #'fifo) + ;;(row-weight-limit 8) ;8 is minimum value for which proof can be found + (declare-constant 'zero :alias 'additive_identity) + (declare-constant 'a) + (declare-constant 'b) + (declare-constant 'c) + (declare-function 'j 2 :alias 'add :ordering-status :left-to-right) + (declare-function 'f 2 :alias 'multiply :ordering-status :left-to-right) + (declare-function 'g 1 :alias 'additive_inverse :kbo-weight 0) + (declare-relation 's 3 :alias 'sum) + (declare-relation 'p 3 :alias 'product) + (ordering-functions>constants t) + (declare-ordering-greaterp 'g 'f 'j 'c 'b 'a 'zero) + (use-hyperresolution t) + (use-term-ordering :kbo)))) + +(defun overbeek4 () + (refute-snark-example-file + "LCL024-1+rm_eq_rstfp" + '((declare-relation 'p 1 :alias 'is_a_theorem) + (declare-function 'e 2 :alias 'equivalent) + (use-hyperresolution t)))) + +(defun overbeek5 () + (refute-snark-example-file + "LCL038-1+rm_eq_rstfp" + '((declare-relation 'p 1 :alias 'is_a_theorem) + (declare-function 'i 2 :alias 'implies) + (use-hyperresolution t)))) + +(defun overbeek6 () + (refute-snark-example-file + "LCL111-1" + '((declare-relation 'p 1 :alias '|is_a_theorem|) + (declare-function 'i 2 :alias '|implies|) + (declare-function 'n 1 :alias '|not|) + ;;(agenda-ordering-function #'fifo) ;very fast with fifo ordering + (use-hyperresolution t) + (level-pref-for-giving 1)) + :format :tptp)) + +(defun overbeek7 () + (refute-snark-example-file + "LCL114-1+rm_eq_rstfp" + '((declare-relation 'p 1 :alias 'is_a_theorem) + (declare-function 'i 2 :alias 'implies) + (declare-function 'n 1 :alias 'not) + (use-hyperresolution t) + (level-pref-for-giving 1)))) + +(defun overbeek4-1 () + (refute-snark-example-file + "LCL024-1+rm_eq_rstfp" + '((declare-relation 'p 1 :alias 'is_a_theorem) + (declare-function 'e 2 :alias 'equivalent) + (use-resolution t) + (use-literal-ordering-with-resolution 'literal-ordering-a)))) + +(defun overbeek5-1 () + (refute-snark-example-file + "LCL038-1+rm_eq_rstfp" + '((declare-relation 'p 1 :alias 'is_a_theorem) + (declare-function 'i 2 :alias 'implies) + (use-resolution t) + (use-literal-ordering-with-resolution 'literal-ordering-a)))) + +(defun overbeek6-1 () + (refute-snark-example-file + "LCL111-1" + '((declare-relation 'p 1 :alias '|is_a_theorem|) + (declare-function 'i 2 :alias '|implies|) + (declare-function 'n 1 :alias '|not|) + (use-resolution t) + (assert-context :current) + (use-literal-ordering-with-resolution 'literal-ordering-a) + (level-pref-for-giving 1)) + :format :tptp)) + +(defun overbeek7-1 () + (refute-snark-example-file + "LCL114-1+rm_eq_rstfp" + '((declare-relation 'p 1 :alias 'is_a_theorem) + (declare-function 'i 2 :alias 'implies) + (declare-function 'n 1 :alias 'not) + (use-resolution t) + (use-literal-ordering-with-resolution 'literal-ordering-a) + (level-pref-for-giving 1)))) + +(defun overbeek1e () + (refute-snark-example-file + "GRP002-3+rm_eq_rstfp" + '((declare-constant 'e :alias 'identity) + (declare-constant 'a) + (declare-constant 'b) + (declare-function 'f 2 :alias 'multiply :ordering-status :left-to-right) + (declare-function 'g 1 :alias 'inverse :kbo-weight '(1 2)) + (declare-function 'h 2 :alias 'commutator :kbo-weight '(5 3 3) :ordering-status :left-to-right) + (ordering-functions>constants t) + (declare-ordering-greaterp 'h 'g 'f 'b 'a 'e) + (use-paramodulation t) + (use-term-ordering :kbo)))) + +(defun overbeek2e () + (refute-snark-example-file + "ROB005-1+rm_eq_rstfp" + '((declare-constant 'a) + (declare-constant 'b) + (declare-constant 'c) + (declare-function 'o 2 :alias 'add) + (declare-function 'n 1 :alias 'negate) + (ordering-functions>constants t) + (declare-ordering-greaterp 'n 'o 'a 'b 'c) + (use-paramodulation t)))) + +(defun overbeek3e () + (refute-snark-example-file + "BOO002-1+rm_eq_rstfp" + '(;;(agenda-ordering-function #'fifo) + ;;(row-weight-limit 15) ;15 is minimum value for which proof can be found + (declare-function 'f 3 :alias 'multiply :ORDERING-STATUS :RIGHT-TO-LEFT) + (declare-function 'g 1 :alias 'inverse) + (declare-constant 'a) + (declare-constant 'b) + (declare-ordering-greaterp 'b 'a 'g 'f) + (use-paramodulation t) + (use-term-ordering :kbo)))) + +(defun overbeek4e () + (refute-snark-example-file + "GRP014-1+rm_eq_rstfp" + '((declare-constant 'a) + (declare-constant 'b) + (declare-constant 'c) + (declare-function 'f 2 :alias 'multiply :ordering-status :left-to-right) + (declare-function 'i 1 :alias 'inverse :kbo-weight 0) + (ordering-functions>constants t) + (declare-ordering-greaterp 'i 'f 'c 'b 'a) + (use-paramodulation t) + (use-term-ordering :kbo) ;KBO better than RPO 4/20/92 + ;;(use-function-creation t) ;constant-creation only, insert new symbols into KB ordering + ))) + +(defun overbeek5e () + (refute-snark-example-file + "LCL109-2+rm_eq_rstfp" + '(;;(ROW-WEIGHT-LIMIT 21) ;21 works, think 19 will too + (declare-function 'i 2 :alias 'implies #| :ordering-status :left-to-right |#) + (declare-function 'n 1 :alias 'not) + (declare-constant 'a) + (declare-constant 'b) + (declare-constant 't :alias 'true0) + (ordering-functions>constants t) + (declare-ordering-greaterp 'i 'n 'a 'b 't) + (use-paramodulation t)))) + +(defun overbeek6e () + (refute-snark-example-file + "COL049-1+rm_eq_rstfp" + '(;;(row-weight-limit 21) ;don't know what value works (19 doesn't) + (declare-function 'a 2 :alias 'apply :ordering-status :left-to-right) + (declare-function 'f 1 :weight-code (list (constantly 1))) + (declare-constant 'b) + (declare-constant 'm) + (declare-constant 'w) + (ordering-functions>constants t) + (declare-ordering-greaterp 'a 'f 'b 'w 'm) + (use-paramodulation t)))) + +(defun overbeek7e () + (refute-snark-example-file + "RNG009-5+rm_eq_rstfp" + '((row-weight-before-simplification-limit 100) + (row-weight-limit 50) + (declare-constant 'zero :alias 'additive_identity) + (declare-function '* 2 :alias 'multiply :ordering-status :left-to-right) + (declare-function '- 1 :alias 'additive_inverse) + (declare-function '+ 2 :alias 'add) + (ordering-functions>constants t) + (declare-ordering-greaterp '* '- '+ 'zero) + (DECLARE-CANCELLATION-LAW '= '+ 'zero) + (use-paramodulation t)))) + +(defun overbeek7e-1 () + (refute-snark-example-file + "RNG009-5+rm_eq_rstfp" + '((row-weight-before-simplification-limit 100) + (row-weight-limit 50) + (declare-constant 'zero :alias 'additive_identity) + (declare-function '* 2 :alias 'multiply :ordering-status :left-to-right) + (declare-function '- 1 :alias 'additive_inverse) + (declare-function '+ 2 :alias 'add) + (ordering-functions>constants t) + (declare-ordering-greaterp '* '- '+ 'zero) + (DECLARE-CANCELLATION-LAW '= '+ 'zero) + (use-paramodulation t) + (use-associative-unification t)))) + +(defun overbeek8e () + (refute-snark-example-file + "COL003-1+rm_eq_rstfp" + '((declare-function 'a 2 :alias 'apply :ordering-status :left-to-right) + (declare-function 'f 1 :weight-code (list (constantly 1))) + (declare-constant 'b) + (declare-constant 'w) + (ordering-functions>constants t) + (declare-ordering-greaterp 'a 'f 'b 'w) + (use-paramodulation t)))) + +(defun overbeek9e () + (refute-snark-example-file + "RNG010-5+rm_eq_rstfp" + '((use-paramodulation t)))) + +(defun overbeek10e () + (refute-snark-example-file + "RNG011-5+rm_eq_rstfp" + '((use-paramodulation t)))) + +;;; overbeek-test.lisp EOF diff --git a/snark-20120808r02/examples/ramsey-examples.lisp b/snark-20120808r02/examples/ramsey-examples.lisp new file mode 100644 index 0000000..ffd551c --- /dev/null +++ b/snark-20120808r02/examples/ramsey-examples.lisp @@ -0,0 +1,191 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: ramsey-examples.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2006. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +;;; see http://mathworld.wolfram.com/RamseyNumber.html +;;; for Ramsey Number definition and results +;;; +;;; r( 3, 3) = 6 done +;;; r( 3, 4) = 9 done +;;; r( 3, 5) = 14 done +;;; r( 3, 6) = 18 +;;; r( 3, 7) = 23 +;;; r( 3, 8) = 28 +;;; r( 3, 9) = 36 +;;; r( 3,10) in [40,43] +;;; r( 4, 4) = 18 +;;; r( 4, 5) = 25 +;;; r( 4, 6) in [35,41] +;;; r( 5, 5) in [43,49] +;;; r( 6, 6) in [102,165] + +(defun ramsey-3-3 (n) + ;; results: found to be satisfiable for n=5, unsatisfiable for n=6 (should be unsatisfiable iff n>=6) + (let ((clause-set (make-dp-clause-set))) + (no-clique-of-order-3 n clause-set) + (no-independent-set-of-order-3 n clause-set) + (dp-satisfiable-p clause-set :atom-choice-function #'choose-an-atom-of-a-shortest-clause))) + +(defun ramsey-3-4 (n) + ;; results: found to be satisfiable for n=8, unsatisfiable for n=9 (should be unsatisfiable iff n>=9) + (let ((clause-set (make-dp-clause-set))) + (no-clique-of-order-3 n clause-set) + (no-independent-set-of-order-4 n clause-set) + (dp-satisfiable-p clause-set :atom-choice-function #'choose-an-atom-of-a-shortest-clause))) + +(defun ramsey-3-5 (n) + ;; results: found to be satisfiable for n=13, unsatisfiable for n=14 (should be unsatisfiable iff n>=14) + (let ((clause-set (make-dp-clause-set))) + (no-clique-of-order-3 n clause-set) + (no-independent-set-of-order-5 n clause-set) + (dp-satisfiable-p clause-set :atom-choice-function #'choose-an-atom-of-a-shortest-clause))) + +(defun ramsey-3-6 (n) + ;; results: found to be satisfiable for n=17, unsatisfiable for n=?? (should be unsatisfiable iff n>=18) + (let ((clause-set (make-dp-clause-set))) + (no-clique-of-order-3 n clause-set) + (no-independent-set-of-order-6 n clause-set) + (dp-satisfiable-p clause-set :atom-choice-function #'choose-an-atom-of-a-shortest-clause))) + +(defun ramsey-4-4 (n) + ;; results: found to be satisfiable for n=17, unsatisfiable for n=?? (should be unsatisfiable iff n>=18) + (let ((clause-set (make-dp-clause-set))) + (no-clique-of-order-4 n clause-set) + (no-independent-set-of-order-4 n clause-set) + (dp-satisfiable-p clause-set :atom-choice-function #'choose-an-atom-of-a-shortest-clause))) + +(defun ramsey-4-5 (n) + ;; results: found to be satisfiable for n=23, unsatisfiable for n=?? (should be unsatisfiable iff n>=25) + (let ((clause-set (make-dp-clause-set))) + (no-clique-of-order-4 n clause-set) + (no-independent-set-of-order-5 n clause-set) + (dp-satisfiable-p clause-set :atom-choice-function #'choose-an-atom-of-a-shortest-clause-WITH-MOST-OCCURRENCES-RANDOMLY))) + +(defun ramsey-4-6 (n) + ;; results: found to be satisfiable for n=29, unsatisfiable for n=?? + (let ((clause-set (make-dp-clause-set))) + (no-clique-of-order-4 n clause-set) + (no-independent-set-of-order-6 n clause-set) + (dp-satisfiable-p clause-set :atom-choice-function #'choose-an-atom-of-a-shortest-clause-WITH-MOST-OCCURRENCES-RANDOMLY))) + +(defun no-clique-of-order-3 (nnodes clause-set) + ;; in every 3 node subset, at least one pair is not connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j)) + (or (not (c i j)) (not (c i k)) (not (c j k)))) + clause-set)) + +(defun no-clique-of-order-4 (nnodes clause-set) + ;; in every 4 node subset, at least one pair is not connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j) + (l :in (ints k ,nnodes) :except k)) + (or (not (c i j)) (not (c i k)) (not (c i l)) (not (c j k)) (not (c j l)) (not (c k l)))) + clause-set)) + +(defun no-clique-of-order-5 (nnodes clause-set) + ;; in every 5 node subset, at least one pair is not connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j) + (l :in (ints k ,nnodes) :except k) + (m :in (ints l ,nnodes) :except l)) + (or (not (c i j)) (not (c i k)) (not (c i l)) (not (c i m)) + (not (c j k)) (not (c j l)) (not (c j m)) + (not (c k l)) (not (c k m)) + (not (c l m)))) + clause-set)) + +(defun no-clique-of-order-6 (nnodes clause-set) + ;; in every 6 node subset, at least one pair is not connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j) + (l :in (ints k ,nnodes) :except k) + (m :in (ints l ,nnodes) :except l) + (n :in (ints m ,nnodes) :except m)) + (or (not (c i j)) (not (c i k)) (not (c i l)) (not (c i m)) (not (c i n)) + (not (c j k)) (not (c j l)) (not (c j m)) (not (c j n)) + (not (c k l)) (not (c k m)) (not (c k n)) + (not (c l m)) (not (c l n)) + (not (c m n)))) + clause-set)) + +(defun no-independent-set-of-order-3 (nnodes clause-set) + ;; in every 3 node subset, at least one pair is connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j)) + (or (c i j) (c i k) (c j k))) + clause-set)) + +(defun no-independent-set-of-order-4 (nnodes clause-set) + ;; in every 4 node subset, at least one pair is connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j) + (l :in (ints k ,nnodes) :except k)) + (or (c i j) (c i k) (c i l) (c j k) (c j l) (c k l))) + clause-set)) + +(defun no-independent-set-of-order-5 (nnodes clause-set) + ;; in every 5 node-subset, at least one pair is connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j) + (l :in (ints k ,nnodes) :except k) + (m :in (ints l ,nnodes) :except l)) + (or (c i j) (c i k) (c i l) (c i m) + (c j k) (c j l) (c j m) + (c k l) (c k m) + (c l m))) + clause-set)) + +(defun no-independent-set-of-order-6 (nnodes clause-set) + ;; in every 6 node-subset, at least one pair is connected + (dp-insert-wff `(forall ((i :in (ints 1 ,nnodes)) + (j :in (ints i ,nnodes) :except i) + (k :in (ints j ,nnodes) :except j) + (l :in (ints k ,nnodes) :except k) + (m :in (ints l ,nnodes) :except l) + (n :in (ints m ,nnodes) :except m)) + (or (c i j) (c i k) (c i l) (c i m) (c i n) + (c j k) (c j l) (c j m) (c j n) + (c k l) (c k m) (c k n) + (c l m) (c l n) + (c m n))) + clause-set)) + +(defun ramsey-test () + ;; there doesn't seem to be any difference in search space size between choose-an-atom-of-a-shortest-clause and choose-an-atom-of-a-shortest-clause-randomly + ;; choose-an-atom-of-a-shortest-clause-with-most-occurrences-randomly seems to work much better for satisfiable instances + (cl:assert (eval (print '(ramsey-3-3 5)))) ;2 branches + (cl:assert (not (eval (print '(ramsey-3-3 6))))) ;22 branches + (cl:assert (eval (print '(ramsey-3-4 8)))) ;4 branches + (cl:assert (not (eval (print '(ramsey-3-4 9))))) ;10,251 branches + (cl:assert (eval (print '(ramsey-3-5 13)))) ;93,125 branches +;;(cl:assert (not (eval (print '(ramsey-3-5 14))))) ;1,078,238,816 branches +;;(cl:assert (eval (print '(ramsey-4-4 17)))) ;56,181,666 branches +;;(cl:assert (not (eval (print '(ramsey-4-4 18))))) + ) + +;;; ramsey-examples.lisp EOF diff --git a/snark-20120808r02/examples/reverse-example.abcl b/snark-20120808r02/examples/reverse-example.abcl new file mode 100644 index 0000000000000000000000000000000000000000..e1d7aeda309a35aebc8699ecf7f834632e5214e0 GIT binary patch literal 2610 zcmZ|RcQhMn9|v%=c5Ck%6}4jvYP44D*sU#yRZ+7=QP+rBt*C0%p3x9mf@(r3QLA>f zv1hIov}kM8tLNNv?!E7O-tTjsb7u3O){bQN7&BKp|HEK z&@h-BED{P24uk>S;a0AYE(Ok5(#@GCsBn|@_&gXP#pmgpEov8#7^EtQr7Tdau0(g9 zMFP;>avbszPZA7g>b}AXstgq+K69Na>ol%4Ab5d{6EX*%r@o6_s-fp*7!;hrL>J$X6Q4y<$=FASQq-}7%Gma08IO){%H zBEqXAb&1v5Kw`syP58$(pp( z)POhmWN!pDH0tJT&;Gq!ZO&YIfJYx?nUJWs(ZVs}$h#sk1 z_XL|NS!k`-t&t0#Zz&|sa}e2zGmmZe_EU8=i!7?ZL|iF5d)ZrXic*alm!%|dP+yfg zL$M%MZz~2hnWUZEV8O_(Alsk6w^&qq*~b$n^Ma3yPDy3Ro+&8BLt>q&G{nNv7p0OQ ziU=DBl_l`G6f5^ZH*?lke*9#^NWD0etLr0zNj>n7Qy@nvL@!W$(y-kwWjeeec@LI8U}6KSwRa_829+j z+`;5Q7fZhmT!GF^^TqH`w?b%pgepveK(J_g#=8yg@^Qo5K+pn$)nONW+3dawVaN_i zKe$FLBCU?t{aUPn25EpJ?MLCEzsa@mCeT8&h-L^cX zE1Dxi%AOJE^f$F z5ySIr^=y3mP13rmmU%ta1%kXbW_*Z1b0 z+G0b?v!Y%98euoBF68R zx83=6{njIceLo25Cg3w&#;${DrU1=}5u%ePT571XTzF0Bl>R+CCja2+k!N;1+xA9U zI9*blaN|1IB&u;_hZ|w5@n{x_R|AO8!Kr?lNTaW-yaao;``uBW;YeFAWYmGZw^<>x zejZkkE$G?cIo!C=k;ggXPi-s6M0MgAklw}iQp&xeT6ZHOXswI|7(+x<$A6?hAxVZL z1=FSk(x;Q4f3&`UzLF^WzMhRDW8i+(bE(F4)98h7-6M@589mo;;PYDa<6^R*V;ox- zQxc-9?<~hp>zg;86cGt`-SWu9szVl@H@9C*gOYG$;-mpTE(r4O&y`&#(Dp8bsSfn@ zAoy0b+)X%B9g?|ys#~|t+R z@)9GaUeVZ>i;!5CD%amtqv$+T@B7mu#9^1Uu4o7l(mg_uT*V zcPTdR6BfwI8f=)1d$KG~;xn!4?28QO0^FWi&HX9y%iba@5)oZ$r3B~aDA%9xB&67U zLKi>(aCHy^D3(QP*Fz3*q!7n_{Q*cJsDaZgl04$a08!1*0g`%GPEZw>1`g=N@$O^y z#kFNal#$#3y#ClU0Pi>^0KmJA-4@3ijiJTyHe<6$H=q<&n%koP=i`b~B)mP|v znI_POQ*;x^dGpTD@@3ks(K)%P`hn$BT62G4B>SB)9U!4KE_gq zhFiTg%Oa1qDTlI)&eER_{%*DhfoY)P?OrCj0vd z{rT%vJ z3C#i$n;9vp0P~Enxk9v$5)yHmwsm%WMDu literal 0 HcmV?d00001 diff --git a/snark-20120808r02/examples/reverse-example.lisp b/snark-20120808r02/examples/reverse-example.lisp new file mode 100644 index 0000000..cd1dc74 --- /dev/null +++ b/snark-20120808r02/examples/reverse-example.lisp @@ -0,0 +1,51 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: reverse-example.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2006. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +(defun reverse-example (&key (length 3) magic) + (let ((l nil)) + (dotimes (i length) + (push i l)) + (initialize) + (declare-function '$$cons 2 :new-name 'cons) + (declare-function '$$list :any :new-name 'list) + (declare-function '$$list* :any :new-name 'list*) + (cond + (magic + (use-hyperresolution t) + (use-magic-transformation t)) + (t + (use-resolution t) + (assert-supported nil) + (assert-sequential t) + (print-rows-shortened t))) + (assert '(reverse nil nil)) + (assert '(implied-by + (reverse (cons ?x ?l) ?l1) + (and + (reverse ?l ?l2) + (append ?l2 (cons ?x nil) ?l1)))) + (assert '(append nil ?l ?l)) + (assert '(implied-by + (append (cons ?x ?l1) ?l2 (cons ?x ?l3)) + (append ?l1 ?l2 ?l3))) + (prove `(reverse (list ,@l) ?l) :answer '(values ?l)))) + +;;; reverse-example.lisp EOF diff --git a/snark-20120808r02/examples/snark-test b/snark-20120808r02/examples/snark-test new file mode 100644 index 0000000..ba39d59 --- /dev/null +++ b/snark-20120808r02/examples/snark-test @@ -0,0 +1,19 @@ +;;; a script to run some SNARK examples +;;; usage: +;;; cd snark +;;; lisp < examples/snark-test >& examples/snark-test.out & + +#-snark (load "snark-system.lisp") +#-snark (make-snark-system) +(in-package :snark-user) +(default-print-row-wffs-prettily nil) +(overbeek-test) +(time (steamroller-example)) +(time (front-last-example)) +(time (reverse-example)) +(time (reverse-example :magic t)) +(time (hot-drink-example)) +(coder-test) +(time (snark-dpll::queens-problem 8 :find-all-models -1)) +(generate-latin-squares 7) +(quit) diff --git a/snark-20120808r02/examples/steamroller-example.abcl b/snark-20120808r02/examples/steamroller-example.abcl new file mode 100644 index 0000000000000000000000000000000000000000..cd512e41c7552c8fd4a3fb6c338fc4aa6e9e91e3 GIT binary patch literal 3775 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 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/examples/steamroller-example.lisp b/snark-20120808r02/examples/steamroller-example.lisp new file mode 100644 index 0000000..bb866cc --- /dev/null +++ b/snark-20120808r02/examples/steamroller-example.lisp @@ -0,0 +1,82 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: steamroller-example.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2011. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +(defun steamroller-example0 () + (refute-snark-example-file + "PUZ031+1" + '((use-hyperresolution)))) + +(defun steamroller-example () + (initialize) + (use-hyperresolution) + + (declare-sort 'animal :subsorts-incompatible t) + (declare-sort 'plant :subsorts-incompatible t) + (declare-subsort 'bird 'animal) + (declare-subsort 'caterpillar 'animal) + (declare-subsort 'fox 'animal) + (declare-subsort 'snail 'animal) + (declare-subsort 'wolf 'animal) + (declare-subsort 'grain 'plant) + + (declare-relation 'e 2 :sort '((1 animal))) ;animal*true + (declare-relation 'm 2 :sort '((t animal))) ;animal*animal + + (declare-variable '?a1 :sort 'animal) + (declare-variable '?a2 :sort 'animal) + + (assertion (forall ((?s1 snail) (?b1 bird)) ;KIF-style sort specification + (m ?s1 ?b1)) ;all KIF variables begin with ? + :name snails-are-smaller-than-birds) + (assertion (forall ((b1 :sort bird) (f1 :sort fox)) ;SNARK-preferred sort specification + (m b1 f1)) + :name birds-are-smaller-than-foxes) + (assertion (forall ((f1 true :sort fox) + (w1 wolf :sort wolf)) ;this works too + (m f1 w1)) + :name foxes-are-smaller-than-wolves) + (assertion (forall ((w1 wolf) (f1 fox)) + (not (e w1 f1))) + :name wolves-dont-eat-foxes) + (assertion (forall ((w1 :sort wolf) (g1 :sort grain)) + (not (e w1 g1))) + :name wolves-dont-eat-grain) + (assertion (forall ((b1 :sort bird) (c1 :sort caterpillar)) + (e b1 c1)) + :name birds-eat-caterpillars) + (assertion (forall ((b1 :sort bird) (s1 :sort snail)) + (not (e b1 s1))) + :name birds-dont-eat-snails) + (assertion (forall ((c1 :sort caterpillar)) + (exists ((p1 :sort plant)) + (e c1 p1))) + :name caterpillars-eat-some-plants) + (assertion (forall ((s1 :sort snail)) + (exists ((p1 :sort plant)) + (e s1 p1))) + :name snails-eat-some-plants) + (assertion (forall ((p1 :sort plant) (p2 :sort plant)) + (implied-by (or (e ?a1 ?a2) (e ?a1 p1)) (and (m ?a2 ?a1) (e ?a2 p2))))) + + (prove '(and (e ?x.animal ?y.animal) (e ?y.animal ?z.grain)) + :answer '(values ?x.animal ?y.animal ?z.grain))) + +;;; steamroller-example.lisp EOF diff --git a/snark-20120808r02/make-snark-ccl b/snark-20120808r02/make-snark-ccl new file mode 100755 index 0000000..dec5068 --- /dev/null +++ b/snark-20120808r02/make-snark-ccl @@ -0,0 +1,6 @@ +ccl < compile >& compile.out +ccl << ENDOFSTDIN +(load "snark-system.lisp") +(make-snark-system) +(save-snark-system) +ENDOFSTDIN diff --git a/snark-20120808r02/make-snark-ccl64 b/snark-20120808r02/make-snark-ccl64 new file mode 100755 index 0000000..12f6bca --- /dev/null +++ b/snark-20120808r02/make-snark-ccl64 @@ -0,0 +1,6 @@ +ccl64 < compile >& compile.out +ccl64 << ENDOFSTDIN +(load "snark-system.lisp") +(make-snark-system) +(save-snark-system) +ENDOFSTDIN diff --git a/snark-20120808r02/make-snark-sbcl b/snark-20120808r02/make-snark-sbcl new file mode 100755 index 0000000..9e8f4f0 --- /dev/null +++ b/snark-20120808r02/make-snark-sbcl @@ -0,0 +1,6 @@ +sbcl < compile >& compile.out +sbcl << ENDOFSTDIN +(load "snark-system.lisp") +(make-snark-system) +(save-snark-system :name "snark" :executable t) +ENDOFSTDIN diff --git a/snark-20120808r02/make-snark-sbcl64 b/snark-20120808r02/make-snark-sbcl64 new file mode 100755 index 0000000..7a2bbf8 --- /dev/null +++ b/snark-20120808r02/make-snark-sbcl64 @@ -0,0 +1,6 @@ +~/sbcl-1.0.29-x86_64-darwin/run-sbcl.sh < compile >& compile.out +~/sbcl-1.0.29-x86_64-darwin/run-sbcl.sh << ENDOFSTDIN +(load "snark-system.lisp") +(make-snark-system) +(save-snark-system :name "snark64" :executable t) +ENDOFSTDIN diff --git a/snark-20120808r02/run-snark b/snark-20120808r02/run-snark new file mode 100755 index 0000000..a5a274a --- /dev/null +++ b/snark-20120808r02/run-snark @@ -0,0 +1,55 @@ +#! /bin/tcsh + +# this is Geoff's run-snark script for SystemOnTPTP as of 2012-08-21 + +if (! -f $1) then + echo "Missing filename" + exit +endif +echo $1 +if ($2 == "") then + set runtimelimit = nil +else + set runtimelimit = $2 +endif + +set this_directory=`dirname $0` +$this_directory/snark << ENDOFSTDIN +#+sbcl (sb-ext:disable-debugger) +(in-package :snark-user) + +(defvar snark-tptp-options) +(setf snark-tptp-options + '( + (agenda-length-limit nil) + (agenda-length-before-simplification-limit nil) + (use-hyperresolution t) + (use-ur-resolution t) + (use-paramodulation t) + (use-factoring :pos) + (use-literal-ordering-with-hyperresolution 'literal-ordering-p) + (use-literal-ordering-with-paramodulation 'literal-ordering-p) + (ordering-functions>constants t) + (assert-context :current) + (run-time-limit $runtimelimit) + (listen-for-commands nil) + (use-closure-when-satisfiable t) + (print-rows-when-given nil) + (print-rows-when-derived nil) + (print-unorientable-rows nil) + (print-row-wffs-prettily nil) + (print-final-rows :tptp) ;System on TPTP uses value :tptp + (print-options-when-starting nil) ;System on TPTP uses this + (use-variable-name-sorts nil) + (use-purity-test t) + (use-relevance-test t) + (declare-tptp-symbols1) + (declare-tptp-symbols2) + )) + +(setf *tptp-environment-variable* "$TPTP") +(refute-file "$1" :options snark-tptp-options :format :tptp) + +(quit) +ENDOFSTDIN + diff --git a/snark-20120808r02/snark-interface.fasl b/snark-20120808r02/snark-interface.fasl new file mode 100644 index 0000000000000000000000000000000000000000..92c9b132c76bb5eee160ac36a38013cffa089796 GIT binary patch literal 21080 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. + +(in-package :common-lisp-user) + +;;; load files from the same directory that this file was loaded from + +(defparameter *snark-system-pathname* *load-truename*) + +(defparameter *snark-files2* + '("loads" + "lisp-system" + "deque-system" + "sparse-array-system" + "numbering-system" + "agenda-system" + "infix-reader-system" + "feature-system" + "dpll-system" + "snark-pkg")) + +(defparameter *snark-files* + '("useful" + "posets" + "solve-sum" + "globals" + "options" + "terms2" + "rows" + "row-contexts" + "constants" + "functions" + "variables" + "subst" + "substitute" + "symbol-table2" + "symbol-definitions" + "assertion-analysis" + "jepd-relations-tables" "jepd-relations" "date-reasoning2" + "constraints" +;; "constraint-purify" + "connectives" + "wffs" +;; "equality-elimination2" + "nonhorn-magic-set" + "dp-refute" + "sorts-functions" + "sorts-interface" + "sorts" + "argument-bag-ac" + "argument-list-a1" + "unify" + "unify-bag" "subsume-bag" + "unify-vector" + "equal" + "variant" + "alists" + "term-hash" + "trie-index" + "path-index" + "trie" "feature-vector" "feature-vector-trie" "feature-vector-index" + "term-memory" +;; "instance-graph" "instance-graph2" + "weight" + "eval" + "input" + "output" + "simplification-ordering" + "symbol-ordering" + "multiset-ordering" + "recursive-path-ordering" "ac-rpo" + "knuth-bendix-ordering2" + "rewrite" + "rewrite-code" + "code-for-strings2" + "code-for-numbers3" + "code-for-lists2" + "code-for-bags4" + "resolve-code" + "resolve-code-tables" + "main" + "subsume" "subsume-clause" + "assertion-file" + "tptp" + "tptp-symbols" + "coder" + ("examples" "overbeek-test") + ("examples" "front-last-example") + ("examples" "steamroller-example") + ("examples" "reverse-example") + ("examples" "hot-drink-example") + ("examples" "coder-examples") + ("examples" "latin-squares") + "patches" + )) + +(defvar *compile-me* nil) + +(defun make-snark-system (&optional (*compile-me* *compile-me*)) + (pushnew :snark *features*) + #+cmu (setf extensions::*gc-verbose* nil) + (when (eq *compile-me* :optimize) + (proclaim (print '(optimize (safety 1) (space 1) (speed 3) (debug 1))))) + (with-compilation-unit () + (dolist (name *snark-files2*) + (let* ((dir (if (consp name) + (append (pathname-directory *snark-system-pathname*) (butlast name)) + (append (pathname-directory *snark-system-pathname*) (list "src")))) + (name (if (consp name) (first (last name)) name)) + (file (make-pathname :directory dir :name name :defaults *snark-system-pathname*))) + (load file))) + (setf *package* (find-package :snark)) + #+gcl (shadow '(#:assert #:substitute #:variable)) + (dolist (name *snark-files*) + (let* ((dir (if (consp name) + (append (pathname-directory *snark-system-pathname*) (butlast name)) + (append (pathname-directory *snark-system-pathname*) (list "src")))) + (name (if (consp name) (first (last name)) name)) + (file (make-pathname :directory dir :name name :defaults *snark-system-pathname*))) + (load (if *compile-me* + (compile-file file) + (or (probe-file (compile-file-pathname file)) file)))))) +;;#-(or symbolics mcl) (load "/home/pacific1/stickel/spice/build.lisp") + (setf *package* (find-package :snark-user)) + (setf *print-pretty* nil) + #+openmcl (egc nil) + (funcall (intern (symbol-name :initialize) :snark))) + +#+ignore +(defun fix-snark-files () + (let ((dir (pathname-directory cl-user::*snark-system-pathname*))) + (dolist (x (append + (directory + (make-pathname :directory (append dir (list "src")) :name :wild :type "lisp")) + (directory + (make-pathname :directory (append dir (list "Private")) :name :wild :type "lisp")) + (directory + (make-pathname :directory (append dir (list "examples")) :name :wild :type "lisp")) + (directory + (make-pathname :directory (append dir (list "examples")) :name :wild :type "kif")))) + (ccl:set-mac-file-type x :text) + (ccl:set-mac-file-creator x :ccl2)))) + +;;; snark-system.lisp EOF diff --git a/snark-20120808r02/src/ac-rpo.abcl b/snark-20120808r02/src/ac-rpo.abcl new file mode 100644 index 0000000000000000000000000000000000000000..b1a3fd875f40983b8952427d4d2c5dcd1dfbb6b3 GIT binary patch literal 16409 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 YpEv^lEjfUI5PpAXK!JdkdH($RUvy}|e*gdg literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/ac-rpo.lisp b/snark-20120808r02/src/ac-rpo.lisp new file mode 100644 index 0000000..75c6231 --- /dev/null +++ b/snark-20120808r02/src/ac-rpo.lisp @@ -0,0 +1,304 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: ac-rpo.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2010. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +;;; recursive-path-ordering extensions for Rubio's "A fully syntactic AC-RPO" + +(defun ac-rpo-compare-compounds (fn xargs yargs subst) + (or (ac-rpo-cache-lookup fn xargs yargs) + (ac-rpo-cache-store fn xargs yargs (ac-rpo-compare-compounds* fn xargs yargs subst)))) + +(defun ac-rpo-compare-compounds* (fn xargs yargs subst) + (let ((com1 nil) (com2 nil) (com3 nil) (com4 nil) + (always-> t) (always-< t) + big-head-of-x no-small-head-of-x + big-head-of-y no-small-head-of-y) + (when (and (eq '= (setf com1 (compare-argument-counts xargs yargs subst))) + (eq '= (compare-term-multisets #'rpo-compare-terms xargs yargs subst '=))) + (return-from ac-rpo-compare-compounds* '=)) + (dolist (yargs1 (emb-no-big fn yargs subst)) + (case (ac-rpo-compare-compounds fn xargs yargs1 subst) + (? + (setf always-> nil)) + ((< =) + (return-from ac-rpo-compare-compounds* '<)))) + (when always-> + (setf (values big-head-of-x no-small-head-of-x) + (big-head-and-no-small-head fn xargs subst)) + (setf (values big-head-of-y no-small-head-of-y) + (big-head-and-no-small-head fn yargs subst)) + (when (and (case (setf com4 (compare-no-small-heads fn no-small-head-of-x no-small-head-of-y subst nil)) + ((> =) + t)) + (or (eq '> com1) + (eq '> (setf com2 (compare-term-multisets #'rpo-compare-terms big-head-of-x big-head-of-y subst nil))) + (case com1 + ((>= =) + (cond + ((and (eq big-head-of-y yargs) (eq '> com2)) + t) + ((and (eq big-head-of-x xargs) (neq '> com2)) + nil) + ((and (eq big-head-of-x xargs) (eq big-head-of-y yargs)) + (eq '> com2)) + (t + (eq '> (setf com3 (compare-term-multisets #'rpo-compare-terms xargs yargs subst nil))))))))) + (return-from ac-rpo-compare-compounds* '>))) + (dolist (xargs1 (emb-no-big fn xargs subst)) + (case (ac-rpo-compare-compounds fn xargs1 yargs subst) + (? + (setf always-< nil)) + ((> =) + (return-from ac-rpo-compare-compounds* '>)))) + (when always-< + (unless always-> + (setf (values big-head-of-x no-small-head-of-x) + (big-head-and-no-small-head fn xargs subst)) + (setf (values big-head-of-y no-small-head-of-y) + (big-head-and-no-small-head fn yargs subst))) + (when (and (case (or com4 (compare-no-small-heads fn no-small-head-of-x no-small-head-of-y subst nil)) + ((< =) + t)) + (or (eq '< com1) + (eq '< (or com2 (setf com2 (compare-term-multisets #'rpo-compare-terms big-head-of-x big-head-of-y subst nil)))) + (case com1 + ((<= =) + (cond + ((and (eq big-head-of-x xargs) (eq '< com2)) + t) + ((and (eq big-head-of-y yargs) (neq '< com2)) + nil) + ((and (eq big-head-of-x xargs) (eq big-head-of-y yargs)) + (eq '< com2)) + (t + (eq '< (or com3 (compare-term-multisets #'rpo-compare-terms xargs yargs subst '<))))))))) + (return-from ac-rpo-compare-compounds* '<))) + '?)) + +(defun emb-no-big (fn args subst) + ;; defn 12 + (let ((revargs nil) (result nil) result-last) + (dotails (args args) + (let ((argi (first args))) + (when (dereference argi subst :if-compound (neq '> (symbol-ordering-compare (head argi) fn))) + (dolist (argij (args argi)) + (collect (revappend + revargs + (dereference + argij subst + :if-variable (cons argij (rest args)) + :if-constant (cons argij (rest args)) + :if-compound (if (eq fn (head argij)) + (append (flatargs argij subst) (rest args)) + (cons argij (rest args))))) + result))) + (push argi revargs))) + result)) + +(defun big-head-and-no-small-head (fn args subst) + ;; defn 2: big-head is multiset of arguments for which (> (top arg) fn) + ;; defn 7: no-small-head is multiset of arguments for which (not (< (top arg) fn)) + (labels + ((big-head-and-no-small-head* (args) + (if (null args) + (values nil nil) + (let* ((l (rest args)) + (arg (first args)) + (com (dereference + arg subst + :if-variable '? + :if-constant (symbol-ordering-compare arg fn) + :if-compound (symbol-ordering-compare (head arg) fn)))) + (mvlet (((values big-head no-small-head) (big-head-and-no-small-head* l))) + (values (if (eq '> com) + (if (eq big-head l) args (cons arg big-head)) + big-head) + (if (neq '< com) + (if (eq no-small-head l) args (cons arg no-small-head)) + no-small-head))))))) + (big-head-and-no-small-head* args))) + +(defun compare-no-small-heads (fn no-small-head-of-x no-small-head-of-y subst testval) + ;; defn 11 comparison function adds the following + ;; conditions to the usual comparison + ;; (> compound compound') : (or (> (head compound) fn) (>= (head compound) (head compound')) + ;; (> constant compound) : (or (> constant fn) (> constant (head compound))) + ;; (> compound constant) : (or (> (head compound) fn) (> (head compound) constant)) + ;; (> compound variable) : (> (head compound) fn) + (labels + ((compare (x y subst testval) + (dereference2 + x y subst + :if-variable*variable (if (eq x y) '= '?) + :if-variable*constant '? + :if-constant*variable '? + :if-constant*constant (symbol-ordering-compare x y) + :if-compound*variable (if (eq '> (symbol-ordering-compare (head x) fn)) (rpo-compare-compound*variable x y subst testval) '?) + :if-variable*compound (if (eq '> (symbol-ordering-compare (head y) fn)) (rpo-compare-variable*compound x y subst testval) '?) + :if-compound*constant (ecase testval + (> + (and (or (eq '> (symbol-ordering-compare (head x) fn)) + (eq '> (symbol-ordering-compare (head x) y))) + (rpo-compare-compound*constant x y subst testval))) + (< + (and (or (eq '> (symbol-ordering-compare y fn)) + (eq '> (symbol-ordering-compare y (head x)))) + (rpo-compare-compound*constant x y subst testval))) + ((nil) + (ecase (rpo-compare-compound*constant x y subst testval) + (> + (if (or (eq '> (symbol-ordering-compare (head x) fn)) + (eq '> (symbol-ordering-compare (head x) y))) + '> + '?)) + (< + (if (or (eq '> (symbol-ordering-compare y fn)) + (eq '> (symbol-ordering-compare y (head x)))) + '< + '?)) + (? + '?)))) + :if-constant*compound (opposite-order (compare y x subst (opposite-order testval))) + :if-compound*compound (ecase testval + (= + (rpo-compare-compounds x y subst testval)) + (> + (and (or (eq '> (symbol-ordering-compare (head x) fn)) + (case (symbol-ordering-compare (head x) (head y)) + ((> =) + t))) + (rpo-compare-compounds x y subst testval))) + (< + (and (or (eq '> (symbol-ordering-compare (head y) fn)) + (case (symbol-ordering-compare (head y) (head x)) + ((> =) + t))) + (rpo-compare-compounds x y subst testval))) + ((nil) + (ecase (rpo-compare-compounds x y subst testval) + (> + (if (or (eq '> (symbol-ordering-compare (head x) fn)) + (case (symbol-ordering-compare (head x) (head y)) + ((> =) + t))) + '> + '?)) + (< + (if (or (eq '> (symbol-ordering-compare (head y) fn)) + (case (symbol-ordering-compare (head y) (head x)) + ((> =) + t))) + '< + '?)) + (= + '=) ;this added case is the only change in version 20090905r007 + (? + '?))))))) + (compare-term-multisets #'compare no-small-head-of-x no-small-head-of-y subst testval))) + +(defun compare-argument-counts (xargs yargs subst) + ;; xargs.subst and yargs.subst are already flattened argument lists + ;; of the same associative function + ;; this is the AC-RPO comparison of #(x) and #(y) that returns + ;; =, >, <, >=, =<, or ? + (let ((variable-counts nil) (variable-count 0) (nonvariable-count 0)) + (labels + ((count-arguments (args inc) + (declare (fixnum inc)) + (let (v) + (dolist (term args) + (dereference + term subst + :if-variable (cond + ((null variable-counts) + (setf variable-counts (cons (make-tc term inc) nil))) + ((setf v (assoc/eq term variable-counts)) + (incf (tc-count v) inc)) + (t + (push (make-tc term inc) variable-counts))) + :if-constant (incf nonvariable-count inc) + :if-compound (incf nonvariable-count inc)))))) + (count-arguments xargs 1) + (count-arguments yargs -1) + (dolist (v variable-counts) + (let ((c (tc-count v))) + (cond + ((plusp c) + (if (minusp variable-count) + (return-from compare-argument-counts '?) + (incf variable-count c))) + ((minusp c) + (if (plusp variable-count) + (return-from compare-argument-counts '?) + (incf variable-count c)))))) + (cond + ((plusp variable-count) + (cond + ((minusp nonvariable-count) + (let ((d (+ variable-count nonvariable-count))) + (cond + ((eql 0 d) + '>=) + ((plusp d) + '>) + (t + '?)))) + (t + '>))) + ((minusp variable-count) + (cond + ((plusp nonvariable-count) + (let ((d (+ variable-count nonvariable-count))) + (cond + ((eql 0 d) + '=<) + ((minusp d) + '<) + (t + '?)))) + (t + '<))) + ((eql 0 nonvariable-count) + '=) + (t + (if (plusp nonvariable-count) '> '<)))))) + +(defun ac-rpo-cache-lookup (fn xargs yargs) + (dolist (x *ac-rpo-cache* nil) + (when (and (eq fn (first x)) + (eql-list xargs (first (setf x (rest x)))) + (eql-list yargs (first (setf x (rest x))))) + (return (first (rest x)))))) + +(defun ac-rpo-cache-store (fn xargs yargs com) + (push (list fn xargs yargs com) *ac-rpo-cache*) + com) + +(defun eql-list (l1 l2) + (loop + (cond + ((null l1) + (return (null l2))) + ((null l2) + (return nil)) + ((neql (pop l1) (pop l2)) + (return nil))))) + +;;; ac-rpo.lisp EOF diff --git a/snark-20120808r02/src/agenda-system.lisp b/snark-20120808r02/src/agenda-system.lisp new file mode 100644 index 0000000..5460939 --- /dev/null +++ b/snark-20120808r02/src/agenda-system.lisp @@ -0,0 +1,36 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: common-lisp-user -*- +;;; File: agenda-system.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2009. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :common-lisp-user) + +(defpackage :snark-agenda + (:use :common-lisp :snark-lisp :snark-deque :snark-sparse-array) + (:export + #:make-agenda + #:agenda-name #:agenda-length + #:agenda-insert #:agenda-delete + #:agenda-first #:pop-agenda #:mapnconc-agenda #:agenda-delete-if + #:limit-agenda-length + #:print-agenda + #:*agenda* + )) + +(loads "agenda") + +;;; agenda-system.lisp EOF diff --git a/snark-20120808r02/src/agenda.abcl b/snark-20120808r02/src/agenda.abcl new file mode 100644 index 0000000000000000000000000000000000000000..cd7ea2320632c8d2bcb2913e43d50e8ae1ba6f0e GIT binary patch literal 70779 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±JurQML0| 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 Vn4Uco0R7E?rnN!fpfLCB{{dlVDC7VD literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/agenda.lisp b/snark-20120808r02/src/agenda.lisp new file mode 100644 index 0000000..0ee9de3 --- /dev/null +++ b/snark-20120808r02/src/agenda.lisp @@ -0,0 +1,234 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-agenda -*- +;;; File: agenda.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2008. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-agenda) + +(defstruct (agenda + (:print-function print-agenda3) + (:copier nil)) + (name "" :read-only t) + (length 0) + (length-limit nil) + (length-limit-deletion-action #'identity :read-only t) + (same-item-p #'eql :read-only t) + (buckets (make-sparse-vector))) + +;;; an agenda index value (priority) is (list integer_1 ... integer_n) or (list* integer_1 ... integer_n) +;;; which are both treated as the same sequence integer_1 ... integer_n +;;; this includes (list* integer) = integer as an agenda index value +;;; agenda index values are compared lexicographically in left-to-right order +;;; if one is prefix of another, they must be equal, e.g., can't have (2 18) and (2 18 1) +;;; agenda buckets are deques stored in nested sparse-vectors indexed by agenda index values + +(defun find-agenda-bucket (buckets value &optional create) + (labels + ((find-agenda-bucket* (buckets value) + (cond + ((atom value) + (or (sparef buckets value) + (if create (setf (sparef buckets value) (make-deque)) nil))) + ((null (rest value)) + (or (sparef buckets (first value)) + (if create (setf (sparef buckets (first value)) (make-deque)) nil))) + (t + (let ((v (sparef buckets (first value)))) + (cond + (v + (find-agenda-bucket* v (rest value))) + (create + (find-agenda-bucket* (setf (sparef buckets (first value)) (make-sparse-vector)) (rest value))) + (t + nil))))))) + (find-agenda-bucket* buckets value))) + +(defun first-or-last-nonempty-agenda-bucket (buckets last) + (labels + ((first-or-last-nonempty-agenda-bucket* (buckets) + (prog-> + (map-sparse-vector-with-indexes buckets :reverse last ->* x i) + (cond + ((sparse-vector-p x) + (first-or-last-nonempty-agenda-bucket* x)) + ((deque-empty? x) + (setf (sparef buckets i) nil)) + (t + (return-from first-or-last-nonempty-agenda-bucket x)))))) + (first-or-last-nonempty-agenda-bucket* buckets) + nil)) + +(definline first-nonempty-agenda-bucket (buckets) + (first-or-last-nonempty-agenda-bucket buckets nil)) + +(definline last-nonempty-agenda-bucket (buckets) + (first-or-last-nonempty-agenda-bucket buckets t)) + +(defun collect-agenda-buckets (buckets) + (let ((result nil) result-last) + (labels + ((collect-agenda-buckets* (buckets revalue) + (prog-> + (map-sparse-vector-with-indexes buckets ->* x i) + (cond + ((sparse-vector-p x) + (collect-agenda-buckets* x (cons i revalue))) + ((deque-empty? x) + ) + (t + (collect (list x (if (null revalue) i (reverse (cons i revalue)))) result)))))) + (collect-agenda-buckets* buckets nil) + result))) + +(defun agenda-insert (item value agenda &optional at-front) + (let* ((buckets (agenda-buckets agenda)) + (q (find-agenda-bucket buckets value :create))) + (unless (and (not (deque-empty? q)) (funcall (agenda-same-item-p agenda) item (if at-front (deque-first q) (deque-last q)))) + (if at-front (deque-push-first q item) (deque-push-last q item)) + (let ((limit (agenda-length-limit agenda)) + (length (agenda-length agenda))) + (cond + ((and limit (<= limit length)) + (let ((deleted-item (deque-pop-last (last-nonempty-agenda-bucket buckets)))) + (cond + ((eql item deleted-item) + nil) + (t + (funcall (agenda-length-limit-deletion-action agenda) deleted-item) + t)))) + (t + (setf (agenda-length agenda) (+ length 1)) + t)))))) + +(defun agenda-delete (item value agenda) + (let ((length (agenda-length agenda))) + (unless (eql 0 length) + (let ((q (find-agenda-bucket (agenda-buckets agenda) value))) + (when (and q (deque-delete q item)) + (setf (agenda-length agenda) (- length 1)) + t))))) + +(defun agenda-first (agenda &optional delete) + (cond + ((listp agenda) + (dolist (agenda agenda) + (unless (eql 0 (agenda-length agenda)) + (return (agenda-first agenda delete))))) + (t + (let ((length (agenda-length agenda))) + (unless (eql 0 length) + (let ((q (first-nonempty-agenda-bucket (agenda-buckets agenda)))) + (cond + (delete + (setf (agenda-length agenda) (- length 1)) + (deque-pop-first q)) + (t + (deque-first q))))))))) + +(defun pop-agenda (agenda) + (agenda-first agenda t)) + +(defun map-agenda-buckets (function buckets) + (prog-> + (map-sparse-vector buckets ->* x) + (cond + ((sparse-vector-p x) + (map-agenda-buckets function x)) + (t + (funcall function x))))) + +(defun mapnconc-agenda (function agenda) + (let ((result nil) result-last) + (prog-> + (map-agenda-buckets (agenda-buckets agenda) ->* q) + (mapnconc-deque q ->* item) + (cond + ((or (null function) (eq 'list function) (eq #'list function)) + (collect item result)) + (t + (ncollect (funcall function item) result)))))) + +(defun agenda-delete-if (function agenda &optional apply-length-limit-deletion-action) + (prog-> + (and apply-length-limit-deletion-action (agenda-length-limit-deletion-action agenda) -> deletion-action) + (map-agenda-buckets (agenda-buckets agenda) ->* q) + (deque-delete-if q ->* v) + (when (funcall function v) + (decf (agenda-length agenda)) + (when deletion-action + (funcall deletion-action v)) + t))) + +(defun limit-agenda-length (agenda limit) + (let ((length (agenda-length agenda))) + (setf (agenda-length-limit agenda) limit) + (when (and limit (< limit length)) + (let ((i 0)) + (agenda-delete-if (lambda (item) (declare (ignore item)) (> (incf i) limit)) agenda t))))) + +(defvar *agenda*) ;default agenda(s) for print-agenda to display + +(defun print-agenda (&key (agenda *agenda*) entries) + (cond + ((listp agenda) + (let ((all-empty t)) + (dolist (agenda agenda) + (unless (eql 0 (agenda-length agenda)) + (setf all-empty nil) + (print-agenda :agenda agenda :entries entries))) + (when all-empty + (format t "~%; All agendas are empty.")))) + (t + (with-standard-io-syntax2 + (format t "~%; The agenda of ~A has ~D entr~:@P~A" + (agenda-name agenda) + (agenda-length agenda) + (if (eql 0 (agenda-length agenda)) "." ":")) + (unless (eql 0 (agenda-length agenda)) + (let ((buckets (collect-agenda-buckets (agenda-buckets agenda)))) + (do* ((k (length buckets)) + (k1 (ceiling k 3)) + (k2 (ceiling (- k k1) 2)) + (buckets3 (nthcdr (+ k1 k2) buckets)) + (buckets2 (nbutlast (nthcdr k1 buckets) (- k k1 k2))) + (buckets1 (nbutlast buckets k2)) + b) + ((null buckets1)) + (setf b (pop buckets1)) + (format t "~%; ~5D with value ~A" (deque-length (first b)) (second b)) + (unless (null buckets2) + (setf b (pop buckets2)) + (format t "~31T~5D with value ~A" (deque-length (first b)) (second b)) + (unless (null buckets3) + (setf b (pop buckets3)) + (format t "~61T~5D with value ~A" (deque-length (first b)) (second b)))))) + (when (and entries (not (eql 0 (agenda-length agenda)))) + (prog-> + (dolist (collect-agenda-buckets (agenda-buckets agenda)) ->* x) + (first x -> q) + (second x -> value) + (unless (deque-empty? q) + (format t "~%;~%; Entries with value ~A:" value) + (mapnconc-deque (lambda (x) (format t "~%; ~A" x)) q)))))) + nil))) + +(defun print-agenda3 (agenda stream depth) + (declare (ignore depth)) + (print-unreadable-object (agenda stream :type t :identity nil) + (format stream "~S" (agenda-name agenda)))) + +;;; agenda.lisp EOF diff --git a/snark-20120808r02/src/alists.abcl b/snark-20120808r02/src/alists.abcl new file mode 100644 index 0000000000000000000000000000000000000000..815e8f09415a691fa05df2b9ffcc2f8c76e5e3d0 GIT binary patch literal 7931 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 JNb>97{{h`GUKIcU literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/alists.lisp b/snark-20120808r02/src/alists.lisp new file mode 100644 index 0000000..646f96f --- /dev/null +++ b/snark-20120808r02/src/alists.lisp @@ -0,0 +1,121 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: alists.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2011. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +;; alists are assumed to be well formed: +;; lists of dotted pairs ending with nil +;; car of each dotted pair is a distinct constant + +(defun equal-alist-p (alist1 alist2 subst) + (and + (do ((p1 alist1 (rest p1)) + (p2 alist2 (rest p2))) + (nil) + (dereference + p1 subst + :if-variable (return (dereference p2 subst :if-variable (eq p1 p2))) ;allow variable at end + :if-constant (return (dereference p2 subst :if-constant t)) ;assume p1=p2=nil + :if-compound-cons (unless (dereference p2 subst :if-compound-cons t) + (return nil)))) + (do ((p1 alist1 (rest p1))) + (nil) + (dereference + p1 subst + :if-variable (return t) + :if-constant (return t) + :if-compound-cons (unless (do ((p2 alist2 (rest p2))) + (nil) + (dereference + p2 subst + :if-variable (return nil) + :if-constant (return nil) + :if-compound-cons (when (eql (car (first p1)) (car (first p2))) + (return (equal-p (cdr (first p1)) (cdr (first p2)) subst))))) + (return nil)))))) + +(defun conjoin-alists (alist1 alist2) + (let ((result nil) result-last) + (dolist (x alist1) + (let ((x1 (car x))) + (dolist (y alist2 (collect x result)) + (when (eql x1 (car y)) + (collect (cons x1 (conjoin (cdr x) (cdr y))) result) + (return))))) + (dolist (y alist2) + (let ((y1 (car y))) + (dolist (x alist1 (collect y result)) + (when (eql y1 (car x)) + (return))))) + result)) + +(defun conjoin-alist1 (key value alist) + (labels + ((conjoin-alist1 (alist) + (cond + ((null alist) + (values nil nil)) + (t + (let ((p (first alist))) + (cond + ((eql key (car p)) + (let ((p* (lcons (car p) (conjoin value (cdr p)) p))) + (values (if (eq p p*) alist (cons p* (rest alist))) t))) + (t + (let ((v (rest alist))) + (multiple-value-bind (v* found) (conjoin-alist1 v) + (values (if (eq v v*) alist (cons p v*)) found)))))))))) + (multiple-value-bind (alist* found) (conjoin-alist1 alist) + (if found alist* (cons (cons key value) alist*))))) + +(defun disjoin-alists (alist1 alist2) + (let ((result nil) result-last) + (dolist (x alist1) + (let ((x1 (car x))) + (dolist (y alist2 (collect x result)) + (when (eql x1 (car y)) + (collect (cons x1 (disjoin (cdr x) (cdr y))) result) + (return))))) + (dolist (y alist2) + (let ((y1 (car y))) + (dolist (x alist1 (collect y result)) + (when (eql y1 (car x)) + (return))))) + result)) + +(defun disjoin-alist1 (key value alist) + (labels + ((disjoin-alist1 (alist) + (cond + ((null alist) + (values nil nil)) + (t + (let ((p (first alist))) + (cond + ((eql key (car p)) + (let ((p* (lcons (car p) (disjoin value (cdr p)) p))) + (values (if (eq p p*) alist (cons p* (rest alist))) t))) + (t + (let ((v (rest alist))) + (multiple-value-bind (v* found) (disjoin-alist1 v) + (values (if (eq v v*) alist (cons p v*)) found)))))))))) + (multiple-value-bind (alist* found) (disjoin-alist1 alist) + (if found alist* (cons (cons key value) alist*))))) + +;;; alists.lisp EOF diff --git a/snark-20120808r02/src/argument-bag-ac.abcl b/snark-20120808r02/src/argument-bag-ac.abcl new file mode 100644 index 0000000000000000000000000000000000000000..aa64d1131b19fff890f5268dc672cb12ae52e9aa GIT binary patch literal 9317 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 T5EK;rpCcL?3aW?Vue<*Nv+Gv_ literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/argument-bag-ac.lisp b/snark-20120808r02/src/argument-bag-ac.lisp new file mode 100644 index 0000000..46c0574 --- /dev/null +++ b/snark-20120808r02/src/argument-bag-ac.lisp @@ -0,0 +1,82 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: argument-bag-ac.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2010. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +(defmacro inc-argument-count (compare-fun term counts inc not-found-form &optional cancel) + (let ((count (gensym)) (v (gensym))) + `(dolist (,v ,counts ,not-found-form) + (let ((,count (tc-count ,v))) + (unless (eql 0 ,count) + (when ,(cond + ((member compare-fun '(equal-p)) + `(,compare-fun ,term (tc-term ,v) subst)) + (t + `(,compare-fun ,term (tc-term ,v)))) + (setf (tc-count ,v) (+ ,count ,inc)) + ,@(when cancel + `((unless ,cancel + (when (if (plusp ,count) (minusp ,inc) (plusp ,inc)) + (setf ,cancel t))))) + (return))))))) + +(defmacro count-argument (fn arg counts inc count-arguments-fun not-found-form &optional cancel) + `(dereference + ,arg subst + :if-variable (inc-argument-count eq ,arg ,counts ,inc ,not-found-form ,cancel) + :if-constant (inc-argument-count eql ,arg ,counts ,inc ,not-found-form ,cancel) + :if-compound (cond + ((and ,fn (eq ,fn (head ,arg))) + ,(if cancel + `(if ,cancel + (setf ,counts (,count-arguments-fun ,fn (args ,arg) subst ,counts ,inc)) + (setf (values ,counts ,cancel) (,count-arguments-fun ,fn (args ,arg) subst ,counts ,inc))) + `(setf ,counts (,count-arguments-fun ,fn (args ,arg) subst ,counts ,inc)))) + (t + (inc-argument-count equal-p ,arg ,counts ,inc ,not-found-form ,cancel))))) + +(defun count-arguments (fn args subst &optional counts (inc 1)) + ;; creates list of term and count pairs for argument list + ;; term and count pair is represented as (term . count) + ;; return 2nd value T if a cancellation occurs + (let ((cancel nil)) + (dolist (arg args) + (count-argument fn arg counts inc count-arguments (push (make-tc arg inc) counts) cancel)) + (if cancel + (values counts t) + counts))) + +(defun recount-arguments (fn terms-and-counts subst) + (let (new-terms-and-counts) + (dolist (tc terms-and-counts) + (let ((term (tc-term tc)) (count (tc-count tc))) + (count-argument fn term new-terms-and-counts count count-arguments (push (make-tc term count) new-terms-and-counts)))) + new-terms-and-counts)) + +(defun term-size-difference (terms-and-counts subst &optional var0) + (let ((n 0)) + (dolist (tc terms-and-counts) + (let ((count (tc-count tc))) + (unless (eql 0 count) + (let ((term (tc-term tc))) + (unless (and var0 (dereference term subst :if-variable (not (variable-frozen-p term)))) + (incf n (* count (size term subst)))))))) + n)) + +;;; argument-bag-ac.lisp EOF diff --git a/snark-20120808r02/src/argument-list-a1.abcl b/snark-20120808r02/src/argument-list-a1.abcl new file mode 100644 index 0000000000000000000000000000000000000000..72ab4b729d783ad4939a97bb2239232ed6ca2fe6 GIT binary patch literal 10348 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. + +(in-package :snark) + +(defun argument-list-a1 (fn args &optional subst (identity none)) + ;; return list of arguments of associative function fn + ;; return undereferenced args if no flattening or identity elimination + (if (null args) + nil + (labels + ((argument-list-a1* (args) + (let* ((l (rest args)) + (l* (if (null l) nil (argument-list-a1* l))) + (arg (first args)) + (arg* arg)) + (cond + ((dereference arg* subst :if-compound-appl (eq fn (heada arg*))) + (let* ((v (argsa arg*)) + (v* (if (null v) nil (argument-list-a1* v)))) + (cond + ((null l*) + v*) + ((null v*) + l*) + (t + (append v* l*))))) + ((eql identity arg*) + l*) + ((eq l l*) + args) + (t + (cons arg l*)))))) + (argument-list-a1* args)))) + +(defun argument-count-a1 (fn args &optional subst (identity none) dont-count-variables) + (let ((c 0)) + (dolist (arg args) + (dereference + arg subst + :if-compound-appl (if (eq fn (heada arg)) + (incf c (argument-count-a1 fn (argsa arg) subst identity dont-count-variables)) + (incf c)) + :if-compound-cons (incf c) + :if-constant (unless (eql identity arg) + (incf c)) + :if-variable (unless (and dont-count-variables + (neq none identity) + (not (variable-frozen-p arg))) + (incf c)))) + c)) + +(defun similar-argument-list-ac1-p (fn args1 args2 &optional subst (identity none)) + ;; same number of variable, list, constant, and application arguments + ;; also same number of first constant and first function seen + (let ((nvari 0) (nconst 0) (nappl 0) + (const1 none) (head1 none) nconst1 nhead1) + (labels + ((similar-argument-list-ac1-p1 (arg) + (dereference + arg subst + :if-variable (incf nvari) + :if-constant (unless (eql identity arg) + (cond + ((eq const1 none) + (setf const1 arg) + (setf nconst1 1)) + ((eql arg const1) + (incf nconst1)) + (t + (incf nconst)))) + :if-compound (let ((head (head arg))) + (if (eq fn head) + (dolist (x (args arg)) + (similar-argument-list-ac1-p1 x)) + (cond + ((eq head1 none) + (setf head1 head) + (setf nhead1 1)) + ((eq head head1) + (incf nhead1)) + (t + (incf nappl))))))) + (similar-argument-list-ac1-p2 (arg) + (dereference + arg subst + :if-variable (if (eql 0 nvari) + (return-from similar-argument-list-ac1-p nil) + (decf nvari)) + :if-constant (unless (eql identity arg) + (cond + ((eq none const1) + (return-from similar-argument-list-ac1-p nil)) + ((eql arg const1) + (if (eql 0 nconst1) + (return-from similar-argument-list-ac1-p nil) + (decf nconst1))) + (t + (if (eql 0 nconst) + (return-from similar-argument-list-ac1-p nil) + (decf nconst))))) + :if-compound (let ((head (head arg))) + (if (eq fn head) + (dolist (x (args arg)) + (similar-argument-list-ac1-p2 x)) + (cond + ((eq none head1) + (return-from similar-argument-list-ac1-p nil)) + ((eq head head1) + (if (eql 0 nhead1) + (return-from similar-argument-list-ac1-p nil) + (decf nhead1))) + (t + (if (eql 0 nappl) + (return-from similar-argument-list-ac1-p nil) + (decf nappl))))))))) + (dolist (x args1) + (similar-argument-list-ac1-p1 x)) + (dolist (x args2) + (similar-argument-list-ac1-p2 x)) + (and (eql 0 nvari) (eql 0 nconst) (eql 0 nappl))))) + +(defun flatargs (term &optional subst) + (let ((fn (head term))) + (if (function-associative fn) + (argument-list-a1 fn (argsa term) subst) + (args term)))) + +;;; argument-list-a1.lisp EOF diff --git a/snark-20120808r02/src/assertion-analysis.abcl b/snark-20120808r02/src/assertion-analysis.abcl new file mode 100644 index 0000000000000000000000000000000000000000..0c507e1c210a8651f41821269f3f04fac4e3afe6 GIT binary patch literal 176653 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

Z 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 N_N>AmG*~?Qe*j_mZG!*+ literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/assertion-analysis.lisp b/snark-20120808r02/src/assertion-analysis.lisp new file mode 100644 index 0000000..4af4545 --- /dev/null +++ b/snark-20120808r02/src/assertion-analysis.lisp @@ -0,0 +1,502 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: assertion-analysis.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2011. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +;;; the main purpose of this code is to recognize axioms +;;; for commutativity, associativity, etc. so that the +;;; appropriate function or relation symbol declarations can be +;;; made when running TPTP problems, where stupid and inconvenient +;;; rules do not allow any problem-specific input other than the axioms +;;; +;;; in general, using assertion-analysis to automatically declare +;;; special properties of relations and functions is NOT encouraged + +(in-package :snark) + +(defvar *wff*) + +(declaim (special *extended-variant*)) + +(defvar *assertion-analysis-patterns*) +(defvar *assertion-analysis-function-info*) +(defvar *assertion-analysis-relation-info*) + +(defstruct aa-function + function + (left-identities nil) + (right-identities nil) + (left-inverses nil) + (right-inverses nil) + (commutative nil) + (associative nil) + (closure-relations nil)) + +(defstruct aa-relation + relation + (left-identities nil) + (right-identities nil) + (left-inverses nil) + (right-inverses nil) + (commutative nil) + (assoc1-p nil) + (assoc2-p nil) + (functional-p nil) + (closure-functions nil)) + +(defun aa-function (f) + (let ((f# (funcall *standard-eql-numbering* :lookup f))) + (or (sparef *assertion-analysis-function-info* f#) + (progn + (cl:assert (function-symbol-p f)) + (setf (sparef *assertion-analysis-function-info* f#) + (make-aa-function :function f)))))) + +(defun aa-relation (p) + (let ((p# (funcall *standard-eql-numbering* :lookup p))) + (or (sparef *assertion-analysis-relation-info* p#) + (progn + (cl:assert (function-symbol-p p)) + (setf (sparef *assertion-analysis-relation-info* p#) + (make-aa-relation :relation p)))))) + +(defun print-assertion-analysis-note (name) + (with-standard-io-syntax2 + (format t "~%; Recognized ~A assertion ~S." name (renumber *wff*)))) + +(defun note-function-associative (f) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "associativity")) + (setf (aa-function-associative (aa-function f)) t)) + +(defun note-function-commutative (f) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "commutativity")) + (setf (aa-function-commutative (aa-function f)) t)) + +(defun note-function-left-identity (f e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "left identity")) + (pushnew e (aa-function-left-identities (aa-function f)))) + +(defun note-function-right-identity (f e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "right identity")) + (pushnew e (aa-function-right-identities (aa-function f)))) + +(defun note-function-left-inverse (f g e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible left inverse")) + (pushnew (list g e) (aa-function-left-inverses (aa-function f)) :test #'equal)) + +(defun note-function-right-inverse (f g e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible right inverse")) + (pushnew (list g e) (aa-function-right-inverses (aa-function f)) :test #'equal)) + +(defun note-relation-assoc1 (p) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible associativity")) + (setf (aa-relation-assoc1-p (aa-relation p)) t)) + +(defun note-relation-assoc2 (p) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible associativity")) + (setf (aa-relation-assoc2-p (aa-relation p)) t)) + +(defun note-relation-commutative (p) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "commutativity")) + (setf (aa-relation-commutative (aa-relation p)) t)) + +(defun note-relation-left-identity (p e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible left identity")) + (pushnew e (aa-relation-left-identities (aa-relation p)))) + +(defun note-relation-right-identity (p e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible right identity")) + (pushnew e (aa-relation-right-identities (aa-relation p)))) + +(defun note-relation-left-inverse (p g e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible left inverse")) + (pushnew (list g e) (aa-relation-left-inverses (aa-relation p)) :test #'equal)) + +(defun note-relation-right-inverse (p g e) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "possible right inverse")) + (pushnew (list g e) (aa-relation-right-inverses (aa-relation p)) :test #'equal)) + +(defun note-relation-functional (p) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "relation functionality")) + (setf (aa-relation-functional-p (aa-relation p)) t)) + +(defun note-relation-closure (p f) + (when (print-assertion-analysis-notes?) + (print-assertion-analysis-note "relation function")) + (pushnew f (aa-relation-closure-functions (aa-relation p))) + (pushnew p (aa-function-closure-relations (aa-function f)))) + +(defun function-associativity-tests () + (let ((f (make-function-symbol (gensym) 2)) + (x (make-variable)) + (y (make-variable)) + (z (make-variable))) + (list + ;; (= (f (f x y) z) (f x (f y z))) + (list (make-equality0 (make-compound f (make-compound f x y) z) (make-compound f x (make-compound f y z))) + (list 'note-function-associative f))))) + +(defun function-commutativity-tests () + (let ((f (make-function-symbol (gensym) 2)) + (x (make-variable)) + (y (make-variable))) + (list + ;; (= (f x y) (f y x)) + (list (make-equality0 (make-compound f x y) (make-compound f y x)) + (list 'note-function-commutative f))))) + +(defun function-identity-tests () + (let ((f (make-function-symbol (gensym) 2)) + (e (gensym)) + (x (make-variable))) + (list + ;; (= (f e x) x) + (list (make-equality0 (make-compound f e x) x) + (list 'note-function-left-identity f e)) + ;; (= (f x e) x) + (list (make-equality0 (make-compound f x e) x) + (list 'note-function-right-identity f e))))) + +(defun function-inverse-tests () + (let ((f (make-function-symbol (gensym) 2)) + (g (make-function-symbol (gensym) 1)) + (e (gensym)) + (x (make-variable))) + (list + ;; (= (f (g x) x) e) + (list (make-equality0 (make-compound f (make-compound g x) x) e) + (list 'note-function-left-inverse f g e)) + ;; (= (f x (g x)) e) + (list (make-equality0 (make-compound f x (make-compound g x)) e) + (list 'note-function-right-inverse f g e))))) + +(defun relation-associativity-tests () + (let ((p (make-function-symbol (gensym) 3)) + (x (make-variable)) + (y (make-variable)) + (z (make-variable)) + (u (make-variable)) + (v (make-variable)) + (w (make-variable))) + (let ((a (make-compound p x y u)) + (b (make-compound p y z v)) + (c (make-compound p u z w)) + (d (make-compound p x v w))) + (list + ;; (or (not (p x y u)) (not (p y z v)) (not (p u z w)) (p x v w)) + (list (make-compound *or* + (make-compound *not* a) + (make-compound *not* b) + (make-compound *not* c) + d) + (list 'note-relation-assoc1 p)) + ;; (implies (and (p x y u) (p y z v) (p u z w)) (p x v w)) + (list (make-compound *implies* + (make-compound *and* a b c) + d) + (list 'note-relation-assoc1 p)) + ;; (or (not (p x y u)) (not (p y z v)) (not (p x v w)) (p u z w)) + (list (make-compound *or* + (make-compound *not* a) + (make-compound *not* b) + (make-compound *not* d) + c) + (list 'note-relation-assoc2 p)) + ;; (implies (and (p x y u) (p y z v) (p x v w)) (p u z w)) + (list (make-compound *implies* + (make-compound *and* a b d) + c) + (list 'note-relation-assoc2 p)))))) + +(defun relation-commutativity-tests () + (let ((p (make-function-symbol (gensym) 3)) + (x (make-variable)) + (y (make-variable)) + (z (make-variable))) + (loop for a in (list (make-compound p x y) (make-compound p x y z)) + as b in (list (make-compound p y x) (make-compound p y x z)) + nconc (list + ;; (or (not (p x y)) (p x y)) and (or (not (p x y z)) (p y x z)) + (list (make-compound *or* (make-compound *not* a) b) + (list 'note-relation-commutative p)) + ;; (implies (p x y) (p y x)) and (implies (p x y z) (p y x z)) + (list (make-compound *implies* a b) + (list 'note-relation-commutative p)))))) + +(defun relation-identity-tests () + (let ((p (make-function-symbol (gensym) 3)) + (e (gensym)) + (x (make-variable))) + (list + ;; (p e x x) + (list (make-compound p e x x) + (list 'note-relation-left-identity p e)) + ;; (p x e x) + (list (make-compound p x e x) + (list 'note-relation-right-identity p e))))) + +(defun relation-inverse-tests () + (let ((p (make-function-symbol (gensym) 3)) + (g (make-function-symbol (gensym) 1)) + (e (gensym)) + (x (make-variable))) + (list + ;; (p (g x) x e) + (list (make-compound p (make-compound g x) x e) + (list 'note-relation-left-inverse p g e)) + ;; (p x (g x) e) + (list (make-compound p x (make-compound g x) e) + (list 'note-relation-right-inverse p g e))))) + +(defun relation-functionality-tests () + (let ((p (make-function-symbol (gensym) 3)) + (x (make-variable)) + (y (make-variable)) + (z1 (make-variable)) + (z2 (make-variable))) + (let ((a (make-compound p x y z1)) + (b (make-compound p x y z2)) + (c (make-equality0 z1 z2))) + (list + ;; (or (not (p x y z1)) (not (p x y z2)) (= z1 z2)) + (list + (make-compound *or* + (make-compound *not* a) + (make-compound *not* b) + c) + (list 'note-relation-functional p)) + ;; (implies (and (p x y z1) (p x y z2)) (= z1 z2)) + (list + (make-compound *implies* + (make-compound *and* a b) + c) + (list 'note-relation-functional p)))))) + +(defun relation-closure-tests () + (let ((p (make-function-symbol (gensym) 3)) + (f (make-function-symbol (gensym) 2)) + (x (make-variable)) + (y (make-variable))) + (list + (list + (make-compound p x y (make-compound f x y)) + (list 'note-relation-closure p f))))) + +(defun initialize-assertion-analysis () + (setf *assertion-analysis-function-info* (make-sparse-vector)) + (setf *assertion-analysis-relation-info* (make-sparse-vector)) + (setf *assertion-analysis-patterns* + (nconc (function-associativity-tests) + (function-commutativity-tests) + (function-identity-tests) + (function-inverse-tests) + (relation-associativity-tests) + (relation-commutativity-tests) + (relation-identity-tests) + (relation-inverse-tests) + (relation-functionality-tests) + (relation-closure-tests) + )) + nil) + +(defun assertion-analysis (row) + (prog-> + (when (row-bare-p row) + (row-wff row -> wff) + (identity wff -> *wff*) + (quote t -> *extended-variant*) + (dolist *assertion-analysis-patterns* ->* x) + (variant (first x) wff nil nil ->* varpairs) + (sublis varpairs (second x) -> decl) + (apply (first decl) (rest decl)) + (return-from assertion-analysis)))) + +(defun maybe-declare-function-associative (f) + (unless (function-associative f) + (when (or (use-associative-unification?) (function-commutative f)) + (with-standard-io-syntax2 + (if (function-commutative f) + (format t "~%; Declaring ~A to be associative-commutative." (function-name f)) + (format t "~%; Declaring ~A to be associative." (function-name f)))) + (declare-function (function-name f) (function-arity f) :associative t)))) + +(defun maybe-declare-function-commutative (f) + (unless (function-commutative f) + (with-standard-io-syntax2 + (if (function-associative f) + (format t "~%; Declaring ~A to be associative-commutative." (function-name f)) + (format t "~%; Declaring ~A to be commutative." (function-name f)))) + (declare-function (function-name f) (function-arity f) :commutative t))) + +(defun maybe-declare-relation-commutative (p) + (unless (function-commutative p) + (with-standard-io-syntax2 + (format t "~%; Declaring ~A to be commutative." (function-name p))) + (declare-relation (function-name p) (function-arity p) :commutative t))) + +(defun maybe-declare-function-identity (f e) + (unless (neq none (function-identity f)) + (when (and (use-associative-identity?) (function-associative f) (or (use-associative-unification?) (function-commutative f))) + (with-standard-io-syntax2 + (format t "~%; Declaring ~A to have identity ~A." (function-name f) e)) + (declare-function (function-name f) (function-arity f) :identity e)))) + +(defun aa-relation-associative (p) + (if (or (aa-relation-commutative p) + (function-commutative (aa-relation-relation p))) + (or (aa-relation-assoc1-p p) (aa-relation-assoc2-p p)) + (and (aa-relation-assoc1-p p) (aa-relation-assoc2-p p)))) + +(defun complete-assertion-analysis () + (prog-> + (map-sparse-vector *assertion-analysis-function-info* ->* f) + (when (aa-function-commutative f) + (maybe-declare-function-commutative (aa-function-function f))) + (when (aa-function-associative f) + (maybe-declare-function-associative (aa-function-function f)))) + (prog-> + (map-sparse-vector *assertion-analysis-relation-info* ->* p) + (when (aa-relation-commutative p) + (maybe-declare-relation-commutative (aa-relation-relation p)) + (when (aa-relation-functional-p p) + (dolist (f (aa-relation-closure-functions p)) + (maybe-declare-function-commutative f)))) + (when (aa-relation-associative p) + (when (aa-relation-functional-p p) + (dolist (f (aa-relation-closure-functions p)) + (maybe-declare-function-associative f))))) + (prog-> + (map-sparse-vector *assertion-analysis-function-info* ->* f) + (aa-function-left-identities f -> left-identities) + (aa-function-right-identities f -> right-identities) + (aa-function-function f -> f) + (if (function-commutative f) (union left-identities right-identities) (intersection left-identities right-identities) -> identities) + (when (and identities (null (rest identities))) + (maybe-declare-function-identity f (first identities)))) + (prog-> + (map-sparse-vector *assertion-analysis-relation-info* ->* p) + (aa-relation-left-identities p -> left-identities) + (aa-relation-right-identities p -> right-identities) + (when (and (or left-identities right-identities) (aa-relation-functional-p p)) + (dolist (aa-relation-closure-functions p) ->* f) + (if (function-commutative f) (union left-identities right-identities) (intersection left-identities right-identities) -> identities) + (when (and identities (null (rest identities))) + (maybe-declare-function-identity f (first identities)))))) + +(define-plist-slot-accessor row :pure) + +(defun atom-rel# (atom) + (dereference + atom nil + :if-constant (constant-number atom) + :if-compound (function-number (head atom)))) + +(defun purity-test (row-mapper) + (let ((relation-reference-counts (make-sparse-vector :default-value 0))) + (flet ((adjust-reference-counts (row n) + (prog-> + (map-atoms-in-wff (row-wff row) ->* atom polarity) + (atom-rel# atom -> rel#) + (ecase polarity + (:pos + (incf (sparef relation-reference-counts rel#) n)) + (:neg + (incf (sparef relation-reference-counts (- rel#)) n)) + (:both + (incf (sparef relation-reference-counts rel#) n) + (incf (sparef relation-reference-counts (- rel#)) n)))))) + ;; count occurrences of signed relations + (prog-> + (funcall row-mapper ->* row) + (unless (or (row-hint-p row) (eq :checking (row-pure row))) + ;; row might be mapped more than once, put :checking in pure slot and count once + (setf (row-pure row) :checking) + (adjust-reference-counts row 1))) + (loop + (when (print-pure-rows?) + (with-clock-on printing + (format t "~2&; Purity test finds") + (prog-> + (map-sparse-vector-with-indexes relation-reference-counts ->* count signedrel#) + (abs signedrel# -> rel#) + (if (= signedrel# rel#) (- rel#) rel# -> oppsignedrel#) + (sparef relation-reference-counts oppsignedrel# -> oppcount) + (unless (and (< 0 signedrel#) (< 0 oppcount)) + (format t "~%; ~5D positive and ~5D negative occurrences of ~S." + (if (< 0 signedrel#) count oppcount) + (if (> 0 signedrel#) count oppcount) + (symbol-numbered rel#)))))) + (let ((purerels nil)) + ;; list in purerels relations that occur only positively or only negatively + (prog-> + (map-sparse-vector-indexes-only relation-reference-counts ->* signedrel#) + (abs signedrel# -> rel#) + (if (= signedrel# rel#) (- rel#) rel# -> oppsignedrel#) + (when (= 0 (sparef relation-reference-counts oppsignedrel#)) + (symbol-numbered rel# -> symbol) + (if (< 0 signedrel#) "positively" "negatively" -> sign) + (cond + ((not (function-symbol-p symbol)) + (push rel# purerels) + (warn "~S is a proposition that occurs only ~A; disabling rows that contain it." symbol sign)) + ((or (eq *=* symbol) + (function-rewrite-code symbol) + (if (< 0 signedrel#) (function-falsify-code symbol) (function-satisfy-code symbol))) + ) + ((integerp (function-arity symbol)) + (push rel# purerels) + (warn "~S is a ~D-ary relation that occurs only ~A; disabling rows that contain it." symbol (function-arity symbol) sign)) + (t + (push rel# purerels) + (warn "~S is a relation that occurs only ~A; disabling rows that contain it." symbol sign))))) + ;; if purerels is empty, no (more) pure rows, remove :checking and return + (when (null purerels) + (prog-> + (funcall row-mapper ->* row) + (when (eq :checking (row-pure row)) + (setf (row-pure row) nil))) + (return)) + ;; if row contains a relation in purerels, mark it as pure and decrement reference counts + ;; maybe some relations will be newly pure, so loop + (prog-> + (funcall row-mapper ->* row) + (when (eq :checking (row-pure row)) + (when (prog-> + (map-atoms-in-wff (row-wff row) ->* atom polarity) + (declare (ignore polarity)) + (when (member (atom-rel# atom) purerels) + (return-from prog-> t))) + (setf (row-pure row) t) + (adjust-reference-counts row -1) + (print-pure-row row)))))) + nil))) + +;;; assertion-analysis.lisp EOF diff --git a/snark-20120808r02/src/assertion-file.abcl b/snark-20120808r02/src/assertion-file.abcl new file mode 100644 index 0000000000000000000000000000000000000000..6821b81db58e2a6709b67bdaa4210086348986c8 GIT binary patch literal 149678 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

E?@7GU(p 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. + +(in-package :snark) + +(defmacro in-language (language) + (declare (ignore language)) + `(warn "Ignoring IN-LANGUAGE form.")) + +(defmacro in-kb (kb) + ;; use suspend/resume for this? okbc calls? + (declare (ignore kb)) + `(warn "Ignoring IN-KB form.")) + +(defmacro has-author (author) + `(setf *form-author* ',author)) + +(defmacro has-documentation (documentation) + `(setf *form-documentation* ',documentation)) + +(defmacro has-name (name) + `(setf *form-name* ',name)) + +(defmacro has-source (source) + `(setf *form-source* ',source)) + +(declare-snark-option assertion-file-commands + '(assertion + has-author ;has-xxx specifies xxx for later assertions + has-documentation + has-name + has-source + in-package + in-language + in-kb + declare-constant + declare-function + declare-relation + declare-sort + declare-subsort + declare-sorts-incompatible + declare-tptp-sort + ) ;every other form is an assertion + :never-print) + +(declare-snark-option assertion-file-keywords + '((:author *form-author*) + (:documentation *form-documentation*) + (:name *form-name*) + (:source *form-source*)) + :never-print) + +(declare-snark-option assertion-file-format nil :never-print) +(declare-snark-option assertion-file-if-does-not-exist :error :never-print) +(declare-snark-option assertion-file-verbose nil :never-print) +(declare-snark-option assertion-file-package :snark-user :never-print) +(declare-snark-option assertion-file-readtable nil :never-print) +(declare-snark-option assertion-file-negate-conjectures nil :never-print) + +(defun read-assertion-file (filespec + &key + (format (assertion-file-format?)) + (if-does-not-exist (assertion-file-if-does-not-exist?)) + (verbose (assertion-file-verbose?)) + (package (or (assertion-file-package?) *package*)) + (readtable (or (assertion-file-readtable?) *readtable*)) + (negate-conjectures (assertion-file-negate-conjectures?)) + hash-dollar + (clock t)) + ;; read-asssertion-file executes commands and return a list of calls on 'assertion' + ;; every form that is not a command (commands are named in (assertion-file-commands?)) + ;; is treated as a formula to be asserted + (declare (ignorable verbose hash-dollar)) + (let ((sort-declarations nil) + (subsort-declarations nil)) + (labels + ((raf0 () + (prog-> + (identity readtable -> *readtable*) + (identity (assertion-file-commands?) -> commands) + (identity (assertion-file-keywords?) -> keywords) + (progv (mapcar #'second keywords) + (consn nil nil (length keywords)) + (funcall (let ((type (pathname-type filespec))) + (cond + ((or (string-equal "tptp" type) (string-equal "p" type) (string-equal "ax" type)) + 'mapnconc-tptp-file-forms) + ((or (string-equal "lisp" type) (string-equal "kif" type)) + 'mapnconc-file-forms) + ((eq :tptp format) + 'mapnconc-tptp-file-forms) + (t + 'mapnconc-file-forms))) + filespec + :if-does-not-exist if-does-not-exist + :package package + ->* form) + (when form ;ignore nils + (and (consp form) + (symbolp (first form)) + (first (member (first form) commands + :test #'string-equal ;command matching ignores package and case + :key #'symbol-name)) + -> command) + (case command + ((nil) + (setf form (list 'assertion form))) + (assertion + (setf form (cons command (append (rest form) nil))) + (setf command nil)) + ((declare-sort declare-tptp-sort) + (setf form (cons command (rest form))) + (push form sort-declarations)) + (declare-subsort + (setf form (cons command (rest form))) + (push form subsort-declarations)) + ((declare-sorts-incompatible declare-constant declare-function declare-relation) + (setf form (cons command (rest form))) + (setf command nil)) + (otherwise + (eval (cons command (rest form))))) + (unless command + (case (and (consp form) (first form)) + (assertion + (cond + ((getf (cddr form) :ignore) + nil) + (t + (when (and negate-conjectures (eq 'conjecture (getf (cddr form) :reason))) + (setf (second form) (list 'not (second form))) + (setf (getf (cddr form) :reason) 'negated_conjecture)) + (dolist (x keywords) + (let ((v (symbol-value (second x)))) + (when (and v (eq none (getf (cddr form) (first x) none))) + (nconc form (list (first x) v))))) + (list form)))) + (otherwise + (list form)))))))) + (raf () + (let ((l (raf0))) + (cond + (subsort-declarations + (setf subsort-declarations (topological-sort (nreverse subsort-declarations) 'must-precede-in-assertion-file)) + (setf l (append subsort-declarations l)) + (dolist (x sort-declarations) + (unless (member (unquote (second x)) subsort-declarations :key #'(lambda (x) (unquote (second x)))) + (push x l)))) + (t + (dolist (x sort-declarations) + (push x l)))) + l))) + (if clock + (with-clock-on read-assertion-file (raf)) + (raf))))) + +(defun must-precede-in-assertion-file (x y) + (ecase (first x) + ((declare-sort declare-subsort) + (ecase (first y) + ((declare-sort declare-subsort) + (leafp (unquote (second x)) y)) + ((declare-sorts-incompatible declare-constant declare-function declare-relation declare-proposition assertion) + t))) + (declare-sorts-incompatible + (ecase (first y) + ((declare-sort declare-subsort declare-sorts-incompatible) + nil) + ((declare-constant declare-function declare-relation declare-proposition assertion) + t))) + ((declare-constant declare-function declare-relation declare-proposition) + (eq 'assertion (first y))) + (assertion + nil))) + +(declare-snark-option refute-file-initialize t :never-print) +(declare-snark-option refute-file-closure t :never-print) +(declare-snark-option refute-file-options nil :never-print) +(declare-snark-option refute-file-actions nil :never-print) +(declare-snark-option refute-file-ignore-errors nil :never-print) +(declare-snark-option refute-file-verbose t :never-print) +(declare-snark-option refute-file-output-file nil :never-print) +(declare-snark-option refute-file-if-exists nil :never-print) + +(defun refute-file (filespec + &key + (initialize (refute-file-initialize?)) + (closure (refute-file-closure?)) + (format (assertion-file-format?)) + (options (refute-file-options?)) + (actions (refute-file-actions?)) + (ignore-errors (refute-file-ignore-errors?)) + (verbose (refute-file-verbose?)) + (output-file (refute-file-output-file?)) + (if-exists (refute-file-if-exists?)) + (package (or (assertion-file-package?) *package*)) + (readtable (or (assertion-file-readtable?) *readtable*)) + (use-coder nil)) + (labels + ((refute-file0 () + (cond + (use-coder + (multiple-value-bind (axioms target op pred) (snark-user::condensed-detachment-problem-p (read-assertion-file filespec)) + (declare (ignorable pred)) + (if op + (snark-user::coder axioms target :op op :run-time-limit (if (numberp use-coder) use-coder nil)) + (format t "~%Not recognized as a condensed-detachment problem.")))) + (t + (when initialize + (initialize)) + (mapc #'eval options) + (mapc #'eval (funcall 'read-assertion-file filespec + :format format + :package package + :readtable readtable)) + (mapc #'eval actions) + (when closure + (or (let ((*szs-filespec* filespec)) (closure)) :done))))) + (refute-file1 () + (if verbose + (let ((result (time (refute-file0)))) + (case result + (:proof-found + (unless (member (print-final-rows?) '(:tptp :tptp-too)) + (print-szs-status result nil filespec))) + ((:run-time-limit :agenda-empty) + (print-szs-status result nil filespec))) + (prin1 result)) + (refute-file0))) + (refute-file2 () + (prog2 + (when verbose + (format t "~&; Begin refute-file ~A " filespec) (print-current-time) (terpri)) + (if ignore-errors + (mvlet (((values value condition) (ignore-errors (refute-file1)))) + (or value (princ condition))) + (refute-file1)) + (when verbose + (format t "~&; End refute-file ~A " filespec) (print-current-time) (terpri))))) + (if output-file + (with-open-file (stream output-file :direction :output :if-exists if-exists) + (when stream + (let ((*standard-output* stream) (*error-output* stream) (*trace-output* stream)) + (refute-file2)))) + (refute-file2)))) + +;;; assertion-file.lisp EOF diff --git a/snark-20120808r02/src/clocks.abcl b/snark-20120808r02/src/clocks.abcl new file mode 100644 index 0000000000000000000000000000000000000000..d214db1bd3c6ec5a0e8b3b442637df331450a9d5 GIT binary patch literal 22913 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 KTtyoE{P!Pjlt0}7 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/clocks.lisp b/snark-20120808r02/src/clocks.lisp new file mode 100644 index 0000000..467d85b --- /dev/null +++ b/snark-20120808r02/src/clocks.lisp @@ -0,0 +1,169 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-lisp -*- +;;; File: clocks.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2011. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-lisp) + +(defvar *clocks* nil) + +(defun make-clock-variable (name) + (cl:assert (symbolp name)) + (let* ((s (symbol-name name)) + (v (intern (to-string "*%" s :-time%*) :snark-lisp)) + (w (intern (to-string "*%" s :-count%*) :snark-lisp))) + (unless (assoc v *clocks*) + (setf *clocks* (nconc *clocks* (list (list v w)))) + (proclaim `(special ,v ,w))) + (values v w))) + +(mapc #'make-clock-variable + '( + read-assertion-file + assert + process-new-row + resolution + paramodulation + factoring + equality-factoring + embedding + condensing + forward-subsumption + backward-subsumption + clause-clause-subsumption + forward-simplification + backward-simplification + ordering + ordering-ac + sortal-reasoning + temporal-reasoning + constraint-simplification + term-hashing + path-indexing + instance-graph-insertion + purity-testing + relevance-testing + satisfiability-testing + printing + halted + test1 + test2 + test3 + )) + +(defvar *excluded-clocks* '(*%printing-time%* *%halted-time%*)) + +(defvar *running-clocks* nil) +(defvar *first-real-time-value* 0) +(defvar *first-run-time-value* 0) +(defvar *last-run-time-value* 0) +(defvar *run-time-mark* 0) +(declaim (type integer *first-real-time-value* *first-run-time-value* *last-run-time-value* *run-time-mark*)) +(defvar *total-seconds* 0.0) + +(defun initialize-clocks (&optional (excluded-clocks *excluded-clocks*)) + (cl:assert (null *running-clocks*)) + (setf *first-real-time-value* (get-internal-real-time)) + (setf *run-time-mark* (setf *first-run-time-value* (get-internal-run-time))) + (setf *excluded-clocks* excluded-clocks) + (dolist (l *clocks*) + (dolist (v l) + (setf (symbol-value v) 0)))) + +(defmacro with-clock-on (clock &body body) + (let (count) + (setf (values clock count) (make-clock-variable clock)) + (let ((previously-running-clocks (make-symbol (symbol-name 'previously-running-clocks))) + (first-previously-running-clock (make-symbol (symbol-name 'first-previously-running-clock)))) + `(let* ((,previously-running-clocks *running-clocks*) + (,first-previously-running-clock (first ,previously-running-clocks))) + (unless (eq ',clock ,first-previously-running-clock) + (if ,previously-running-clocks + (decf (symbol-value ,first-previously-running-clock) (- *last-run-time-value* (setf *last-run-time-value* (get-internal-run-time)))) + (setf *last-run-time-value* (get-internal-run-time))) + (incf (symbol-value ',count)) + (setf *running-clocks* (cons ',clock ,previously-running-clocks))) + (unwind-protect + (progn ,@body) + (unless (eq ',clock ,first-previously-running-clock) + (setf *running-clocks* ,previously-running-clocks) + (decf (symbol-value ',clock) (- *last-run-time-value* (setf *last-run-time-value* (get-internal-run-time)))))))))) + +(defmacro with-clock-off (clock &body body) + ;; dummy with-clock-on + (make-clock-variable clock) + `(progn ,@body)) + +(defun clock-name (clock) + (let ((name (symbol-name clock))) + (nsubstitute #\ #\- (subseq name 2 (- (length name) 7))))) + +(defun print-clocks (&optional (excluded-clocks *excluded-clocks*)) + (let ((total-ticks (- (get-internal-run-time) *first-run-time-value*)) + (time-included 0) + (time-excluded 0)) + (format t "~%; Run time in seconds") + (dolist (l *clocks*) + (let* ((clk (first l)) + (run-time (symbol-value clk))) + (cond + ((eql 0 run-time) + ) + ((member clk excluded-clocks) + (format t (if (eql 0 time-excluded) " excluding ~(~A~)" ", ~(~A~)") (clock-name clk)) + (incf time-excluded run-time)) + (t + (incf time-included run-time))))) + (unless (eql 0 time-excluded) + (decf total-ticks time-excluded) + (format t " time")) + (princ ":") + (dolist (l *clocks*) + (let ((clk (first l)) + (cnt (second l))) + (unless (member clk excluded-clocks) + (let ((run-time (symbol-value clk)) + (count (symbol-value cnt))) + (unless (eql 0 count) + (format t "~%;~10,3F ~3D% ~@(~A~)~48T(~:D call~:P)" + (/ run-time (float internal-time-units-per-second)) + (if (eql 0 total-ticks) 0 (percentage run-time total-ticks)) + (clock-name clk) + count)))))) + (let ((other-time (- total-ticks time-included))) + (format t "~%;~10,3F ~3D% Other" + (/ other-time (float internal-time-units-per-second)) + (if (eql 0 total-ticks) 0 (percentage other-time total-ticks)))) + (setf *total-seconds* (/ total-ticks (float internal-time-units-per-second))) + (format t "~%;~10,3F Total" *total-seconds*) + (format t "~%;~10,3F Real time" (/ (- (get-internal-real-time) *first-real-time-value*) (float internal-time-units-per-second))) + *total-seconds*)) + +(defun total-run-time (&optional (excluded-clocks *excluded-clocks*)) + (let ((total-ticks (- (get-internal-run-time) *first-run-time-value*))) + (dolist (l *clocks*) + (let ((clk (first l))) + (when (member clk excluded-clocks) + (decf total-ticks (symbol-value clk))))) + (/ total-ticks (float internal-time-units-per-second)))) + +(defun print-incremental-time-used () + (let ((time (get-internal-run-time))) + (format t " ;~,3Fsec" (/ (- time *run-time-mark*) (float internal-time-units-per-second))) + (setf *run-time-mark* time))) + +;;; clocks.lisp EOF diff --git a/snark-20120808r02/src/closure1.lisp b/snark-20120808r02/src/closure1.lisp new file mode 100644 index 0000000..0ec98c0 --- /dev/null +++ b/snark-20120808r02/src/closure1.lisp @@ -0,0 +1,66 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: closure1.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2012. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +;;; simple closure algorithm for small deduction tasks +;;; that do not require features like indexing for performance + +(defun closure1 (items &key done unary-rules binary-rules ternary-rules (subsumption-test #'equal)) + ;; compute closure of the union of items and done using rules and subsumption-test + ;; if done is given as an argument, it is assumed to be closed already + (flet ((unsubsumed (l1 l2 subsumption-test) + ;; return items in l2 that are not subsumed by any item in l1 + (delete-if #'(lambda (item2) + (some #'(lambda (item1) + (funcall subsumption-test item1 item2)) + l1)) + l2))) + (let ((todo (make-deque))) + (dolist (item items) + (deque-push-last todo item)) + (loop + (when (deque-empty? todo) + (return done)) + (let ((item1 (deque-pop-first todo))) + (when (unsubsumed done (list item1) subsumption-test) + (setf done (cons item1 (unsubsumed (list item1) done subsumption-test))) + (prog-> + (dolist unary-rules ->* rule) + (funcall rule item1 ->* new-item) + (when (eq :inconsistent new-item) + (return-from closure1 new-item)) + (deque-push-last todo new-item)) + (prog-> + (dolist binary-rules ->* rule) + (dolist done ->* item2) + (funcall rule item1 item2 ->* new-item) + (when (eq :inconsistent new-item) + (return-from closure1 new-item)) + (deque-push-last todo new-item)) + (prog-> + (dolist ternary-rules ->* rule) + (dolist done ->* item2) + (dolist done ->* item3) + (funcall rule item1 item2 item3 ->* new-item) + (when (eq :inconsistent new-item) + (return-from closure1 new-item)) + (deque-push-last todo new-item)))))))) + +;;; closure1.lisp EOF diff --git a/snark-20120808r02/src/code-for-bags4.abcl b/snark-20120808r02/src/code-for-bags4.abcl new file mode 100644 index 0000000000000000000000000000000000000000..e14fe3c239c4b183f300052cfa623c94866ee035 GIT binary patch literal 19234 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 HcLVVN|3b!> literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/code-for-bags4.lisp b/snark-20120808r02/src/code-for-bags4.lisp new file mode 100644 index 0000000..b27e2c2 --- /dev/null +++ b/snark-20120808r02/src/code-for-bags4.lisp @@ -0,0 +1,116 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: code-for-bags4.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2012. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +(defvar *singleton-bag*) +(defvar *bag-union*) + +;;; $$bag and $$bag* terms are translated into a standardized internal representation for bags +;;; that has $$$bag-union as the top function symbol +;;; ($$bag) -> ($$bag-union) +;;; ($$bag a) -> ($$bag-union ($$singleton-bag a)) +;;; ($$bag a b) -> ($$bag-union ($$singleton-bag a) ($$singleton-bag b)) +;;; ($$bag a b c) -> ($$bag-union ($$singleton-bag a) ($$singleton-bag b) ($$singleton-bag c)) +;;; ($$bag* a) -> ($$bag-union a) +;;; ($$bag* a b) -> ($$bag-union ($$singleton-bag a) b) +;;; ($$bag* a b c) -> ($$bag-union ($$singleton-bag a) ($$singleton-bag b) c) + +;;; variables and terms that represent bags should always be enclosed in bag-union, bag, or bag* symbols +;;; (bag-union a ?x) and a are not recognized as unifiable because they have different head symbols +;;; (bag-union a ?x) and (bag-union a) can be unified + +(defun declare-code-for-bags () + (declare-subsort 'bag :top-sort-a) + (declare-characteristic-relation '$$bagp #'bagp 'bag) + (declare-function1 '$$bag :any :macro t :input-code 'input-bag-term) + (declare-function1 '$$bag* :any :macro t :input-code 'input-bag*-term) + (setf *singleton-bag* ;should only be used as argument of bag-union + (declare-function1 '$$singleton-bag 1 ;unexported symbol that shouldn't be visible to user + :sort 'bag + :constructor t)) + (setf *bag-union* + (declare-function1 '$$bag-union 2 + :sort '(bag (t bag)) + :associative t + :commutative t + :identity '(function) ;use (bag-union) as identity + :keep-head t + :to-lisp-code 'bag-union-term-to-lisp)) + (declare-ordering-greaterp '$$bag-union '$$singleton-bag) + (declare-function1 '$$bag-to-list 1 :sort 'list :rewrite-code #'(lambda (x s) (bag-to-list (arg1 x) s))) + (declare-function1 '$$list-to-bag 1 :sort 'bag :rewrite-code #'(lambda (x s) (list-to-bag (arg1 x) s))) + nil) + +(defun bagp (x &optional subst) + (dereference x subst :if-compound-appl (eq *bag-union* (heada x)))) + +(defun input-bag-term (head args polarity) + (declare (ignore head)) + (input-term1 `($$bag-union ,@(mapcar #'(lambda (arg) `($$singleton-bag ,arg)) args)) polarity)) + +(defun input-bag*-term (head args polarity) + (require-n-or-more-arguments head args polarity 1) + (input-term1 `($$bag-union ,@(mapcar #'(lambda (arg) `($$singleton-bag ,arg)) (butlast args)) ,(first (last args))) polarity)) + +(defun bag-union-term-to-lisp (head args subst) + (mvlet* (((:values u v) (split-if #'(lambda (x) (dereference x subst :if-compound-appl (eq *singleton-bag* (heada x)))) + (argument-list-a1 head args subst))) + (u (mapcar #'(lambda (x) (dereference x subst) (term-to-lisp (arg1a x) subst)) u)) + (v (mapcar #'(lambda (x) (term-to-lisp x subst)) v))) + (cond + ((null v) + `(,(current-function-name '$$bag :any) ,@u)) + ((null u) + `(,(function-name *bag-union*) ,@v)) + (t + `(,(function-name *bag-union*) (,(current-function-name '$$bag :any) ,@u) ,@v))))) + +(defun bag-to-list (bag &optional subst) + (dereference + bag subst + :if-variable none + :if-constant none + :if-compound-cons none + :if-compound-appl (cond + ((eq *bag-union* (heada bag)) + (mapcar #'(lambda (x) + (if (dereference x subst :if-compound-appl (eq *singleton-bag* (heada x))) + (first (argsa x)) + (return-from bag-to-list none))) + (argument-list-a1 *bag-union* (argsa bag) subst))) + (t + none)))) + +(defun list-to-bag (list &optional subst) + (dereference + list subst + :if-variable none + :if-compound-appl none + :if-constant (if (null list) (make-compound *bag-union*) none) + :if-compound-cons (let ((sbags nil)) + (loop + (push (make-compound *singleton-bag* (pop list)) sbags) + (dereference + list subst + :if-variable (return none) + :if-compound-appl (return none) + :if-constant (return (if (null list) (make-compound* *bag-union* (reverse sbags)) none))))))) + +;;; code-for-bags4.lisp EOF diff --git a/snark-20120808r02/src/code-for-lists2.abcl b/snark-20120808r02/src/code-for-lists2.abcl new file mode 100644 index 0000000000000000000000000000000000000000..96c5ce7d0d1f1ec18eecfde26d68cb713126bc1a GIT binary patch literal 2124 zcmZ{ldpHyNAIIlT<$7i)h0tZLLzGZ+ZzK*P*%q_0M$BBh9Obf@jgYOeDR**Q=YE`= zn1w`hFUl>~aw|l#emuY5^PGOa^ZeeQ=kt6%pFcj|=li@rf4m&+1O$NqQBhGqKQ;CO z;3rA%_NYJ~v=$~XSj!(v2qEZcBLg15FSY0biOXL#92(_EQ+opt^<5EMvN?!D{HVK1 z>MuPC*1$r4JUgtc#x5Z^bideU$e98*AYCpRzqAiwMriE~(>hHUmYPP@!Q_)YDv=o3 zo=*NH@1EK#JA#D@k7S=H)$`qjzVLca5`a-w;l&o(&D%u{hg&rXA7(y82YcAJnU8{yD*lBs*X z>B#^Po`Fi_i;-sW%eG?AR7IoXzL1B$^Xqxp++U4w$_rgyX&!eNhu&6d`Ab|WQB%Yy zFtK1Vwd(bzseE|?DhXx>f7|7*1De~d=%8jbw7(MX6k%AfG=@^<(yRzMz+in&T1 z>df7}l5MuwofWVo_fdhAZCdI@sHG;h@nM|7$&u>2qGnQ7KqpISS!pZaD&JKxS)nnV z+vCYuQ|Bgnc;l-}U5+4eNy!&eTt?bXnD4W*gxSnn%Uum)mmUi_#yyrN4hRc)MQP6M zx5ULfYxL`qlbFZD`A~BuHs34T_U)4=`u;vhiXFgI8ypfVIf@Rec8i^#fFgH!vK92hVIouxO_{?-sg+&x`>igO4$8%ba<1o;``d&%r;D^Ikk+TyUHeLK z*9#!zrW||KAQS`!Nu|mp34=s%vSiGhPOVR6CDwv--K(gbrQ$}7I>0ghoJ`o#gSSOM zMg)aHZurD6uCW&m>}(pNDEA@^3a(YX^dpjjy*{8%^yflSy`Ppu6_8+DWSj0})se{a zFraZ|u{W{xaT2}E2~%7oo!fki_1y2QpAPg>Lb|r2`f1E84#YF&Z+V6q|G;{P<7)G#?=`}Dgd9K_gN}sHGoNOCj+SGadRrkR zeN-BkI?i&Z?VsJ7oHCEycv`OvT1#6~+d4)waY-@UAGw4Y{?3<%8-tPsj0c_j-eA$|e^gK_mkM4!YfJ z;AIBCez5Ge;Cdu+jMv<@?h&>m$Co(nBF6xonIuO z2!#DpMy#@Ld%{MDAXeN0UbiF1?gZ6JLuKJ@vrcIKDVLz>vvzvE zTEuRZk%WyN$0xJlGU2wP$M7sRnO!3zo=~FJyVZeD_>MRMQLeQ1&SwWFOsOZ0yWjP` zO)39tMf}cAv{}$^vo&5GUXrjz2<(qy5uI_F!_Q#Tf|Nw;cd z)xw)Msy-a)MWhATR2xl?Ko$>gg?$%90^!Ox<%|sIz$)~d+< z_}=`GMra^%a^d~aoR5fP3g%tOu;0L+F-650ci+xPIig5UhB-IiWm?oSnC!1-{6mQE zz0dYav`_HO;!-G!hGB1qU%`iQs3-}Yjw}n>hGL583xCBrJoVQ0yq=k%cmyMHO~5p< z{. + +(in-package :snark) + +(defun declare-code-for-lists () + (declare-constant nil :locked t :constructor t :sort 'list) + (setf *cons* (declare-function1 '$$cons 2 :constructor t :to-lisp-code 'cons-term-to-lisp :sort 'list :ordering-status :left-to-right)) + + (declare-ordering-greaterp '$$cons nil) + + (declare-function1 '$$list :any :macro t :input-code 'input-lisp-list) + (declare-function1 '$$list* :any :macro t :input-code 'input-lisp-list*) + + (declare-characteristic-relation '$$listp #'listp 'list) + nil) + +;;; code-for-lists2.lisp EOF diff --git a/snark-20120808r02/src/code-for-numbers3.abcl b/snark-20120808r02/src/code-for-numbers3.abcl new file mode 100644 index 0000000000000000000000000000000000000000..23f25b1ef42126170951d4885b55811b65e829fa GIT binary patch literal 87751 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 z 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. + +(in-package :snark) + +;;; SNARK can evaluate arithmetic expressions as if by table lookup +;;; for procedurally attached relations and functions +;;; +;;; most of what SNARK "knows" about numbers is limited by this notion of table lookup; +;;; few if any more general properties are known +;;; like (= (+ x 0) x), (= (* x 0) 0), (exists (x) (< x 0)), +;;; associativity and commutativity of + and *, etc. +;;; +;;; this is intended to provide simple arithmetic calculation and not much if any symbolic algebra +;;; +;;; SNARK numbers are represented by Lisp rational numbers (integers or ratios) +;;; and complex numbers with rational real and imaginary parts +;;; +;;; floating-point numbers are replaced by rationals when input +;;; +;;; SNARK number type hierarchy: number = complex > real > rational > integer +;;; +;;; arithmetic relations are encoded in terms of $less +;;; using lexicographic ordering of complex numbers +;;; that also enables additive cancellation law +;;; and multiplicative cancellation law for multiplication by nonzero reals + +(defvar *sum*) +(defvar *product*) +(defvar *less*) +(defvar *reciprocal*) + +(defun rnumberp (x) + ;; test for SNARK number, no floats + (or (rationalp x) (and (complexp x) (rationalp (realpart x)) (rationalp (imagpart x))))) + +(defun nonzero-rnumberp (x) + (and (rnumberp x) (neql 0 x))) + +(defun nonzero-rationalp (x) + (and (rationalp x) (neql 0 x))) + +(defun less? (x y) + ;; extend < to total lexicographic ordering of complex numbers so that + ;; a < b or a = b or a > b + ;; a < b iff a+c < b+c + ;; a < b iff a*c < b*c (real c>0) + ;; a < b iff a*c > b*c (real c<0) + (or (< (realpart x) (realpart y)) + (and (= (realpart x) (realpart y)) + (< (imagpart x) (imagpart y))))) + +(defun lesseq? (x y) + (or (= x y) (less? x y))) + +(defun greater? (x y) + (less? y x)) + +(defun greatereq? (x y) + (lesseq? y x)) + +(defun euclidean-quotient (number &optional (divisor 1)) + (mvlet (((values quotient remainder) (truncate number divisor))) + (if (minusp remainder) + (if (plusp divisor) + (values (- quotient 1) (+ remainder divisor)) + (values (+ quotient 1) (- remainder divisor))) + (values quotient remainder)))) + +(defun euclidean-remainder (number &optional (divisor 1)) + ;; 0 <= remainder < abs(divisor) + (nth-value 1 (euclidean-quotient number divisor))) + +(defun ceiling-remainder (number &optional (divisor 1)) + (nth-value 1 (ceiling number divisor))) + +(defun round-remainder (number &optional (divisor 1)) + (nth-value 1 (round number divisor))) + +(defun declare-arithmetic-characteristic-relation (name pred sort &rest options) + (apply 'declare-characteristic-relation name pred sort :constraint-theory 'arithmetic options)) + +(defun declare-arithmetic-relation (name arity &rest options) + (apply 'declare-relation2 name arity + :constraint-theory 'arithmetic + `(,@options :sort ((t number))))) + +(defun declare-arithmetic-function (name arity &rest options &key (sort 'number) &allow-other-keys) + (apply 'declare-function2 name arity + :constraint-theory 'arithmetic + (if (consp sort) options `(:sort (,sort (t number)) ,@options)))) + +(defun declare-code-for-numbers () + (declare-constant 0) + (declare-constant 1) + (declare-constant -1) + + (declare-arithmetic-characteristic-relation '$$numberp #'rnumberp 'number) + (declare-arithmetic-characteristic-relation '$$complexp #'rnumberp 'complex) ;all Lisp numbers are SNARK complex numbers + (declare-arithmetic-characteristic-relation '$$realp #'rationalp 'real) ;no floats though + (declare-arithmetic-characteristic-relation '$$rationalp #'rationalp 'rational) + (declare-arithmetic-characteristic-relation '$$integerp #'integerp 'integer) + (declare-arithmetic-characteristic-relation '$$naturalp #'naturalp 'natural) + + (declare-arithmetic-inequality-relations) + + (setf *sum* (declare-arithmetic-function '$$sum 2 + :associative t + :commutative t + :sort 'number :sort-code 'arithmetic-term-sort-computer1 + :rewrite-code (list #'(lambda (x s) (arithmetic-term-rewriter3 x s #'+ 0 none)) + 'sum-term-rewriter1) + :arithmetic-relation-rewrite-code 'sum-rel-number-atom-rewriter)) + + (setf *product* (declare-arithmetic-function '$$product 2 + :associative t + :commutative t + :sort 'number :sort-code 'arithmetic-term-sort-computer1 + :rewrite-code (list #'(lambda (x s) (arithmetic-term-rewriter3 x s #'* 1 0)) + #'(lambda (x s) (distributivity-rewriter x s *sum*))) + :arithmetic-relation-rewrite-code 'product-rel-number-atom-rewriter)) + + (declare-arithmetic-function '$$uminus 1 :sort 'number :sort-code 'arithmetic-term-sort-computer1 :rewrite-code 'uminus-term-rewriter) + (declare-arithmetic-function '$$difference 2 :sort 'number :sort-code 'arithmetic-term-sort-computer1 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter5 x s *sum* '$$uminus))) + + (declare-arithmetic-function '$$floor 1 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter4 x s #'floor))) + (declare-arithmetic-function '$$ceiling 1 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter4 x s #'ceiling))) + (declare-arithmetic-function '$$truncate 1 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter4 x s #'truncate))) + (declare-arithmetic-function '$$round 1 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter4 x s #'round))) + + ;; partial, guard against division by zero + (declare-arithmetic-function '$$quotient_f 2 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'floor))) + (declare-arithmetic-function '$$quotient_c 2 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'ceiling))) + (declare-arithmetic-function '$$quotient_t 2 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'truncate))) + (declare-arithmetic-function '$$quotient_r 2 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'round))) + (declare-arithmetic-function '$$quotient_e 2 :sort 'integer :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'euclidean-quotient))) + (declare-arithmetic-function '$$remainder_f 2 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'mod))) + (declare-arithmetic-function '$$remainder_c 2 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'ceiling-remainder))) + (declare-arithmetic-function '$$remainder_t 2 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'rem))) + (declare-arithmetic-function '$$remainder_r 2 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'round-remainder))) + (declare-arithmetic-function '$$remainder_e 2 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rationalp #'euclidean-remainder))) + + ;; partial, guard against division by zero + (setf *reciprocal* (declare-arithmetic-function '$$reciprocal 1 + :sort 'number :sort-code 'arithmetic-term-sort-computer2 + :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter2 x s #'rnumberp #'/)) + :arithmetic-relation-rewrite-code 'reciprocal-rel-number-atom-rewriter)) + (declare-arithmetic-function '$$quotient 2 :sort 'number :sort-code 'arithmetic-term-sort-computer2 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter5 x s *product* '$$reciprocal))) + + ;; abs of complex numbers might be irrational + (declare-arithmetic-function '$$abs 1 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter1 x s #'rationalp #'abs))) + + (declare-arithmetic-function '$$realpart 1 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter1 x s #'rnumberp #'realpart))) + (declare-arithmetic-function '$$imagpart 1 :sort 'real :sort-code 'arithmetic-term-sort-computer3 :rewrite-code #'(lambda (x s) (arithmetic-term-rewriter1 x s #'rnumberp #'imagpart))) + nil) + +(defun declare-arithmetic-inequality-relations () + (setf *less* (declare-arithmetic-relation '$$$less 2 + :rewrite-code (list 'irreflexivity-rewriter + #'(lambda (x s) (arithmetic-atom-rewriter1 x s #'rnumberp #'less?)) + 'arithmetic-relation-rewriter + 'term-rel-term-to-0-rel-difference-atom-rewriter) + :falsify-code 'irreflexivity-falsifier)) + (declare-arithmetic-relation '$$$greater 2 :rewrite-code #'(lambda (x s) (arithmetic-atom-rewriter4 x s '$$$less t nil))) + (declare-arithmetic-relation '$$$lesseq 2 :rewrite-code #'(lambda (x s) (arithmetic-atom-rewriter4 x s '$$$less t t))) + (declare-arithmetic-relation '$$$greatereq 2 :rewrite-code #'(lambda (x s) (arithmetic-atom-rewriter4 x s '$$$less nil t))) + (let ((inputter + (let ((done nil)) + (function + (lambda (head args polarity) + (declare (ignorable head args polarity)) + (unless done + (setf done t) + (assert '(forall (x) (not ($$less x x))) :name :$$less-is-irreflexive) + (assert '(forall (x) (not ($$greater x x))) :name :$$greater-is-irreflexive) + (assert '(forall (x) ($$lesseq x x)) :name :$$lesseq-is-reflexive) + (assert '(forall (x) ($$greatereq x x)) :name :$$greatereq-is-reflexive) + (assert '(forall ((x number) (y number)) (implied-by ($$less x y) ($$$less x y))) :name :solve-$$less-by-$$$less) + (assert '(forall ((x number) (y number)) (implied-by ($$greater x y) ($$$less y x))) :name :solve-$$greater-by-$$$less) + (assert '(forall ((x number) (y number)) (implied-by ($$lesseq x y) (not ($$$less y x)))) :name :solve-$$lesseq-by-$$$less) + (assert '(forall ((x number) (y number)) (implied-by ($$greatereq x y) (not ($$$less x y)))) :name :solve-$$greatereq-by-$$$less) + (assert '(forall ((x number) (y number)) (implied-by (not ($$less x y)) (not ($$$less x y)))) :name :solve-~$$less-by-$$$less) + (assert '(forall ((x number) (y number)) (implied-by (not ($$greater x y)) (not ($$$less y x)))) :name :solve-~$$greater-by-$$$less) + (assert '(forall ((x number) (y number)) (implied-by (not ($$lesseq x y)) ($$$less y x))) :name :solve-~$$lesseq-by-$$$less) + (assert '(forall ((x number) (y number)) (implied-by (not ($$greatereq x y)) ($$$less x y))) :name :solve-~$$greatereq-by-$$$less)) + none))))) + (declare-relation '$$less 2 :input-code inputter :rewrite-code #'(lambda (x s) (arithmetic-atom-rewriter1 x s #'rnumberp #'less?))) + (declare-relation '$$greater 2 :input-code inputter :rewrite-code #'(lambda (x s) (arithmetic-atom-rewriter1 x s #'rnumberp #'greater?))) + (declare-relation '$$lesseq 2 :input-code inputter :rewrite-code #'(lambda (x s) (arithmetic-atom-rewriter1 x s #'rnumberp #'lesseq?))) + (declare-relation '$$greatereq 2 :input-code inputter :rewrite-code #'(lambda (x s) (arithmetic-atom-rewriter1 x s #'rnumberp #'greatereq?)))) + nil) + +(defun arithmetic-term-sort-computer0 (term subst sort-names default-sort-name) + ;; when sort-names is '(integer rational real) and default-sort-name is number + ;; if all arguments are integers then integer + ;; elif all arguments are rationals then rational + ;; elif all arguments are reals then real + ;; else number + (let ((top-arg-sort (the-sort (pop sort-names)))) + (dolist (arg (args term) top-arg-sort) + (let ((arg-sort (term-sort arg subst))) + (when (or (top-sort? arg-sort) + (loop + (cond + ((subsort? arg-sort top-arg-sort) + (return nil)) + ((null sort-names) + (return t)) + (t + (setf top-arg-sort (the-sort (pop sort-names))))))) + (return (the-sort default-sort-name))))))) + +(defun arithmetic-term-sort-computer1 (term subst) + (arithmetic-term-sort-computer0 term subst '(integer rational real) 'number)) + +(defun arithmetic-term-sort-computer2 (term subst) + (arithmetic-term-sort-computer0 term subst '(rational real) 'number)) + +(defun arithmetic-term-sort-computer3 (term subst) + (arithmetic-term-sort-computer0 term subst '(integer rational) 'real)) + +(defun arithmetic-expr-args (x subst pred) + ;; return dereferenced arguments of x if all satisfy pred; otherwise, return none + (prog-> + (split-if (args x) subst ->* arg) + (or (funcall pred arg) (return-from arithmetic-expr-args none)))) + +(defun arithmetic-atom-rewriter1 (atom subst pred operator) + (let ((args (arithmetic-expr-args atom subst pred))) + (if (eq none args) none (if (apply operator args) true false)))) + +(defun arithmetic-atom-rewriter4 (atom subst newhead reverse negate) + ;; a<=b -> ~(bb -> b=b -> ~(a ($$sum a ($$uminus b)) + ;; ($$quotient a b) -> ($$product a ($$reciprocal b)) + (declare (ignorable subst)) + (mvlet (((list a b) (args term))) + (make-compound (input-function-symbol op2 2) a (make-compound (input-function-symbol op1 1) b)))) + +(defun decompose-product-term (term subst) + (if (dereference term subst :if-compound-appl t) + (let ((head (heada term))) + (if (eq *product* head) + (mvlet* ((args (args term)) + ((values nums nonnums) (split-if #'rnumberp (argument-list-a1 head args subst) subst))) + (if (and nonnums nums (null (rest nums)) (not (eql 0 (first nums)))) + (values (make-a1-compound* head 1 nonnums) (first nums)) + (values term 1))) + (values term 1))) + (values term 1))) + +(defun sum-term-rewriter1 (term subst) + ;; collect equal arguments into products + ;; ($$sum a a b a) -> ($$sum ($$product 3 a) b) + ;; ($$sum ($$product 2 a b) ($$product b 3 a)) -> ($$product 5 a b)) + (let ((rewritten nil)) + (labels + ((combine-terms (terms) + (cond + ((null (rest terms)) + terms) + (t + (mvlet (((values term1 mult1) (decompose-product-term (first terms) subst))) + ;; combine terms in (rest terms) then find a match for term1 if there is one + (mvlet* ((mult2 nil) + ((values matches nonmatches) (prog-> + (split-if (combine-terms (rest terms)) subst ->* term2) + (unless mult2 + (unless (rnumberp term2) ;don't combine numbers + (mvlet (((values term2 mult) (decompose-product-term term2 subst))) + (when (equal-p term1 term2 subst) + (setf mult2 mult)))))))) + (declare (ignorable matches)) + (cond + (mult2 + (setf rewritten t) + (let ((mult (declare-constant (+ mult1 mult2)))) + (cond + ((eql 0 mult) + nonmatches) + ((eql 1 mult) + (cons term1 nonmatches)) + ((dereference term1 subst :if-compound-appl (eq *product* (heada term1))) + (cons (make-compound* *product* mult (args term1)) nonmatches)) + (t + (cons (make-compound *product* mult term1) nonmatches))))) + ((eq (rest terms) nonmatches) + terms) + (t + (cons (first terms) nonmatches))))))))) + (let* ((head (head term)) + (args (argument-list-a1 head (args term) subst)) + (args* (combine-terms args))) + (if rewritten (make-a1-compound* head 0 args*) none))))) + +(defun uminus-term-rewriter (term subst) + ;; ($$uminus a) -> ($$product -1 a) + (declare (ignorable subst)) + (make-compound *product* -1 (first (args term)))) + +(defun arithmetic-relation-rewriter (atom subst) + (mvlet (((list a b) (args atom))) + (or (dereference2 + a b subst + :if-constant*compound (and (rnumberp a) + (let ((fn (head b))) + (dolist (fun (function-arithmetic-relation-rewrite-code fn) nil) + (let ((v (funcall fun atom subst))) + (unless (eq none v) + (pushnew (function-code-name fn) *rewrites-used*) + (return v)))))) + :if-compound*constant (and (rnumberp b) + (let ((fn (head a))) + (dolist (fun (function-arithmetic-relation-rewrite-code fn) nil) + (let ((v (funcall fun atom subst))) + (unless (eq none v) + (pushnew (function-code-name fn) *rewrites-used*) + (return v))))))) + none))) + +(defun term-rel-term-to-0-rel-difference-atom-rewriter (atom subst) + (mvlet ((rel (head atom)) + ((list a b) (args atom))) + (cl:assert (eq *less* rel)) + (cond + ((dereference2 + a b subst + :if-variable*compound (variable-occurs-p a b subst) + :if-compound*variable (variable-occurs-p b a subst) + :if-constant*compound (and (not (rnumberp a)) (constant-occurs-p a b subst)) + :if-compound*constant (and (not (rnumberp b)) (constant-occurs-p b a subst)) + :if-compound*compound t) + (pushnew (function-code-name *product*) *rewrites-used*) + (pushnew (function-code-name *sum*) *rewrites-used*) + (make-compound rel 0 (make-compound *sum* b (make-compound *product* -1 a)))) + (t + none)))) + +(defun sum-rel-number-atom-rewriter (atom subst) + ;; (eq (sum 2 c) 6) -> (eq c 4) and (less 6 (sum 2 c)) -> (less 4 c) etc. + (mvlet ((rel (head atom)) + ((list a b) (args atom))) + (cl:assert (or (eq *less* rel) (eq *=* rel))) + (or (dereference + a subst + :if-constant (and (rnumberp a) + (dereference + b subst + :if-compound (and (eq *sum* (head b)) + (let* ((args (args b)) (arg1 (first args))) + (and (rnumberp arg1) + (make-compound (head atom) (declare-constant (- a arg1)) (make-a1-compound* *sum* 0 (rest args)))))))) + :if-compound (and (eq *sum* (head a)) + (dereference + b subst + :if-constant (and (rnumberp b) + (let* ((args (args a)) (arg1 (first args))) + (and (rnumberp arg1) + (make-compound (head atom) (make-a1-compound* *sum* 0 (rest args)) (declare-constant (- b arg1))))))))) + none))) + +(defun product-rel-number-atom-rewriter (atom subst) + ;; like sum-rel-number-atom-rewriter, but don't divide by zero, and reverse arguments when dividing by negative number + (mvlet ((rel (head atom)) + ((list a b) (args atom))) + (cl:assert (or (eq *less* rel) (eq *=* rel))) + (or (dereference + a subst + :if-constant (and (rnumberp a) + (dereference + b subst + :if-compound (and (eq *product* (head b)) + (let* ((args (args b)) (arg1 (first args))) + (and (if (eq *less* rel) (nonzero-rationalp arg1) (nonzero-rnumberp arg1)) + (if (and (eq *less* rel) (minusp arg1)) + (make-compound (head atom) (make-a1-compound* *product* 0 (rest args)) (declare-constant (/ a arg1))) + (make-compound (head atom) (declare-constant (/ a arg1)) (make-a1-compound* *product* 0 (rest args))))))))) + :if-compound (and (eq *product* (head a)) + (dereference + b subst + :if-constant (and (rnumberp b) + (let* ((args (args a)) (arg1 (first args))) + (and (if (eq *less* rel) (nonzero-rationalp arg1) (nonzero-rnumberp arg1)) + (if (and (eq *less* rel) (minusp arg1)) + (make-compound (head atom) (declare-constant (/ b arg1)) (make-a1-compound* *product* 0 (rest args))) + (make-compound (head atom) (make-a1-compound* *product* 0 (rest args)) (declare-constant (/ b arg1)))))))))) + none))) + +(defun reciprocal-rel-number-atom-rewriter (atom subst) + (mvlet ((rel (head atom)) + ((list a b) (args atom))) + (cl:assert (or (eq *less* rel) (eq *=* rel))) + (cond + ((eq *less* rel) + none) + (t + (or (dereference + a subst + :if-constant (and (nonzero-rnumberp a) + (dereference + b subst + :if-compound (and (eq *reciprocal* (head b)) + (make-compound (head atom) (declare-constant (/ a)) (arg1 b))))) + :if-compound (and (eq *reciprocal* (head a)) + (dereference + b subst + :if-constant (and (nonzero-rnumberp b) + (make-compound (head atom) (arg1 a) (declare-constant (/ b))))))) + none))))) + +(defmethod checkpoint-theory ((theory (eql 'arithmetic))) + nil) + +(defmethod uncheckpoint-theory ((theory (eql 'arithmetic))) + nil) + +(defmethod restore-theory ((theory (eql 'arithmetic))) + nil) + +(defmethod theory-closure ((theory (eql 'arithmetic))) + nil) + +(defmethod theory-assert (atom (theory (eql 'arithmetic))) + (declare (ignorable atom)) + nil) + +(defmethod theory-deny (atom (theory (eql 'arithmetic))) + (declare (ignorable atom)) + nil) + +(defmethod theory-simplify (wff (theory (eql 'arithmetic))) + wff) + +;;; code-for-numbers3.lisp EOF diff --git a/snark-20120808r02/src/code-for-strings2.abcl b/snark-20120808r02/src/code-for-strings2.abcl new file mode 100644 index 0000000000000000000000000000000000000000..797f3c777b1e1d1679d3143fff0427a6d64ecec0 GIT binary patch literal 8052 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. + +(in-package :snark) + +(defun declare-code-for-strings () + (declare-characteristic-relation '$$stringp #'stringp 'string) + + (declare-function1 '$$list-to-string 1 :rewrite-code 'list-to-string-term-rewriter :sort 'string) + (declare-function1 '$$string-to-list 1 :rewrite-code 'string-to-list-term-rewriter :sort 'list) ;nil and $$cons must be of sort list for this to work + nil) + +(defun string-list-p (x &optional subst) + (dereference + x subst + :if-constant (null x) + :if-compound-cons (and (let ((a (carc x))) + (dereference a subst :if-constant (and (stringp a) (= 1 (length a))))) + (string-list-p (cdrc x) subst)))) + +(defun string-to-list (string) + ;; (string-to-list "abc") -> (list "a" "b" "c") + (map 'list (lambda (char) (declare-constant (string char))) string)) + +(defun list-to-string (list &optional subst) + ;; (list-to-string (list "a" "b" "c")) -> "abc" + ;; list is already dereferenced + (cond + ((null list) + (declare-constant "")) + (t + (declare-constant (apply #'concatenate 'string (instantiate list subst)))))) + +(defun list-to-string-term-rewriter (term subst) + (let ((x (first (args term)))) + (if (dereference x subst :if-constant (null x) :if-compound-cons (string-list-p x subst)) + (list-to-string x subst) + none))) + +(defun string-to-list-term-rewriter (term subst) + (let ((x (first (args term)))) + (if (dereference x subst :if-constant (stringp x)) + (string-to-list x) + none))) + +;;; code-for-strings2.lisp EOF diff --git a/snark-20120808r02/src/coder.abcl b/snark-20120808r02/src/coder.abcl new file mode 100644 index 0000000000000000000000000000000000000000..0e1acf74165a21f85db04ecdadf3fb8898706eb7 GIT binary patch literal 137196 zcmb5#Ra6}6wk_)5E{`%;n4@FrhXskEz@bGVzl7gh){M!#4_;+J_6Vp#j29;VmPDfIxzIR_0 zMNSbE_b}alkE>e^`%_(pF-J1%UL}p?nwh&Pu)*-x`S}&xV#7-#C(sehBwb5eNi(Ld z3yTnzqJQ(G$SMU9hY6o&WvK%jxK#P@b+*VojBseoW}BlWd=1S zYru26Tjn{}%G%AyOm_O%$XQJC`NtK5D!+|y&*ncLI|!klyqu*mn@p4bbPw7p?JLRudwr$wsJp? z*pw`+S5VfB)D9E{u522ld5h3TU^=a>T=5}EJ zcPH1!;4OnfG*4x_u17Rs<%9Lzt~Sg`S#o9%#h|riOjpcb5HvgUR)`vb{<9sFc9RF(N<`~<&puE4 zI$36u+;&NIc-~D?c4ION*RM2|l=r4IU_ zeC)|vV4%{!hQj$_P^ex#W-%LyqaP{u;m2*$o3Z$h{-d&I;;?4v4Z17F4EGg?=S1vS z6gl6+aPG~;You3KpRGmoPE^~u zCxl6<;H@ZEu)WtEl@S*2@}&@aB-tII$QDtNC`>Zqyd%>R`-;k2=4}=448n*$Ohfdy zV?^v_h@oPm+NhveM#ma3E3v}MFs&!tH^}t<-J)^tc%iUO3xi^Z<|q5&+V7&Ch2rn5 zQDxPCe~WL%&?ky8zZ{{}n3ezBF!+{aOUZS59X$*eI`d{LndP|0?r8dhUVyoNw~dP` z4%99N&jE&6Q(G0=EOVF137MTQXgJXi*Z&=^V>+Q46WxnM?5)JALOEsH!SBKnfuyS8 z0o8JR$KUdrQxLldc95BH2sCCovl4sa$A>C>0A|SclFyD$gfYYHzXklX{nCZo`e|HI zaJTfZavnS06#DK9*f0AfbGzVWEwO9cIlmm7OjjEv5r^q|NlaX2&|n0RXx zjVVslafvMa+)b{hpfrk!%+fs(L?_uAjB6NgeRUqncdhQ55<)i}TsvRRj>RvCqk}md zKq4Iz_KucXE&*CK`{UbQ1TDZ?lwro`j`2@p&bJ);JN@UhsbL((`9&+1Uw_U&=#NmE zx^CDBLGQES&cOO$ge)$7QM-~2uu!ZIr}g$gxBiZ2FEKta&vH$EG-DC`;iO)Ws5wMz&#*mo$R*wbFTJv8*R`c#MB{T$@}OYnzNGLb zuT~-?#Jfn)r}SKzskyBz;dY)r3u5;-$YtmqKTSqp?-Z?v8A&n11?`*~uHE$z23WGV zwiCzIqfYu>Ti{Ndwj3==OwTq!B8FtkMfEBtCDzwbf}-P7f$3E8qz!=5nG12`VzTc- z#Km9PN#z4L@SMFU12ql@l}R)QBT(p=Zh819c!=SOVjq7 z>ZND0Tho6?vAZnTdEgXu6u-Cc7!t$hJdG{`FfAPbPG(9pH)-_R6j(G3QcPts(v(GF zlsCEStT%zxxMJ5UhaA$U9XUTLLL&_&leexCFA1L}8w`^UIlqSv%%cbywRK4QzN{GR(Hc1c3b#Fu-xpXbi_n= zd?t`y+vRc*^bB8Ey+_7i1B+E<35Za8vgx2NiW=y zKl+ng;B$>1558gzW37T)B^pF>827;%W3BWz%VSl45rp-a<4^h3cxR})QVUu*$>wI5 zHZH~Ph^^3T8*S_YKjI6cZT$|1AX&l_(4n4nc_hhs7Jf14hDS+}jED4~W;#{*5Kte0 z@_G=ucFm&RQ@b3;3c;j=vgl{nrsiW-jCdrh6N?Us)Sm>jd0{wZ92cFK{=oKZi+UdA z1<7Z>GfyF>Q(%3L^i5q(KN7BlGyQh9DDNMAaK1A_+5kG&N5bl-v8VwkMh`RCH{LPj z{%VbYJlIshO20O?mVA^ZSkJl)PZnMNL};a6eUAKbobHZ?IP7qA-=Ecrsb#D{D>$-= z>dZ1g{;NWrErMGcm5;@B^e{vXfocSY6fL_E zzvLhgLRQnF+Nj#>VvxkV`a8RG*b9T^Vzq<&9&5+4ncO*!u3JOdBn4*YlNP*i%Td02sWvH9>&N$z{sB0z#* zN7VpwYB!*1_i~UV<|l8nyrlb&l0ZJh9t*w0px}yDkB5*l4%x?+chqa?a{V;8dL#9N zd)KmqKg9g#^011RO9$JBd}vtc;{|vQidjct`O<5MXLI;zKu~9H?nF#kiLGWUsxa*w z*kO^=u+PkjvT*Q2`IkZZ@NeEIk-d4N_&<^a>2H!4ure9jIIXF#Ibo_{y{zpUa|5j{ zu`EPr47&=_W4R`^(-4^`zci$y)mb)>%#ZEAYuwMTlLq)qQNLgfXrLI693HkkD@B^S zLG=SyW|j0uPgb4I1&Qz6#sv>nA1_Z1Hr_B8CIcI77iK_fyA5>QC(b=bCxr{|P8BBh z>nMA;(%MICAtJXTV+uY5etrX0&XO_XO>zA-ZO)aPo;1h-S_B?>ORe10#hz6+lsGqT zF&{Fd=apVr?K_UXEE`*=TFkXZqiO#AfCswOS#+}e! z9KDAY6e5}X4#E&x=O%-1hljJzVOg@(kP|w?g&@}q1^Ylp)jWY75} zobN!VbL!HI`Ux?tHOENAR3D9*Ll|jE`JEHlx)J;jn8J3_ZN#3Sxx9QGt8$YR1AxnT zPH%(WPEDL0pwd(Od|ACb%g2M-(FF7@%02ND^;R~&SzG^UCJY3dnE1vxGs773dNUL0 zo~|m!0$`l@)2}a*T-;WW`*_gLl-yo=knKC^rUM@-4K$wB5%F|ml%qCCnssEf)Xpq; z^?Ik#A1Dz@DP(CM`n9bqHjM?b<%f+`rKXx!Dq zBN<;t0MGVI1JcoGnY%RX-cMG6?gTX0aKltR%}aH*>qnk2Jr1w{KH>iPI8z?al-iCavG6vmH-WY{)-cl1P0yPpJhs%}#0=8Y8R=5f}?@Ucq zy-Unb1i0P_DhTNjpbUvKif-lPQ*)H}A$6F2S;5X<-c+z`^lBVhV07EMt+S4Xk&DM< zzYZY@qAhN<;M$ulleI@Xy!u?E`z{Cd3D5PtW06`?7W+YR^jLqDP~R$MS_gYdWv{w% z(`qV)PQ>2oQisshN5zLJwY+U#;30nK>}P+4dyPoTPn)=rws)jN@2B@RFUUCR;p1$C ze(5&GB%HZFyqWQ2J8Z%y3GU9wkh^hQ|BdRf1jR1Bq)GVsSJL_>`qX~LBi7x|As_Fu zAyJT=Pe>@ixOdE@39%(_;?jVTh!CFdI0jq=c1#0?Ty6FRuPu$wD!Fnz6drF1sht(y zA(_)RpTpma4_#4Gnf)wEn^;jXq0wCrn6IB`D80OgRH!#^8WH~4Cz|c`6CJFq_YqSB zORy>U%(XPB%J3}%NuFz0YhIT)$p@QdXhz$aN(zD0wbKH;)flr?j9(hQ6f)iyaQFF< zbvlt~T&F^-{7!f4PWu_D2AzJ7(A9wLSo%Rz$Ars_WVf(cv7q zfbegYNZB_8W=JzT#IR;!urPH&0%&AZ0r@$$ZRe*#`jp01PJl~NZuoiBcU z7Lg(iOy1Pjw@!*VR)Zw6Da<;>>P@cgO$(kkt?H-m==R}}0+u?GocdQwm_+@8q}};I zo(xLfk5kPQZJ=XTt*mO^qK0=5P-ivzIu6;Aj~TQy=xlHTn^O_urzVfIolyw{c7`H> z(Gr$Vog<1$6bvzVu02GU=UFt(5`)^s1N;+2=VwCH6>`qbFimxuAHo#V+(}@pgO(1B zzQYD3&-BW3-=T7GRO~R3>TxN+ANe2aX>qH3k%342J-7;_(D((5rs;IZFXwDKV0@{9 z9MWy-l4XOj7h{BqRe+->1ngF3kgu8^+!i_;8is12Ckwt$pGm$>m9;RadEljub^dLy zB8?h18q6s8#ra2z?5N+sn36Swsf}(!m27+c=+P~1g>TP(G4yaOYr=bm;buxF#1%jA zn+^xhG5HyO3F6HgJ@8cglQ*9Ibs`E?Y*jFnuzagZkU~=nwymu!{Xw7ib*zG$u@EA9 zn8ta09Fq1>E4#KUB8&|lr2t+_fAc-vj5kA%@;Awuq(H{DS}pj;0v)$S`LGwyU$>YvJ@ z(x#N$541Vn6!b>@Q4k=Awd!Wef=DPeudhkX`P<@x8sw&PG!iBwvr*IYo&34#+Pi39 zL>uHLSl~O8v$lwO+>y8|wRiU~!#@LI(GVglB{UZ10aSK-$cD3lZzEZeiFRw3On5Tm zd#e*CPQrP)sQ~S@SQDoqKWjU(T17g}dYqvIdRQ{T&Leefa539WSwbUs67IZ1%r zZ_u7BR_5Vm`L6ne{0q7txoyAKFj?*M=m!9k)%j;X-s1k;xZLRIo}}!5N_hS~ZZrQ< z-EvnFO1YO&I8}6n6zE&bH7fxSRfBUCFGko1~C6@$~pcu z<@VExSiWZ|SbY1?O{}SyN~*WhF6RnODRPhqHCUouCfRbd+>2VnpBN*2FS%)DSM$Pz zzZ07ZFnY5%Mxt4#d5w4YjF0$?&usYlK0;Q9B_j`2S(FzYUZ^Lei@Kb|6qkL7fbK`1 zmVGCtjqhK|@v(W2uou1C1PimdFSY|R?c7ztHl(Sn`)o1Gr=L;^c}r}ip+f^%vW4~6 zfVaLcz8F?*BzzITEJ{?5l`cyATh6StWUEre?C@JT6_K6A65PRTU`mZ%3{umsy8LnA z(!K~T^?qt8U(t#>%Ev{!-<{ANHAxZ35$0k{2y7ObcF_RJbm6KOFp2*RrbJr%<^>I*)w`5X`e?kse}j9=BqfHYb>>hrWXj+4vQ| zSIf4kDW|>^U^Zd8F|m3@t8V*li)@((VySc%8Juq3v>3@T93i z|FcQs{4;6lzudrPekPJn52mdrhc}H=leZMpmO;XTp5~wxOOPIeRE=em2Vo2<7fWj; z_F+q?LSt(NEHe2VtptSL7C=JE5J+j*u}rx&%~Eq0aDEM=yz>3Zz2FmvpIzkcx!-Tm%OO1OhA647oPqKY?CC6F_*T(b< z*NtV>t&}#nz|)+=5Nwyp;5TA*7s3_U0{R?m$j@Gy=?w5GkP!?h)E5kC z2vDGRSP|MJ8bReHf*5%LW%KjpgsGV1SdH&OK@`2e{3YW`*y@x-Wm1-UCiyU8`ntb` z=7GGe==jj{>d%cYC}!V#FDA=e+!(8ccu^9dhY%M#lp2*UJ7`W?5Dn=o9X|U?$WuUBv54=`%bqNLw~Oe|>Sh(%NFtHkj-e~V zkdI?PRD&&Lrw;C-KD2DrOrf(3p2q5_eQGEpbCy+06%C_rkPE@$lrDN`Z3U>Wmoj20 zcLmu^cJ1(Vb!6^Bz}$v?&dNY3`5NKutPSl9+EVP`s>Iv%JDG86|Cn8LRNN3rx~0Xc zlvV!ZkDv_7aQ6?&lJtOv>Q{KeDUZNhqB74g$exkOcaRnQvcirqag?ss zr@maBPejrv)1-*xhB;;g&D~s)?mw*%Weo5?PHU?XPmlj5`$epH|DzUo7#yDx?UvaP zAX?fQjpk7%l;?KUs6yP_Sm<=?HvG1rW}>>z&fDcy8ryhYfC8qfLPHn9U{jV`;u?Fb zMXE8UeDAT@j-uf*V|=AXlWW?O$C|NXV%pOVqB7CnnYJyWx%{ ze#}a{w3ocC=@!tda>@OBe`1speu&MgopDT*ETc^hF+%n>CX4rna(a%_`wb7w2zpIB zBQcncD=Lo>WTH~TVgZ&w2bl0MDHvAFA;jC^{3~DUyBzPqW%-fTV9DKl_E@^X5eaMC zloZ$44wWmF`G<evd2<*i_tY~#pKs8HBcb^r&|dcESIwz&3nz}0#Z(I? z9yuE5C@Ldpd8%6s9(e)^hg2!ddJad~M^F~=mK456v>hg_WK5U}!9g0&h!Vzey8DMy z6XC7nXnd0`j~me#9cjPWkF zmp?Aeu$5Op1AklRApWy=lL9w#i2>$DS=XuyPSLm5+aIZ|O;0qx@z3>B;dVZT z5hGg+?i_JE{0@iKuHVf1ou!sWHk^j|%yy5>s4P~V?uYJtln5dX@o;$kK|gv=texg6 z$8`U$ z4U=JFml$OJrIbKxKZ^^w`I{Z0NMHcR`GHeQVv4jmrDHJ(y`3DZ`<@M1Cq0e{?Rozw z=e7&6S^6X|XsV;PiegyiTdXRghxDjym@U4;IU;(*ef1i;bPvL(-GD0hzI*$_6A0~kO|M0FM8%&=banNUX$PR*B4>Po;8ncZt9@&m4At0 zlURLlH7xb_edz33aDG>$OQEB1jGhttGub^=%g(UY--8W{WcvG&h7CgFq0 zD}iFm@g%jt~wqu_jbMCbJ_R;DOVJ09vq5^szzREOEb}Ci}cL*hjvv4ss(W*|LMkeY(T7p*XxLAlm zMYOPxBYgKOOT}T)7-OByyy|J-@}3>G`B88hr)pignvE=Xo8(J&0o7cd_gTYl*ajfB zNZhhRGASQK(GCBqryGf3X4ltx1*cz`k7q(X{c__hWWGTTF;-P`<#X{A$@CIGTvROY ztGh_(z9c;0mzH833)wu2WuTF8A^J$sw9HmC4|qWcd;(#28-vDZqioxonwQ^R1c_{B zH*-~&iWu1O6nUs*(ASzvg}aB(R-6$b4#wIfkjqPvHCB&RSD-LNq~9LuBVX>$+JLFH zA~HU7o6+S~foELGghMkjdhgi4!KlUUVLEB;RG!<2au!)8T+N|By%wc&-iRq#ixB53 z;-}P$hwAax+_eg&ZC)&SDG(auvurA5JdTO9j=J8`zf76e^}7qM3il9!cfH}a>sLjIh&sn`-M$A5b5)Ollm{n6PoJB!M_2zJJj zDnGy2ZQV!mF3W9C`1$!4_nWo*ETHsI2J(?v*PsHR6>s#Qs5ro}wYdwBmZ+HlRC`3t z*zH9iS6L^`MPOpy&rQu;>Z~$%D~7WJNfhOp!%$i!AzCesVpHRJK3!ryL=uf2_YLK^ zH|N)Fq3Yjz*Y|jXZd^*Xl!0`~+_m{;Rk8F3X2{&yc-pS};VoB8px924N7$Ln-;@mE z>1ark3l5PFu!?BGqK#z`+SC<0rylUWO0ZDVYrZQSR1RMJw-~u%W zWu5Qr&o-tRfxHF{$n;?TsMX@5Dc-PYB>?=`~UBHNU}rh5*4k}t zqe>RU@RVR`Vqrio1VL_@Xiq`LsnVrhbxnAPOJO?{3C&eI5jM);Rb#6|?(z~8bMgvi9lQ&l zJ!z2Wj$MoxJ;I9=$INx0qXlZ3SQmhnsYyvoWPCdLhF1ZUOENTX<6^gwh=R2-iws1y zgO)z>63SC1OuZK<5{K-uRQtI}68KR~v^4I$c9h~ z7R9;UNG$a+wUG=%9F+=|J={sY6E7vCkjO{&!fj_Q=A>dgb%HVt%q{J*A&%kIVr*?J z6%Kw?w4Nh=!f=3x;WUfo7H!6UTjo}PC|qz3wKa5H#5jV;0bVp0UxACn^MJ|&hj8J9 z;wii5eBwpMA@#(9aMriwQtXu`rdwH5EB%@AmbP0x6( zIz?^&rD3VXz42e^ehV2Bj4Yyq6w_;e_{%YxLuvD{!SK_y7SD*|w_qd!O4e^-=3k;tsJ+)* z0?FEQ9s?qbajG29n>1i_chH-I@9ejr9&phn#-r>Pf8B$s7+r~QW^Q!4J?_tlU!Tmg zARVp;@N?<@4++Zqp9D<Y(ff5UM`oN)g z5e0rVOB5?p+ADwLkg!rc|Vc9Aj30K>c zfzXy3e`@5wzE+^an$3~P1sq>qIye~ZZVWD3cZ3cIK_0I(Dx8z+Kq#yAtF7mlbRx(u z|H4;HFy1t_MI7Kp+CpOzuT5R~LqO##PIGQaFk(}9wK{jWK`{oLl}rvA zrh1VD7jSQ`5vlS#(I7u&;`8=A_HG{g12gMh=H+^gx$k+${Q46t z(QTzZ*@>QQW~E;(P?fH;)LVRP5S4**^5ct!dzu1yVubhzEo@ixVP|*U^(QD5lzVV6 z>Hu|YP~9>rv;(sg!}VMC-EZ4@R&X%tb#a9II^znmyH4d`7U=%30!9As6)($w5EQTi zCTKc18P%W1o~`+TgDFZv>Kd##c`=muDKJwpNgL;B+g>@TSpw7Vv+%IH_Prq)GqKHI z$*2=}vHRoe#)co{;1-OSiJ=SS*wIggbnB#9cA*SeHbzK5pk(PFGOGt{(X!A^s}DgC z+=ws37Oa>NVm;4cHoo9`sn&;$>L?_p_l6f)fFfY02@M7A1@nD|Ct(n={~K>j;G(K5 zic%%labG+*4aI8Et;~L?mO+?HTBeEX9Iv)Z;c6NU*P6M$(@t(v%do^vo1Gc0Dp*be zy2iW+O3Rl^Jk8ppdCr1Rf*@x>I>`Jgh7UPCl}#-bpBZ60m-)u_>VD-5_#ec7K))f6 zTtT*O@NCe=*$Y?3*hm}^I$?oUEmZWQ>bH(rb8 znsXsZeez!3tRVMKX05D2)24Aw(}KW@%)^c__2h^|GrPwE-S`xn6kWXAl~pT?QzADr zPJlKaGyYjWqx(h}`C5>4d(H;Ukz7c73A@0;2i@b`5rIH>5ENLTCSZY92HWWy|HN3y z<vW4!lk^M&=ZWT7l_wUi%2vGdrd}F{#Swi+o=7i6BMfdeytNcGs&mJ z=~!r>4~u14$skzLV9~$_anR-t6;a{m1SHzlCcY%lKJx$@mN z@N~QbV?S>!kk`WeutZEDlP)sp>NOfQ2AaNK8>?>4QWGh_O^f-xmJ$NfTP`+|Slh~q z0nanlwW)wI0M)V9p))V5IU2**jR7iji&_eUEAdXP=&J5s;prHu=?*m2^f0eGQqotT zR%hqAN$@OEp2z#}Y;S}Q`%2JF5%=R_!FYbH3akuGvF`NQD{RCt3CfD#i72KDV~5^6 zS~bxoDc77o1QloEW*J4Hg7eN5*H-e`GGU8z&P_&4eWy^m)r^!L7E7Pxk`G`+wM^Yv zPO-B*GGO~A37oLVLDOj|X_^aa5b1V(JC7Rf%TjjThHhek{S0@bLM`(lsmt%HJjV`w zknb72?v8bS5X4r*?9maL(%&Wj2!9yGOY6>n|gtsBPApJBk`> zFG4%!Z3HZgm;0Nept$UsY6klIaJZ&E27SCl00`yJsl9V~JP!y9R%76-`4%4anv8M~ zl^PYdTfd8=%cC+hSLh+D953Xz)@a)$U$(byQg7txi8m%2`i6VFTYY7DkT#y6Uf)q8kA68+@Yi+L z|H{&Tdq@A2IR0MQ+tGkm_V)o_X$xVN!ws#9)I(+C;8EKaHHkA!Tg0rZd5*UilYLdT zR27IHAf8H!>X1~p{CzFV53+uL$~q9Z%X0F4e7q%mkIawUm8KP4X7(jHT$eK+`)QXa zEm!1?v4iOh9;j3fE?f69)Ox;^n91405o!&Y-BvfD;iyJ`t58to>rs;LFgP?iLs^@w zq(%N-N*Du^F96+A5beC1yu)kbv9di?{` zCr@sBQo79FFiMCmc~ttYvg89VolcQm;=;>XSp5uH=T{tSY)_CcwD&bK6!MPkYQ1(? zdPq(4XHr;Z+Q>?Vs(#~LZ%Rvaa(!guM4%ya_DEr`93OqyS7llyh0Y`afceGHlDMxV z!=Und;E?RDqi|8$g(WC=tvC8V;?V;P!=ac|D#IjTeN;uFui0!lw35%kCwB$g)aYQYhQ0Debp)31IL}vM6A#d6(ICxe z>R0o9?0Y2=a+Waz%iHGDQBnW4$__6S0f&K!8bD~%c#<$L3*DCuRgpY16R-Vu4l^&< z&qXT2dt^(Wv;#NAk@Yq$&A$29z>1pCd^ds`F{l=r5Zd8gib4I2^llCH7(L3emiyxB zk4;<2#}mJT!C>@HZTfdNmr&cwn062KsMJ5x4TtIRtGcM=V0Gm{;9%7$>-qWT4(?|TeHQ57X4Hjgg6npU zb8;>>F$c7%IN)}Q8q*Lm&;zk(nr|n~5>c^^(#&t zvJXLa9VUZ)`xg_x2>eb%aD|8kG>tSh5M888IjnvKsD9lWmZ?$ZzcEb3pp!4uC-Dmg zN^mpSy`#)8vm%~Fbt~ghVV+gh;N+w2V{^%OdVG=gR%RSN&@bO8GeLG*W%9 z_f1bfpT>j0N7gU&NE2EdF+)WVNZ<&K#f4Zk)hwT<`;teIJPh+gzJ`Xjun7jO5#TMu ztKmh-nJ79IcwiN4*!U`0E^@D zV+6&V(>~GZ%PkfwaTbYCUEgoWc#8E!DZF?z{zX&GdDx;M6l-Tzkd%#8>)W8|Q&QVv zul`NmsaE4IrhVEma7Nlvz^=vZ?lEcYSXb59x|*ftXK2-4!jE6PsmCAPi%9|#_*@t( zNO&cBdqIHjToJ)khlYSWVVO)(xb#u8oe`XoK2UP?d2Ra)L_GE?{6s9374PIFF}nj2 z04TshrDY9DU#Gv9%uzc!>jEU^Almp|zQg0??cGO@BhA~0yFZ#VwRGX+^BLBX-pM(gi)#TzV3{q@;1LGe{Wop4zs`VLCxoAicQtOC= zHlnsUFEl)78}Y1-D1+wuaB64bc|Utgc24mt2Ru#+YP;z|V>Sy3! zN(JppI9N-NfYQlCrC^TV86erA}ikqpdl-`|;w}y0vc_-MXVc4N)LL^^}u$+lFpvfddBW40Xf@P?uk)JjW@0C>W@!d)5hm12s6`-%x<+ z4^XjP>Visg%8+HP?rX@Mj6%EBp{8Pkc!Vzi7;0vXQc?))UU>Uxea1D_%y}iG8{Zrj zlNC{ebQdQ!rAz$pbC|!tE0Lm(5}YrQY{l|C^T5b)%1Ve?O$W!(DHKD?JAA-1lZ2eo zdx9X=@JC9eTmFC`2@~}p{sg=5>{w-1oGk}djH9czH~MthxTcLFW0Twt;SPo`r#5vz$q^MKu{Au~~h@SxPA(sgwwW?PiS}?95Vx z?|ea_;Amg$@!tQ5EQh)rl8iDF8zR$~NBOIgHS8~9{u{{i+2Yb?OGaZUclFW411mq{ zfJ9PieG*IR_)Arm)bJ4ROU1=t-12q*>rc|{JtG`r@omy-U*R3U@%0>0YU#eMSdbQA zFZ;BmjU5qmS!CGJS6!wr)H~?65*XngVxVnyG$Xt0VL0d+BqR?-7(zru7 z&J7vFb5R9cX)_-DI3pjl(abA@Z%nl(7;}QzSVDXy>kU~y!mlyz(>7j&M&BDkLW<=hmB1dwa z!alV-ANwTHO`cTO--t|EWK_I1z~`#kdvaNjfw;zXrq*tY_18UC0piuCDQ$czDngU< z$j8J6A?8k#l@6Qj2E?ji`^BUx%(}1?Zr|#FT;z{%i!u=G-TMtxX(qV5%}`pC+9laS zO_qL2N%#ma8QlX@E>uZwtNlkS7B7T^!rkCizSDKJx&F_u7ROHYeDCB=0o`b2E?4 zHXEFym)dt1)NlOmcc|<6ewP>h*AGcwV(br>P4Fe@g!)&p)b6!d`nOU`EdEQW|4XrS=|764mp@nB-YA{0{(l!szepG270uXs*9K!& zX{8G_PwsUwI9I>@Wi7kj4SqRDmS={)e_lCWIc`~cYrnudn(UAXa}5CTtJCP|1iv>*x+Ur#!sg(>%^(7 z9;GbaD7Qvq``m_US193YK&v_e2I_^^4?I{rD(z;=IWq2;d{&4aWFlpNo{qMG0qFt0 zG!)>*5ZV|y@ZaOp@Q}-llYZzxjqzS5FC+b=Pj+&8 zb5uV#l2x*f*2~(2$E$2pK}awx8<9B=2q(Ldd&*z6zIIE?kyUH~Uz(^iA|PqXzB4zg z*U{_|Ki6IG&6y4~dPJfy&tC@Rek@O=;;sNGfDB6*Ten0H8EsZ9jz~0UyazYer-#Rq zj${-o*9NC&-%mJtS0!0zeBzm53-Lo(58lm&>>b4r2bys%7 zQK(^FMxMncpG|wu{ozz@%4T-F+}J$*_(u^6&%DGF!GIIX$)r`f_V9Dw^U5>72B5XK z*>Bo!Ar z_h9oM!F>J4@bS5CWL zytpSNS-b^TRT|2A(c|_Fk1|!Nv_gEFt55nc>{xrv-plrMrLG^WflASwWrYtQp<(ah z><;IxK}OyXF98!_n8NKBzc#xNdy16p!eu%rlZTB|nC25@^n`8=zhKbW7HU!XMS-^j zV5F+$=Yo++1V*ab#GJDMr>EsBQr+%fq>a?UNEI<(Eas{p-^}N-VL2K7Y}v!aynnTcGA4^pQeRJxdw zX~r5ZXFf@r$J<>jTTE`5shnQ72$pXR&bmvuaVd2Db|na-mO_Mmk_CG4?FOH2@pA2I z;_B_gh_kd8=!GYm3CDdu{hmp0qi@LX!0fPbnI~Mc@J;*yvc?`Ybjc?L78Dv9rzah~ zRdk2(j9`)3nw}mIuj)TW+}!O%%h`Vmm|`{BhI0s*XxsQ->pMI|K% zvY*C;d;GdDS3CGA*=*+p#mWGCa6_a)as@zT?Q;4$Iht)*C?-t{o3WkQHND&!%Ld4qYJ$jMRLr>N2(5WcdsZYDM^c; zWQ->)88XcdB8nS{LUsxq5;35OQ&;}xz?Lf2S{;U18eLNAuo^rjK8QWisuYP6(lF|1 ztJ}nJ!;H6)Uv17Y8B?h{yJFS7%m8eIw}z7t#!`dTg=ecrd=Yyn#iS%3+3Z}PO1s4F zeshOibqU_&=Uhlwxu67*UmDV+##T$3SX+QvTiSH~1gVsN1*vlX6{JF2MWucYs%NQ7 z20lBm#f9D*DN&xR;D+7b!X}g<{l*h01Ba=?8u!u&cW{Z?S-)2G@pJvpZ&J^2SiVI@0M8nR{T;pH${fYAsvWVcvY5ln z_RLv?D%;fdr_xVB7FX;iHUNV_ALYIh&bQM3^zX1Wx^eHP<=^^9Brqk>AITJg?M-XT z@b#xFgIZ)H(U2C>@ko7^&U<`QL)52eiyosa^j4iw6`L(eeC9>>{(ej@`)+*|9WD1> zeQPeFdRANG)qWBDrjcC$$Q>|B~>T!daI?T)?Y_v@VW~$bAHPml9?sqtUn7Tar0Q$pJqyJ!P zy&4lg*8dGt|LR5k*Zor)iCKL3Uty}|w?c5w^uzy8&ouErdZvGE`Fn`Os;$1{rKxT8 zK`vBSEb;J16}@ix1zxxOd~5x$TmIILA0cpS`p&r_z{X(fJZ)ai;dXaJJnSB>@fL8; z)NO|kK^tn8nd@h=%FznO~ph_Ir_G#&XP8Df?`&ci##tIl1?(5?mPlu z2w;&**D)Iwn7nq=4r`-RsCQ!2o*z|Ktzqn8cx9?(p@hd@Obvv;Kg2s@k*jx@DVMM# z9GHheW_Onc+PGNycm!wIQ=k~lM*MvMRgkD)Y9bwV;A*PY3my1z2#i!^{WvGGqAI1Y z53Fl%CRmWq2kuOym7IPBrA-VeD@333eD+#+W9|Ddq>58UA=Ujss^^?Q9p{YDAEd&9 zktzcHQ$MKY6{#-dmF!@oT8AsEY~w&sGVmGYfsv|#`?ihBqbFtnd;kRiA3&AaGge{4 zRDd_D0mq!_7|&b6BULJDt~O~dHuu$_V&o^!vD#)!ZfCZjZrdpoTv7Y2)WD+W%OLU) zf^u8aqH*YKxyy-`+`ghrf&?Exefh`)K7is@i+w$S`t^DMh3NP90n~d3a!}O; zS%>0)J0U3>mSJi17v@D>!|WQ_+x(H|@P7Sdmy~|2C8qXgnAfGjpzc^g6*${6{HIy! z-({A+l?uLq;{HDNr)v7yc6^MHD(Ew*>wE2gRZVjl8WHVPOVBdDI=_$6M}Uv!BB zi03)(GQ56gBzt8QcfLH{!;r)zBggsAjajK@yDjV1)e7$HX#J~cO8?q4^)GGs*kbo@ zO;bol)CcnqF>XgmQ`|N?8A#}W_5qOP|Do)x->TgAb!||C?(XjHQ0eaO?ruav>28ot z0ZBo+W6(%|6_FIx6e!V4BIGNm4svXD1)I`-uALMMy~7B?09QAds(ouL@EvVjJX}}doB1j* zbYP~s!20cI?18GtvgLEu&qKlJ9%K=TPb`b3v&k6eD+$tIR{_XV1MXt`gb7yxSuv;Wlei~lG| zJAy3J;~K&(gEql(xOochNw-)R*nl6K+J6|Nvi^oj{`o}xyXmK4P(X&UR1%7pmF0W` zNwZ)=^MQYllLl#P4eil_%3A$d=8u<8KtS-vg6eg?KB`V(LB{9HxW78OKjJYTxgDOn zJG~xhd%n|o4IduXldR8n=4qxf1Mkbo$8r=s-VN#*%@)apr^|I;?GlgP-yP=!Avn~t zKu5wyE_1Z-E$BM1(lfg-kWm}vCCev8*ce9SEC7kCtkth{HSF{7;Dz~pPY3V@36e9; z^mH~<`0c5U+z33*oL6l^#$*QY(w)y_Fp=iNezDAZwQo~*9M4R|K=@6VPFNek>CDBa zI@x*s)fp}V&C5N)p!}LrSkjhJp~d5#7xbih2wIKFW0A3u8FJMu_3_}!^5tQMv|0&` zfoO&f)}XCFRsU{8N5z2l>lV7o0e=h)Z=mXD0jmCKR_;q>&qkf`r>cMdud3g=P#|4E zm3livLma63olJqMpS&~}NK$PK97M<@RfP&A+|*SW>!fxt8y35mU&mmdKyJ{8UIwCu zdUQS}sZQKQK}L)=Bto?cw2{+Xl_1`6Z>N$N)K@+&+w`N9AK($Wm{djpYOcaru| z`a7h(LV3(cc>f2zG>aZ}cM{yE|w4@pZ_921q+ecBTkB#Wk;GqSS6^p7|}k?K?2_= zy)*x1k%mML8<}c4At-epiBZP(X?rc(fl*EyjzsP72I6AV=1t3|yeiUcXL#{FK%ygl zFwW9j_5Q)G`nt>%9yAgbdZu&8Boo8B*#$>_@F`USa!Q4CQ#zoNv0391@l%rYW7n@) za76OA1SR^|^?$P(2((tEN9{@TyTk#%E&COY}3aH-g`7Xr`Iq{wQ*VJ*1*rs@ycZ|F=72=Buzy8rb&#lT~l z^O)|5=d@pZdY(=`K2N{0m>PfUd5-5kJ8KI(Pw{rt|9YO{$^y^Rv95Jk;CZSc7~QP7 z%o{0AJ4|RS^CsMFpOxVvi}R>r;xF>_=}=HYuOAP~Ap77#ZLzx3Mwn zi8jb*XFOzE{SXyJwC29p#p5|UF@8s)%2_sjn>zH;mOro5{LzBa1}vy8EFFAK#}vSVqFv>MUO`{Z z=zMpsD(i1#O4;`J)#g;+ zNp`NsTI{m5lbbamkimgvnS;TW5eJ!4{xp$l=#Zlx{C&1#{=)O-&$?kY{AHc>N8S#f zr#l}#!Fdv-y%mcnvfaqG%b%TvsTuacfw|+vA6R6Pq-nvayq#htSt#W_2;lQSlsTH>ixJVQ&IZw zMA%4d>P_`Jg`qSVGLu?1Twt_+ostFZz%0)5eM}GNg-3np8!8vZdAQ4RC7QuB7VW7d zBMVx>8%&Ig$qq(7Z<2|v4E7GvtfGUcBhbeNi`kfPuLN}FJFEu18$j+$DHA-G-=g^z z`RirlWL2^0xl^6)cCOi^_9n%CMmh7_u`^D>HG!FET*pwompi&*i+iKA>zE^HMOn>h z#N!I>4iZh=Q}g$^YYS_9Ga5U_6kZRw``$Lc+Lz}r;=FBqFJ+R`0zWLUb}*-!yLl!T zJiwBySY#rzz04yB+s_UDaw@ZQXqX>7L|EIl){ljB#1lC|_>DA@$s+U371HBR5P7zW zMH0B>x&P@c|4p0x^Ok4RNeqIMf>V`*eymRUy^-LeV4s^bd5Jz6M=1^3RQ&h}9mR_{ z>@!U338;02w_b5)XXmEsA;>p~Eo%EnSNf6KlQC;cZ`#g0Kjc|yNLzXMv8(<};3mq@ zaV+_y@JVP^4to7j;MH#Q=+i9^B7;ASUAXD$iQd~C$Nc-2tESbuH?Ep!SnL!d-V;LzZ`m;1&hRR*%8F(~hh9Hq^d-~ppK0Wg~PaLYT4d|1;a*vP~>NI*zYMu>W0)_RWR<{OtXB%saK)nh7-41o_mK zUzNHA)J=p=!OMAT$$ymQ1*hl@IMTcEsXTB16jq$%Zyoq~L!I zjI%@U42)IzpU>h0$wm!>@;glqSjyD`tCpvciv*SoRD2R6Oaqi=5p4t! z43J~%njv{{r%h4}y5SXbwI^B_<{oxvuMvqpc`5Cy$oXsw7tez{fy#`gGJ$*4tMd(0 z5F)blnS>aIs`FaxT>bsh5^9ggqAPFe)a27Onq;mfgm3LDN;w(19!v^M*q{4OQl0|0&PMR z8$F*w35QVgWNNR0Lql91U#XQE^|(pzp&6NsQt~LmyhacDh?^f8>;YPUoEi!#O9pB{ zrUAE#y_$90T{PG;2x&i_{DTWE(28o|(~V5}3_%nL$?;3?$yuD5C`k8U5J`3hZWm{M zAa~Z|2gA8!TQ*5(Fu{7as%(jpHc&U~8J;Z0CBS{`mjgQC3Z@hViwgawnv!6X^Pt&F zO7MW^C5rurI)3ipy4(CMwKh))&ErtBX8GuNM!XQJ)tDCi1@oN-++bh8W5IGZP* zCAW??aNG}p<39M_P+Zr?^(bDdr&KsDU|R9Z9O|oHEIXqM3Id;48$tEKTgRnQr4618 z_3B5(nc5m>deDj>`aNcGJO2;sF+Vjul z-U(PPJSom*##v8_a~opTsxh;d)U+w@i`(t=&}rbf@01z%H%lI6bqHe|#JCR=s|e1D zeDX^MmHD-t?ZAJ6MI4CMx>jqFpQ4i9ruNigmHfy?<tp#5N+boaUN1cy+Yv6FE@R?UQ)h~zE(;LlR@Bc7vY>o$>@Om znh8|jnKR^wcD&ftbb(Q#&U0giwfk3GqnhO2C>3aiNXG$4ANR&Zhh`FAHB@*NW0dzU7lz!{MGnzuv=wg? zvng6%u$$Xa1Jm}~VdrC>?cNdlmFM)vStJ@9(uz~1Cq^Gi%&JSXvP37?VGQ8QWoU<( zGwe3v8Pc7G<}bj3c1(?X|S!%2qi^%_XS*r4FqS&~R75=WmOZcpj z=-+$NX+SmUuSpf%{dJNhI#Wc+R|_P#HzyDy*gvXMEuFwtJ0>uJzc+X~o$+LsHeki0 zu=%yM8s_AdK*d$snyI)uJaUYaPLaxp=33uRm^zwbn$cM$U6ZE~GK*AU7gZ*OQWiut z%2IIU_l7%ZE=1El@EQfoqwaKk&Y($+oPXUVl zZkI>f`F|hb`5Rni{jV!L*v^Rm%Ag{L)*f9G)FvV7wy}HQ7#eT@QvE)T3X+6t;PE zP4ssF*CfSLzwSc%3Fq5;#QCVZ0N2DL!(-z&&SyBQAcde<^v5+Z$p>7Mw-r*5iAm$s zV?KYHQjEL;tK%s~_eO4YrYRSBj>e~^^xfHUd{?zzg8cnewm2)$l#<~9O{n|_OMgVJ zm7{G48&;3RY0WF@_}6`C9*mYShD?6-;<7V)Q&yS@v`&&xhpglq@j6lzZa`~G(ZwK+dZ8u;pAI~_C9F=sH7 zNBWAXm92lLIZOqK;(LYQaz3 zUn~|GlLD#l<0c1@!@UM32u__JDTeN8R~< zpW*q(Z|%!4vu&L5(v4Eh*AJWs?`Jf+C_Kr~i1hw%wZF$a7~lxfc#ad{~{` zJ*aa(b|2w+H|#$AJ-W^J7s4B?R&xy%_MZFH*cmqCMzb5|xqgsu0HYjp5R_^tb7{!p z2Q)msfaJv6-7Y`rVS^2!il_zgjoomzMijY^Bb(t2^uU`4^}4X8iF8 zk=`Z`R@6dqXnd15arQKu?fYJpe~@q_!X`X%WkaGp-+_EGU8!&0|BJoZo9~)2-3w@jQH#z<{ zThiw6L8{9?c6CEl2}|4e_|jwvx3*l282puA7ZnatWEfsNP}bTRAgvi95eC$`&4cIS z1D%#bUCEni7}N`5l1X#WUUBhOWOkq^qDq4BM7}l^JI&GMXm2{9JH{2v3qw4t%d6rFPU%^a&Uwi(BpR!>$5-o`uf%KD zr&sIsya-#X-_CZckZNnK1U7Q3L|OSS1#VoJ9%Iz25E}$l#X6}F*ka(-8brj$N)<$7 z!-0$-8FKzInv})5z}!C|0cc5`c=7*Q;_(klbuoPHPn83;F5Id@DkADpx@Yk*z<+&b z1D$?~4g=woEl)K)5|zCJ$2b`eB;tMz?WOaa(WKa72{j4^Hg_d3;Ai_$IuA}ISy~qnI7EvY-6G{}^8w44ifIL$fF)5|Ba@hMT4&Icd!b~a2 zQYx_ZXoe~4dPpdnN+XoK15FMcl}YA*7|90zg6dOTI| zS1+S?s{1aR%FpT~7IJ>7@BQaBZA^lXs!3caTE7QvvP`#ds|WQ#XW*Rs4n>&``tb>? z?AJ|Vnmr7XZ|Wr)jGN$jtc)>O1g?KePHD?xo9 zvky_D{|?G&>gMmp)T=$sjWoC6H$102;HXIq6hEjj+YrQ4<`lEVuW$^GT;gP`srcYS z<`pL2eu7h0K3=-vizP!}ZqN`KiE+`FwpBLa@ySp3?8q{JPC-V5HY7zttwNqK7D=Ni zcoRHrr!~#MPfL^*q#~%tsAUcAO7K6(NXq&;y}kL-rs<*Wu*n4Yyue#GC+kcl$`Uk*5 zkFp8$AK3&G`xyFBHu>LYc>eM4=pVXCSAIeP+Xs<&X#hE;LKgYC;9`(APTw;U$~U## z%C)8hlufLJ&1zeX3b@~ctwr+%Ul=EU+g1rub%iNVXju>P#&0JtxJzy)2pW1mdaiapZ*!uh zm@GTNXB?Khd1Tkih7b zOcAUlN@s2%(93MD#fhahOuN_fu4PykL;Xi&IlD_qxkW8=*^kpUs!BnvYWX3n5<$yk zafJf*MRN_pXKY#=jLSy_6!fe&H3OowEzT}C>Fs2a;E)@X&X++72}XnE7}9}4oH^gm zQo2fXTJg^fQ#vtqzPttXhpA1(4_0sy7k^;6Qys?OcUsq=NC~W(DgSo=Y&wH9_#|0S zt?J|3YY(RPvd1?d@Bs4i8J~E1K;dHo6?|U5kYc_H_Boha`05R=HiD=kyauA=)krhx>;lezxlDX-rjnv@Vr8 zDNdIle2uG7)5hkvZp2e}7_ZFZgdfv>)-n*HOrRy2zTUv*8vkxX92XWF(E=+^i*H5h z#O_272~L+D5`e3wyL*tx>FOk0D=()4nW^BstC+`t0BW5;X2Li8J#;En5BL?eoDad3 z0n*PsH)v@B8<&bpgpt;I7jbsECiZal*6g=0dVdd;ayyG6NC1~S`#%k!{yXnvp{}<@ zvXxVi5R-If^%w6n_YAW7H}52^6bADOSwuy|YZc9_&D9|}dQQ$iLIP-j|>E}=V*Y~j5cq=UQ^ti@8Lw)-xin?rf4F{o)z6npKoC4KUgRsS4 z-s>VclhHPD^jR=o)o9=7j_y=b9vG4e%r88{+W9!C*AGnUMF8GtUT-z%aZ=CNho!zI z&kl-B%&cJ)fFK1wP#|zM87y0E};RJg_ohxyBZ=ER~*2ocyLs#XOcY zE=lfpm&7$DQ%?NjZMlMKIU(pJDOSWwY6 zwzhn*pq=zt2>V?si5QoLiG2wu&325qAPT3B)d)+7Z6auGDhcN_7Ytw;w`kPhRvd@T z2i#GlX{(4BMvm`}*gB<~I|W#)MIwFTehzCwQ@9e$ zSlzgK*&8xTvR^$FKcDB*GNJaHu3f_VZxabNoY2lmQp8|iC3s z_^RjK#kb0UG`wN!V_CL`MYAt37IAIK^Lt>AoB7!D4i<}c3Bjvf`kJI{Y(Y>PT*Hu2 zwW1qE+yaa3Hoc|3%~NF3#Y-w_ad?@^u;%QwMk%I0K87`f>5>l+`Ut9cL%Yqn-Ctv; z!J2~=daC;#5Y$^IkemLAf5c#hue=Q$>-uHOgiw#mjFEMNqxCUD$JnH>2&dPz)9+DiQ zhRl`oc-k|AR60m*S@u&X3mN!HiE4VH2j317aw%GUvWP!JOY#=;S&s7T?;6C=iTyJ0 zMf-~5%*K**W`9Ln=W{#T-FyfWaN3Q5)2{E2TH1%<{JZ;Kcl3L}^o$}Jcl>J1@>77U|9$?lg# zNf^2^dV>;mvC0j^PmVzR6#vLRfr0o5JyUJ^E77UywrrS#97@3OC674gefJK)?57C+SgEGH-~d{tfp3NTTme-lhbxc&S1K|}PNfEJeD{BvKK&O43NFO{ zPx^Fbl=`@}C;Ii5&wzjnivtd&ySua*Q>rRV=$yhh_mREv*yzXG&S9LCZ0dM zf1{z}gaqEt;wwD{XYuYz&jK;pV#TPwq$0enAz$}SVCjUYxchPG1lxy608H?>bfQ(( zHI#SL_+AkT2{1~#b1M;?T4UMYJ0kTkcQ99Ejch3yQD!7|nFu->hjq}IquuIO5=+13 zGAsAkPz1*I`u_Xa9sw}6hfDk&?1fg*&O9cjDD|3a4_G<@eVU3;mgXo`4%)3d+~mrT z^uZ1XFny717d1!HZk+GDTkNuLX`F%hDan=vrEz1bWhq2AzIh!irF>=_l!6#Bz!zUa z@!T5z#p`XYrCb}|yOGqUGIIOFWLF!HQwVvSA2p4S@zb6OOwgaD6E-~Ap$*tTB+@61opZH?<(OE@X;>Qp&%hbbx_{k^`h@VQ*aOHQ0 zJB!Xu(>~xDMKl8OQ~hK7v;f3UUe*E&U!McqTA5n$x{ zRw?vMl5mr4h$VtZMesE4!-goXAiwnaIL+!$%g0bzp!8mqS|0ISU-69aT&MqGpu*MRb3V+;mY6*< zP#hBi_Zy;Gxxm_a2TbUDxRzc%4&~$hB%l6A zaatJ=r)S^;Z(jU@%tEvOEl$(Hr%4r&&`z1PXrSU<`jsY>T(Tjl(d3LP;ZmH<;7q%M z*9#O`tctG$51k6boG+DRuT}EW)aaGD8mS(#$O|6V_UfPotiVt&URi+!f--2BZAaI> zH~AYs*9LS_*Q6nHwuZ;8lOW_P(vY8jwodZHbWp>Gf}r`}Ux_kKu7t?ut6Upg6D^ay zCf(>04~QF(o#T0Ru~8{dN}S1jFl=G7(b7K^^}Z1P#Y0z3jwr$pr$H8m)ODd)0rACP zbBS;Jc8p}iqK%Q!qCorv^rnB}CoJQT9`gb`VQO6{O}?e){@W`1vek_`pV*x@sJ7y| z$d^{nDptOm3EN)R3zT$>PI_qmf%JDNCDtMD#r_+lk3SClD^-;xVZZu>BVTs!4KIsL4-(@JvN{J|=1W z#iL95*qZXchgGWWS9inC48p~t^*}|81NmMs|X|mpc!jZnMq|oT8 zxGQIo_ISVdaTpuEg#U7)3AJQV1>w zCpGYasOny6n-lHy~T2NNsbEX zUg<{pPWicliNg_Uj4M?PP>$MMxNume319W>>@E}BZMg7c{s;PZj0lU*ajub(iap7?y)r>PTE3dRXm z0@xDCL11uifbUWynf#x8{;xk8Davm?U+0VXqehx`VY&QiL}7PAt0(3(9UB|EwMWd;!rYmYxxAdY?Q~Q;_FW z>|YjXBVdtM`z}PDKU$>b`xD~-Zjt7lmis?hq$j^E(o8q27u$~(sT9u(_KSa6q?5Qo zpV|`vi*y69NOJ*;l;n>^IssUuNq{1L#b8lil}&-5lY!DNoXgGQmtn7dBhf&;QKDt`MU7bv3jEGEJ|C$8SbzxZ$tbB zpUWYM@T!*mAq?X_ic{P_G$WKV7%Y;UJth*7-QV@rpXx8oM&@2!*No~F7}!u#;x8S`nbGA}RT z8A>`NxZNKNYxrK*PxOiYrxCyZpZJOG4*;bL08rRI!<;lO-+1tC?1ljV%0S3)f`@=5 z1p-wDI=~O4UXXwWOhDid=5qa_Gz}&D6F)IU4vKYhc5qXif6LMdCNJA+?=j4+*_e_O=_AHi7EE;KMNG;3m-^;Qo( z@=qtGGK1CnEa_r}C-MzZEeNE~G=qrF;Rm(KQ%9w0q&Po*R+9_YYE|JmH~xTc62mXtf!S*-;e>@G3Ou~+W6OPu+JAd)Bk$s6L^ z4rhahdvX%88H~kc)rBIjYdYnL$T&tR6mo|^kOPoD*(cKFE4|9W3~LanRg1i>lv9K& z=W6lV6s_ARGUdicne0RURrDQ-klWBEZeV<$t9-zpxHbb<{3J$D?Yt)UT{^7M44+R| z1xrxfk7X39H5UJ_*N%DS%8hM{6+082MpiK_U8W+HuPfD{QBf~obM?Y$SmPvE=&^y1 zIheltz+xlb+jvgAdGstes;LnESHu{h+b^A@MVV@%f&3s<*>J3P8BkcNEn}2)n)_D) z9p?p2j*wIYe0!ZR0+6G5I0d3%McC_kia0sQ}`sdV*rmPc4`?iLf+d~%fZpVtRVzOQCSF)1Rc-zD}tds3XZNTr+ejy z-mRQ&mPlXwiDgNn6`WEGv2owRJ^t5dDmvFy47lT2|6%yV_TTBJCz5$USeAwaVN3IG zlKDBqZ<0AKf%FBfUr1O8l9%6c9ikmNFE8(}gSNG-wFqFdY$gupWd}?Aoc+j>^T_R0 z`tfp8+r#C=muD{k`bqEKHp`+Se;Pl1&VdHlU5uM0@IuWKzmR!b6+p?onEb&k2=n;t zje+(@V6=<}7%dBw@1n*~G9^>TH{QAIiLyXTefxYVNqWmK)&D%Sy^?Qu>)0&eea;JW^R-L7>F_?yKY~L;mI;}oAQ>RFXcvXHzy$T$swIz6GDP+{kXf5<5 zz}w4N^ZmU@Y-2)HFve71ua#eUA~UHUp-D0hT#x$&w0H9{W5jfQS$qtJ-DHd07YjT6 zl_LXsf}^`$z?S3q9MB1bPeDDNARfUDnEuyl0H!gE0u_F>>98$h z`0%TleL%Il+yY_ilx*%q(H3KbT};0%3`C(Ih}eaaEj92n=Nkq=Uc(AeS;54{$-xTA zv*6oQE9?X46Wt}dev$d-2OI`#2@kOYnvv<(CPFGCRGDO!g_9<{p9SOvePakQf;hL|6{ggiKH|OSu#g38j3|7b$ zPw~H)FM3h61I{Hle=E3S_loJy=N%;R=xX)HYAsVVlWPu9@UG`JEEl2{xD7Vc@ZQ<# zSQw&tb9wnicbw2@s#`p4w4GCaSFfDyN~N9d$J>-u_V^Tbcosz?QXG;Rq8iJbqgE+S znCYj|{ruJuNT1B<`N@fDd!h#*AJZqh0w8^gPx6*}OrOTO1_ABvOCOLvsh-(5$L-e~ zGcc;GTKW)leFRp_*nt%@YA{1zXIVzljCt)smdYkDu3K=T=#?1Sy~I^{N7?8je2sL% zrQd6bt1~nG11{-;hZkR#vbK;HK%4(E@7_HQL?GA8SU}h^@T0cnoC@Rbb|?bo-3HJs zQSuD4JBHTD9*F~QXjFM*IH}Ke0W*Pu)Bq7wxIUYagZ`No~fOD{gmH zo|5gArCmuGvLH|x88nI}YaISYyMc)|Ih1{$n-F%=*F>ct;Ey-6TJ0|x(h|6#s`B%5 z-biap!6hhZNzusgeH%^6VMw@W6}^%#?K133@9!V;epuRCa$i|mK0nWTbw&Pck`^TZ z^8S=TI`?#0LtUI6SATp$fV<*TPNA;@H=*_@ex&$2W8unrNMu7ZT&dUh8pJQ3OHSJO z;)b0>El2&zRK+zBbVD@pgCu$9>aKr1iW~4YQG8XSTGAiCLQC+2PCx|ZND=KO$)@Xd ztdKXJF<Rc9+GbTAF)p}*RH4piD^tzE7o?cr1KY|PVqo@tkgx3&xxvt5I>0;#jV|`hoQ5HPGVo5AKG)- zAueGub4ngP51B zUg65jW*(0dx3p>(Ueu&ok%Q45Sd?fVIc!3MdUVP7!{vcTpL5G-h(ac##*cTh@Kl1)T)Ky<16iPAeMDJ~fi)@z^3FZe(x&T8oKgZca ztyPsX;Wn-c5~nz*w7H_X4$Fj@aR-+x_wMyWS69p%tTUgmsCmGM*FR!Tsi@xgvAm%gj+ROezwLTGGvM zoxOeQD7Q?sC81Q$ag*keRQ-`4XN_O`EOVy$P~M%4_b?3vF6?Ish~{Z|($?aRzdnsL zAe-0Xq)(a$O8Xn;jBxtwH28b9$c|+ivUY|B3ox$5i#rnXt$NX=LqAw)ITt};g>f+D zvQOjZqR%YjpNWy$;(7_*%u`T0Ipq&R+-@Zx^E5!|qr0f5?(|iwgBqC%nZ^+Az5Ow7 zxKKL@gag0GIDIJ{Th;2g=kU4d&5qEq542u|x^fO!#l*+F;Y~~%F6Z7#y6EtVQFQMF zKFNV&XUacT4^ykKdKr|pkI3+*miNy%4y=!bZ@$rcbF~WjldF(7&y~Li!_?ic{ODw)&~azQQZ4M* zFXa(<=_6USb)m z%Iu02`JjT0HpP8OQN}#@8}q7s4WRciWn5+Er$3qv^!n{Go#bHrf`0&OM>`t@S9`$d zPBeUr#jRB_P5reA_^HM$_wE5N+(f<=4;zGhJAkuMSc{j$W60n6p)$Mk3`e;38O=B? z#+Zn9i6K;Bw@l+LbH{#5WG1Gsi4vz-+Kw)6vEQp;)JEitb>dW4!M0GAnJ$e&!%Ty8 zLC5r5$MNT!B3>PDJY-+qi}06DiKm5r(GzZ3%`4F)v>wmsFzZolQtBo}TT?DmiXC$evCnu^o2~d`YZ_BYk8adR&%@ZF+{Ioo&|)VX)Fqc0yMi z?ybD#X<*-(?GX8Kz2w_TL4*95x{&no=3=mjD5e7}ZR5kYSyVjO>kFh)#=H!O$&gDL z{VmjiUS&P=2#(RT!b^lwuxC$mf)|Z69VRl!(RB9>-FQY;p|Jxs;URw9B5v(QijA~lBVCvA zg3)P5a!^JmuFAFTehY#R(p&w3TG~ugR?zLVnqi#X*&^~%^eH}CDt@ba_Rr7MYzOZ_ zO*-KEc0@Uq;UBnX35I%@j(7ySBJD~MVp`Nr*4a8_0m(2Yu+|7P&2Igm|RUZ z$EzvUvSWU+>SYM87pacqV9$}`%*dLvt>o^C`a-r1u(u`MB@6MapF(~MO5*g8ies$dtO=eSw))?@w?k zK1|qa&UxRvLTCl5uDV7+@Flssx|D47l+v79A9sx$$+#REArSm!6WSLeI^nGQApxZ^NQkT3c z4X5&ql~iapXP>&za=|L4eQ^YJ71dQ!LZ?a!-4$Q-0cv*XQZ`L~C!;B4BSxwc$qr`n zOwm}vMi*~y6}lW&FYzf8>YZx*-C#(C)(PM3iXbIg=caTCnYWO{`KS~@>{pSZoDCJL z=o^Q|@!ZMEncM)?BK0J~SeHQHYi_D)GQu^Bx%FiO#g?CwG!xKD2U3B*XeFSPg_+|P zdxno2s7|vLHxI9Qr1OfMzVhgrp}!6IOcOZ(WkzY0=?uMopRvi2$<5}*e!qekl^ZSD zA}6UQ2~nDyUrxwL2a%3EosJ}sCKzWu&6ExC zb;3zBYAeMW9%?J;nl$Pwsx>y$R}^c;s7J9U&q2qro-3qn_Aw_?Af}`fFHmq`W+}#Y zg?eWh>iGS8Fy`&yM+g4^YYH8j9OX_a(6$7(vQSgNThwAyDZWZ72*iBv*>Hs5FX7&m z>J*6j$evZu0*FM3Cw8DOi6^umruY*fP%yPo|!1a*+M3FI~e*<%8f^v;9LbHp$Ls7rTyOW5;7%q(Grww9iS4ZOU$c+bmB##qavL;3pd1g;K`Zex~3g% ztS3&ZTRg;2`CJxBE6w+3$+j-{J<9PB$JDBHBp1s!qF5@ZPG1l(t@}&6+~txtO7-q< zofJSE$*h+{`0#}y?bd6{9Z#Jq@_6a=Qf)b8MXe-)?|FUn5%ot;shn=UM!o(Bo(aTUr zefsL5Q)ItTLN865xG?~WTP8zW)sv{ou9cwz+ndP2u9en>)PsQ(IZeUBQeIjZ%LO9h z@5G0TQ6<{7;r$#VIU08fLG2^n!%b}qQn>cRbTdhP#R{`zQZ-@U-XD6v)|V7ejTQHk z++bKQnaIrv@m)%nN;0!1ewBiO1uI9^&~|hdtNq$}c)_<4uVog~Wl9L1LehXw6v`+< zDu*f}h~ks7q8dC#yDB1#;`CWzqufSYDk6m9rKw@b9Vk@E$i;6qoxA3X@HwMSWVWbR zLxO}+RHLk@va%oWuKZqqsEc0L>?a6%X)7e-k`Tk56t+wqzGgrlG!tt?VT`l_wSd z`WysP9g77q@4%Ffil`DTRKho5SXIBMiI}!W`t7@0C-(x|JQy);YHQeS_Dshv9Bk&? zpc*`MMCy9Nua30_9QV?n1diYHk!ElNBr z-M)}FYwfpXvpIS}meqO$sm*cJVGX}PeSrG`DldD;);vM%7xm)WwB$)kklZvu;Lniw ziP{D@v9*Pumc+3Gr}*Sxcfwf#s3vhlehIp`FZ4{4lN8W9Y#xw@Bf8I5q~?^5 zM*%vFHV{&wt5XooB+c(n%5+w%bXHs8$%1Qd(lXwBa~6{b@pR$S6sSZ)eL!46D01jx zh&ac%u2(e=vgT@bciFe$o;336JGgp<^IrMvWj)Pd9MU<(aUtZwb^AN9tFbbiObxc@ zMEnS^%%QFg>oQ|`ponmOV0-B-`KV~OrhV~k;%nml5YtZo-D>@AG_~D}hkkQ=Bv{O< zPh{M&@w|U#5t6d(Flea^57MmcP-lMvp=C(7Z%DbFUR7lMdn~KQ^!H(|vs)Gn&_sNd zqnuNa%2Kg31BZZ$}Y1 zDyp^jb2XJkr{@JC+t>QMy@;Zi&+0gV)rt-BuzjeEg7VqH(xbPTm}iIRuv~oTvc=&J z9=KP>J(upC8A7sQtOBO*RmH{xOFoOCz_A>=r|z6yq@ zOq_;r!`8G>3L!9qK@js4?>SM>|@hm zdKUGUTo>?HJ;h7A<{n)e^y6T!yqo^gCW(9_rJ{N20o?8{HL-0wDU9P0=anWswT@^D ziV=lSQ3g0hEJMn0Y@HXr)E_|cC0KCkOqA+W6v`X&+kK+8#x@5||LWNCv2#L1o@VxAjz)3??*Qfn+ zUQUQrgL@X$vFmi2q;JM`8TECESu+}3|Zz1%|_v-Mn|$H*@y0t#g?6-X)mKWR5f*e?qi1S z6a&5^H({ToDAqO?l;Oi5hIy|vH|U5`ZHhMsufXzcYb9XxhPbza*?_~0HOBfgyoDIz z2Sxt&Dff?T6bw@!3TeAh>ZP*Jq!)>c0YW+NvYJS@47{kMaxAIfy5ulN<@%z&t)-j{ zY9r8vuE{l}B3Y`XG@vEPz@#MVh0x%qMmRCHi_Q;mx#aOD#%su`VB&7|@E0udtKs(- zDs`78(}$TJu@cH?zh!onDb=#nssa9_ROk5KFer1RWtT94laR7hlipmZryB--x7Sll|59z!PSr%dXarCfVU@`RgGw1hc+Hxyn#D|P- zU+Eirl!u{>wv>yX%=gg{{-u``{60-gHrHl}GF@H*|nJbptRl?3;` z9QaUBBT8OQgotgb^Scr6;fC$4-P>Oq6Y9@ErKmk6U-4&5MH9k=J~|Ha&qjaIp7Kvc z-_X?E!&rkUdJl6?*vAeB>GJ{u#@`Z2mj%_u+h-gTN~3}&)@i%Uyt)rFqoUa7Qbk>nvi5^0IvhedfdAY*m+rjN>;{ z-iXwMPB&afr%=+5T3p070@08&p0SeXp-0FsXu!M=s@l^HZ~?vQ6dtM}GC9?jaAj&V zu$rUcNe+@~Ws<`DZ2M`RO@+FAF3#@n-YTF#Et;Kw%nEIdfG&O8*W{Cla5S;(++=_oxE?h3NM|~kG42o5XFL`d|ySS@Y?7|_kJFIkW=piMN+iKrQsIUIL+;>qpH4 zEhiVK2f7TX5Ha7G*8?|h+LHla{|{qlp%qutb?Xp3G){1LcXxMphsNDCNYKXJ-8HyF z@DA?o?iL_8K@M;Ja{=ENd+#e)yK1ef`OHZ%Sn6Ht`OrDlMKpCcG&QyLX}@j&rBR&h zM7UXbxPYIUqjFU293L!SbAq23=w|%1PAOVK->CvQ$V!J=qZqtIZ^<*_~q`ADh z(lSHfzz>gftv5_&dG9@Sf;{hQnyso!X3@ax%7PWD`9=Re{>6z72hMUD6?vGE3*KNQ znr>gTUJP)&>Wcq0eSkGcWurKJqOkpkjpICw<#KEq(n71vqVj~KW__rbt24!n7JRFd z9wo(iqKUq7rpD2(vA0G)0Vu!0XtMf1GZj;;?TnopoZVGAcvMC$}dy(gbFQ2*zNGg~W8-w(us5q;0)@HG-ypkhW+I+wU zK1OJPFG-OJ3tuRt!rkt z>X)EMy0)Ib#os|&RJl6&*QOm;1<3b6#oz6gJv|>GzbQSF22jd@MmUE<#WgO5k#Gfy zfoY>)lg_eE68tDC3ZOq7(={pyiL@p&r~)R@;aMAKVhjPoae#z>zn8Y8*B|Nw$YHVq z&FkpVi%d*-z~@1z>|eB;hl4g^0nw(+-uez8ell+g7{?<@l5}FGJrP$OsB8*?viLTKGTfkO(0qOQXe1hl{=1KygvP)w zMHEjmjZF!)<#uLQH>PF2db6b%bb;R9a$PuyUbJdNVT~0X(fYV2JYe$k1EoKm5#eEx z!NFTd@h?BJGN)gPxlE3#H?dPDOdQ#9>I;LDgX*pL`=rpFK^dU%r4Skp!W^CD z0AiXMo*%hzK2P8YA}o>osLYh$fEZb313)7v0nttFGf{)6S>2Z|QRWO3>@g1fNYgyu z_bq$y;^RZ&w+#x+3iN9L3x{2AH2iDUvn}st)7n zEKj*9X>!qYT`ozv`RbCoIKJKwS}f9=!M;+Io!*%NxNjdXx`pnN~mTueE%Zh(`YnyZm`!HBe+%V6^9}f!O5e?jjyi0IaEL*#=#yRYXyp(g;@9qN9Xj7Z!zlI zX={0(LCLqJuls0N z@M3$i=+C@Ms`Ahp9MX5N!g`g(JdciWvAgrfSksfqJF=QcxJe&5P+e{*x>fQ06vD}{ zL_~YkP75iIVu;L417aOIoY?)4ws!gWB>Xcr8^?lxuLe0Q!pK+$)y_X8if7vg%C}`C zd7)`~JwYRt8$@!lA_Y3?Sf}U}@-txZNV2%M>hut6S&@?^_JdxH%vl9D@yl#)Pvu}P~>SgA%95c4NKIc$iR20Z8qPpe5(LQH1hN4cgj`dd&j?VzT5UgA7rwS7y`= zQnG}8P8_DPIz0_91&w98y&MdrVeagHmZ7l9KkyPOin3++4Wry=*vcn78rN(Z*R$3f z%Khhe+g)`t@=&;}OvGRVJKnfx51bYVC;!knRhJktGO1TZ9O0TRalPEa-9%NKM)luS z5aSEcO2z(9DqL?=JPl~CMde;7TTRKgdyzkn0S*rsS#%?tK(nuwnuHRD5z(Qnr)KP< zSEF#l#Bu7ezx~B+*(NkBaP({#Eapfs5{_F;)Xaql?Z%pK_hxkEY6jNhs2)i41{?p@ zya|S5#TvfG{PGxE{vq4FBKZT7M+d8}XffNC^T6WSbs~c`7L_Fl3N>tYkqa|P<1M}$< zCG!8+rT?Sl7Bru}qidkN3uam*)d|CYW(Z?QYf+HP5~V2#FSUo3QrF>H8fyF2|bq@{W@+j0I~ll&?QXmdzVc%*nVG zerUI*<%+HKq`W|5)vi+|lR4E+YjLjh#-<&&D-UoT~Z=KN6{ z%yem3G#QAfCShuWsQM6KyAE;2yfG=wkOQ=v5SVCzZ+v~rBi;T%^BgIO;|_C5B?U4? zTN0LN0#PMJ5vEiiA(mp+nfLXpwl!6=2H-3DD%KUTSOpix7m)b8l}?Q$!`IpfQFipC zls68B&!^buJKYWsybr63cchxOHg{IWC_jS=9F&R;TP=gLDzjYew86|&38fe%ekX)9 z9ZHd7fLxn*!;^sd_~hAZkdxw!)7E4~MpIH|{iF!TrfNuqhB)0&Q(zlG-*3X6AuM7P zJRA#W6uo^hST@<{ffjMF z_18&?GqrZ-#PTmMe7#p~$)j%Q(EO$7;GX8q<3RzMeM%1SS0zPW$xfa$$4O03<;5yZ zCkHIo!YTl?0X4bo$EFcF4KQ#khog`ml@fX1#u)-@8_dwuGY(s9i++t!p+eE8HOgs)*p zOyv>%&^<-4sqdGStA)pN=efG~%&A;QY|#7KTehO_md&-F6jSB3$`hD-ow9?L(YY<{ zgf;T;Yp8`#9tU8olIpfsVpt49iyc{rbsS%vRfQ+(j@tQ@V&tWdEoK`q$Dwu-g*}iS z9RDtkoN$_HkFhssHS5)-%X{pdzj5rTM|P`tMK$X}oQE5q63!k^{v+0jvR3?{CZv0s zi1Y`Cz&Hha%B@#km}ZIO*DG&Gc^$JR&s={`dn;9j>tuad7HhIY@;lc`pxe%mJo>_2wcGqTmUnAj zBF>f+35{pRSIIKl#lL)xjkcS5JKN#4)8RGf%}?cBlj%&j!o@K#4OrxfJZ;$?i{q~~ z!ZCiV2E+@+W~5N`+)#*(WPSbKM@`%Bj>+Z#PXlFR;C@G&db(axq&;acSwh*-XV6f+ zZ%DkVdxi^^_S}H0dA6jR6xU5W2xW<4pX;37( zICZ3&_-MFZsftP7OnFSL)K!JWb#^2|$Lr<0eb24oiWcHuM!h+TSHSmz?{q5pp>N+Q zcp-aU5&s*Hd7U$gwm#;PN2LF8WB3R8RjcbMp^IR=l~&U;M8OR!Kz&g^N7Rhe*P98l zl1{a;f+P`)zwl5^JNL*sS=^55k%@vJoAG>A8EmxQi$b6n^y6-1JMy)hJjlAaSz5aM zgjo+psh7~12^o-+sDU3~x6v?PYqE9kBdg^o&{^LR{cMVTU8gQ1eZ^My8QgXXO!)5j z)t-%E53?f(PT1sl6#FZ9#VkGAFgToG7>*Pp2w4CCCIs<-lc&eFr!Fd4pY`8cox^~G zbQEiqxRgxIYDvt!S7gtFXKy_XO7BLEwk~g68b4G$#jt;&Xoz_#R#Y!RH=3)j(6`%xvzC z?z-3*3`Qel4bp>?m)t=b9NwF#7+E2(0I`!gQ*C}b+|-?rr;17Mh_sIDcy*OKai21p zQcW5<2I-$j^(coZo|g>gKOYzcOw#XYC0n#zLrVGVo1)1NH;yr}DQoh-?No2;%6x85 zexzACL$Z9_9x+*Z(YOvdi?uv+sEKu-9+L*rh{rv#h}9Zm1!-k#W&`GC=w=wuMQe>0 zBx+f1)kCXqbQ$PIIbbIKx~~&owVY{Fbw(o=i>Y4&>N#=wjE^UeEqpkkS|Y>&E3qnW zmB?awHtJqA4qw};tt65?mEryMWQM(xAtO4|8%fL_uT0D?~w#ot}`(^1$B+!`?zU z=k26eO5{g)$7QaGSlABjCuN5gYYv=NAsr4DyAe#Vru(qK+fFjhEx6vBv}szXE7!thfyh4fZ8?VAd>C@pb+K$v-C=x3q8 zhLD})Fo{Dy7E3)_T!#XN@J|?`YaKeQIf(sMkGSId!eS_uUx;`=&M`sOALo)XS7n}R zxE=orn|UWC(SSZHb(l*{ZCdQZAY{+|-Dsuu_5T-kk*cT0ZDHIGAa~jN;#trNtDJYE z`gSS6n0dI4q<=c)?JEGi3H-WoKIu&PvnR{H0{DyJ-Y?o^PQVG2gZ0PDU!o6El-ae3 z>nHoqwz_;^e`t(pBJ-hpjt;#Z>7I0~LZ2Arf;=A~>T`bu`fE;Z-K{Fgj53#NY7eIqaM=)=93gJRxRgZ2X2KX5O?W@v;`cQ)->;5%`XDA+bkleW&P#6L05fA^)*jF z)+3nlr#LtC39Jj2n8UnNh<<-Am@Aj1kyRv9?Du+tmRKTIG2N7m;PNG(K#e; z5fw$bSI{Pw(!P~+>EFLcYvo_XLzY5rZOaY3q+Jm#O#4GH>>VWuXcZULKe{1q_)h-$ z{EEo6vA%9LH$fXGw=^Nneh*FObM4BnAR)A8$ZIH84iX<1@{An-Ya9PI6$oHRweS2q zM&Ej-Bk=xjiJs_V;fwny8hwAiW(+{p|1gVS-5WU%hmG!|D%o2>pTVKYxa;k!YpzTKnRgXp z9AW4XG5%-{1tti7)(7CJSJxct%4Ve^+_=a9!yh7!4kWzW=xs}Y6*WI}Pqu^EUJGM1 ztt(iy7>I7g0)}9@IsrCDFK)DK6rrxy=htS8*{Log)->7J$d;vGD%C>l*u3%LL9nw* zw4xYgLA*IJ-U9kQFTV#f->jq!I%I{X^;?=(S9Ra zAXuP9S6UD7`AB=a3m6)}pkm^!&-JMf1hyi6#AxU!kI6dgYSGyk7^p+J&4}Quay0ud z!|km;uhBo`-I|hdKB4@w0OfeVB>!jz)!?f&lRl9d(}8O|vNCnW1l@|l3Op4oAl7j3 z{YrWq%NJlq{sEL> zb836aq?PgvVJUtu5HKsIRJ6JL_{q-)>Xyx`WThfuCShionx!_Q5*6@`C4f5ER)vwP z{F6tMLNxIFS`|tP8|olY)oNab_PypF zE!9CSZwh-7zl~BGbgCm{t5f-?Y;gp<3rNyj7o=#K*!=gI!716rsq~8D#WB9?XG7Nh z4v^^-47N=vn(hePauUYYhH}jvq6K~#h2&=)o$BR`^w*~i>}{#=G+7lGwTJwMcROE) zB`YTBzON+|EKl;Rxpwvt2#7`_Q2)7?#j8n6G+|AUivn_|=V zAE*6`63p5-ha1eK+YQKCj{=J{XC>mz1q(?Xh6}H4 zqmFG5onmyMpc*>ejn0`xyD&|9Da7Z1KG$+(hptcA@T)08PKqgs<>NHp6m#k5UhK8)kD<*)IpE0X#q=RNhM$PLC=J|d zRf0+9C&nhRD|&GE5-4FD z0MfG|9HZ>6pLL7-#^ukOjq{*u8;yIQJ$0|XA#57=K_L8Y*v^M`Y}!`9>|6yJQsv0671VM>rGw+deXdaWp0TW>j6GE87xY}=q_9&q52Bh&oC9{ z*-y|+5(J0dao+G%CXD+A1GXfV!xFlOVv}$*4x(%eq5KKG9oob8b}PR^)ws5;>@N?_ zxR}{}(4%IAk;`i4f-}J{48Q!}5D-Bjl!iSKt-lrg;*dP5$reZoEutmJ%6f`x*M<+G zZeJq@k$hia|7%hvFNtCbKi2g|#Q&}RX8#8=E?^^g>1jN@uQj#HIIObUw^{_(*T=YD zh%R~P{d53ya1!8Ht0p#a1c2zflIz%MxJH)6QB=e~-jD({@mAVM;f|7&YmDSDxX5s7 z+TFhph2?O^*zY_?rR@Ydd{Bb!Mjr1sk6X2_ibVbw_dh@7(Mj3xQHVsjQ0+5bBVD!PAW3MDe*CrJJMiq=d zk%>M%Ym=sK2Gr&I!$clHvZnXifzaxR$7zC&V+LZ3C8+N@1X$Hs-@Y1)akr$)j3mrx z>*LJIvjq|C6ghWL4NNYOqA3~e#2!RbSeZaDvww^f0{W%|G1Pj1PmyVO z#MrQJVM7FoFj4mjQ)N2x@bef`jIeh5GC-;iEu_d&oU`9~Km41Bsw2p}?&XTSuTg`7 z)ht9Z$}oJ+AD(Jk#}YnHBlJU>Jpuc>pj)uy^W>ie4e32$7zhe|aEOC*Xi z41=Syas@6Y87WZN@h0<-qq>^at-fI$Zr&O{?7$&}5K1mG4mM;?k=Kql-07>9N2Zn% zOe+p&pT!?bdQ=UXfv6#8+yvNf8B<+w_sNNiqWmZ-rU?wrs%N(uyo+}5{6DS)xl;~e z^EetY7wIc1Mspw{ZKqHE{Pn}wgs{mAR3<(?P1!bpR;tzg@K)=eD zNRm1CBuo4;d!uSul;OeuVcT4#-O)V5!kvs@w zLT`?9yExxGcl80+sGUr5k`(gjpe!uXgD*tq{h@wrEu7&|AG?(yB~+d{1bR&sv{WbW zWc9cFrM4nW^HjSs!|A37@$-q4!n4&y{z8cSRVeS9$r?IN$DVH(Z%`J&{1!(a*%h^f znnnwaO(gwWZv3qu@0E{1*LWonoQM(z6bq~%4b*FRO;^~6@S-7T#r*Hkyv8uGCuvG7 zdEvYS)?DbellKo5m0dwZAr7$8w&niq@N_(2s!rSxrpGw#2Y62D;Fax44)jLX0W+XV zNRjeIb?K&}#+5C>i`ko;i~Y;3<92KG$Yr_Zy+`hDp{=YV(S~|QT8s1*tP5&SrSw%< zkmD*1+!Vsr%hR;5D(j0x+e0lJMOOLSJEia6htIFNk@s>zZ+UP-(Cb}(xfPs8w@)iM zBR?bPW=CX44lWU^lDEGSz@ptS_3doIdA?{VRkarQbPaYaiTrVIomyF7AW_s=RrC%o zSyyFOrup{mxvMHwch!vkD2xmDiNfoL%dihT(2BDaerqxGOqgy8 zSS9TB{GErN+}=Cd{tuwe2_ldZ-? zd(lc#BSl=7pTxo!#i|y7vt*3ts=%kyDu}!E<^((@-Gr-sBP!e18`tKA0KfRjwYSt+ zohZ?rp*safbV|n!$tuwoc(IY`VQ^4ysvioo7D=Y$V&`3z6HIXnf92S>`E)P!B^8Ce z($qduY!nX(%eqcocyWlwS0;GM_DTj(u)Oalhu2RS$Hi?2#LfJ^Gj^{O7^a!+CtP`J zX4+emIOY%Yb9!iW4`Bh~nxd6C<v}BFTB3tZw3@r3 zU%OV1gXn#&@EM!G>t`9+_h{l7IKFpEelL2JTU||mwOu_J3jP#G16Yjg_9kI<>q$8UoSo#Fe&b?B2@sH#?P2}fsap6|z?K(xH%{e_H>r-L~U|1@)lUP|Q_LE##>aQab6nN$T z0(GoD<650GF;{cT1GC8RouqlRWp)WDvr5dFs=gfM`&mXzkeK&L2(|dhBKh*b0nj3U zDK|{_;0;<^ELivmdq}q-E8zx9L|;YIQ#Z-?;QxYYWNx_GMo(hq^|(@L$s&+ z7in=4@$UoDqMu=1-^saNsi5i7F4hp!tI2s06*%i4C9zZZ1N}!hm8uLT60Eu5m)2#e zP0eWrufN6Ui3A%Eu&%YukXQnv5mH^9&=Gm*ag`9b9#X8yb=oLkb;2+_w6VLD9~4&2 zNk+u8eiAOSwEX~&_I?%3tT`=hEUKHa zL6kd3rpiXPJ5D=Ieo-wpl$~tWX89YD6_KHlz7TPJoiEIB3Bi_fE>~yxFaA_Dz~}C5 zW*l}X2W_d8aG-`DNQ1|V#ZhfWf!40e+BHMYTT$Z*fMBs>F6kbSJ}%I-8+pBVv3r1T zAk32`;6%~9tSkl1^=dNeQ`px)FZ&?uUSO+fZO~|gc93D$ZcVA@Fgwb2S>5^IqMaf3 zmpE<0%_PM$;GrHeE>^_WifNK!o)^@Chd(@2_3QT{B0*ws`uJ890t~_r-LFLDd!6S^ zh8$lHY^^P_Gwb*J2fRaGFqLW|Uu=-#=x%8@mA>Ja#Z2@!q@_^R44cfcPw8+>>0}&v zA!Jz`^}%lf9Zc_#FJ9IPan7f4&Z)7_(^;440gUvUvL!CwE3f9r#)x54vm;&#Pu+iH zs&=lNJpxRr{Kig*VY%Zh@ZeL8m(Koc$e(LP?6nX+eWJ(z9~<(2&JGh=@V-fwIPX2= z7ioJ%O*;TfV7UNX$pJ3(kf_Xu(XX3~uBP(Y2eaxMU*s!;?e2Q&rgqeM)YJhso%SY? z(hkzc`(FuCvMZe3PLC&TgM6b&1E&YBGIoL~$zRsnejvSK9k znHllc8%jdcUet-2l&|NPG@Vlb5Y8yuRJItvNMVp_+h*w+Am(xka(VMQs8r5yta74$&!G50k>obBJXW+#9M#9xR0JhYW(wi)GLkgH9ouQyh zTT}8(L*2+Sq`0&W_|OxjF~=2{)FuvB0HQ|gkF4PCE>ul*Ou9ZHT%^ZI095DkHg}^O zngXv5!=bu%#smydjg~=C*rnDqF0!L}r|Kp@Q~XUXsu9jr?`aj_DHgUcMo#tT8a+>` zpw^&VS9sRtcb;yu#TXtvorf+v-CbcI`NjXlj2?!@F=Ttmi`_yDZak?^?89p8jfyN z!puaoW3T3DjLYzRA|$*FZDu7#}nNApUKY$az-p-iT4tJ;EqjzpP`y`#4u2V>9>g+&YC>qAZt5x06sG)7ki=*RXgOk=K|Blwhaeq0N}xy-=e)zB7{ zHn38c8`;;nTL4fu3S$juif!XCkZo=Pow!EeUNFMBc1{OmWOKf56Q%w);=iksg`?i95q zZY>DFH0AFxfAktQwB4wbFe#)+{9~?%K}Z`fpEX;&~4N>QoL^6 z{;)sWsC`Fg09S7=jt1633(uw_)%vPb#n9V{Oxis>{-N4FE-K&cs`xAW2F~ftulrs3 zq02&}Kj%HK3_z!eNUZ52l^D^NNwkqQbiwtvy~JW-)@dv`J4}rSN5an}{`7Y(G}yEKif6T#=)ccL{51!GZZJ;-j}&odwbV807h)UgO8#WiFWNHN z)D%Qmz$XH*x(GLB&sG|W>NkEGxcA|!afDS#qbtH!s^7~(Nj**Dn5Sm*q2Apik5T2v z-%CtvzRg=~tG!R&$Um%rK^ z?Wm;qF-5U9VymX7c$iujwVAQaCyoYHY3piJB%NcMx6GB8n>UW*OKuq7qS{a-kULk# zYnz{CALd`9fqN8d}WZ`2DQ5yuGkkLy=408eHTY1%m#*<%zK4 z0FLEKmmUqtmzGl9{b($f^*N^${nM2kTLV&6gWJuB0wwu%@e|w><0>vP>zPm2TqYqn zLSj!oS(qTjVN4u4O=IsR9X_`42%5wqXYR2iz16h~TE%*1?o}UpHS%m)#Reayb9^k8 zcw~N`u}#C;dlvEa#_MOW8R{BWqyy@Cn!cqkzFfB1M%bQEpGs~!bF^p1tk5pux;p02 z8UGH|*NQH*h0-D%Xdzr0i_7SE;_jj*F0&D` zMk%9F%sV!=U6_Dm=5PGCtfQY0p&48`n6GP*&Kdos75J=XTHoNzSA1GY zYMZIVhE#lNgDMZ)n+uDi`nAGu>#iNC_UCa6G(G7pq(}KS@Y7V0Egeqe{j^upqOhL z_+ix?K1fq_|4+}R$%|)Z5C7>CA=dxcru{RAnb3;x!COFm7tmXj9Zg(5)0g{9Zmo;I z)?dG;??U|;FQT0qL(a!yeO6NvQzUMfk%DpFf?txYU`@jiUtE%mDV02%I2^Hy_PLmW zVfwG&vB-&^|0{y*(M8P#M?zfOblmA&>&@nxx1)tWo1?{j$vgiYAmH0e6wptWs7mdY zghMc&_L~7~0%47EGX^a{>d^{~oyFy+F zP~^f#!OrGG(Vn+F(3k{$#sHZRhGL#MD- zs$Jxtb)a-KT%8}#O%4<-MmXv?nLmR5CPT^^sLsHgk>ce1aQZz8;wiEs*gPbmSX68J z3XCe*t=!ydlj-HdUQg(rd}g@QYjs3d83^7}wKLY{W1|0TgFT8wJyJ#6KNeFnU=F~V z2vTyZt)X>>z{7!Z7mqP#GdrD=AX|eu(tGNl?q}2A2v8uDMUDX=ca?zX#pf9G=c)lw zWqUJgtLW~)zv^&yYuZeOBY;2xz@I7z%7BL1&|sUvY{~iY-1{obF>+Piv=1xGp_=MU zqcXag^S-ZEz_yd`QJbRM)_YfvIGD{I%}?M>=_Vf8hdWw4&KT0ql$=W#N`IS+7X>Tr zVOPb_v4kHn4LtjAd^Hrb#KrVCjyS?(r+Z0PI+q7&l_fcLGBDnLAx+5Ga?(fHy z-;r}B)x;Bux!T=xRbufdf8H3EJ{4&wu>0cM=T&NwZywx5gB1h$p4Mhwh@-0BD?hBR zi*eKUi3>FNyB&Jrm{5w6V}2C9NjK%j=G z5Wc|ljW>GLqblKwzg@GNZ4GY&C;L-*H ze2^-)WhHIv3yoXlKK{LF>*AZunx8rwRFR$t_>oan6Y&Vu^NQq~SWwtSXO}iFnMhcd zBUX;jI>lqRFZ`h{jEH<>H~Nb~n0aWoPQ43Ex@iP3y$hwabCLM@#u^1qq2K4cO=5o6 z{*?|ttb#`jwP8w0Y-EfAezW!Y4D8`rT~e^Vk80wWm69o&3uRilSH|Z5Fl3gDN$N@% zU2AKJS;YmFwTZK%b)5_+4Hd{cq zE5I@7qVGNzg`le>Q2mMVvbj6>k|lYqqkqOtvZV7bq^j7AyE%I*Zt0kT{UrrM9CRc- zw3p(Cy5qbL`5GNGN@Cvg+~EiTdh`W$##?-Q^LobdpRCHg6v8Y}rxtr9kG8sm{7zb&wb9WQ9iuui|>5c4}x&@Se8f}lmr z?wYJ6XPy#2LlyrR;$`Fp$-7 zrHGX~KWXty<&$fxeZ!^j^KMfViJs>^PhwpwPWIw^B2za|JDVu#f6422Q4@xC{GtHy z>tK+y&=mbKcuK|ZGuHE{%}tvXz}8HPaKS~VectJ_ySSE#4M~^+ zzSkHX2;qGLW2{=DXuiTWr;N}!u;bEAy#d-*e*3wpAXZ0mH$16i zs%tZHg4Q#5Ue-hhV!DB-_ zlU3W%qSubVXKMg&ot%(=Id#K%6KR5ae_{IX9EYUUK>P^y)2EpaH1&URb!Y#Fr8aBm zY2j&LZ@`M89XCl=*^3RRR)75x2+|uH&}2l92nn(HEUmIf&J!AF76gWhOlvW$v+2@v zKl%BCN$}V#qhbC4`ASNshYfv=USX$z)7HG3XT)>uudijE(EIZp@+T4BF(=`O0rbFf zexmS@qJ~{)Q!C}dqU(y@D$=2@a&zu%uG9_S(cvergiOm+!Y=418@i?;{ zK*lY5)?~ws@3@BNfRKyAG9)fP81J;MBQ&zzbD8Vq6vV7FHfQRRy>ncX<%u>mzh~W) zVDz=sO%NPoW|Rk8hJBh6da^C-RM%=GS_XF}98kcBfkZ(`;l>xCsP%{_eeC@5?NUk8 zL`Oah_7yqMLye&Wb?i2a+-`{Xi1Xk00Fo7rlO(7ERc zS3zu2YJdri2KnpiiB6H9tO{h=@hKr8=>cB{f61bv^Ag5I=F&LzR9 zAX6X7;`kaW=P_pH!k5JDQN+a2L7y8;l>XCDO%Yq={ts_k*W0X1)*ntcvpvfb2p;b7 z)EAA8kVSPCE-LX*qrDx}R;qpG8dGN8k3`6N{n9U-bu{x2tP*q)Gxg!w7@mnCOF47z zk`h{7Xqzq_9sS!2h~0fL?l#+*ja`m&!{VZiDm!?^rZ+VKn}H7=Ukm+_H?h9RE9eiw z0{+fHgSR_Q!iQ@jPuoz2h;~5BDRC7Q32rUEENz1opJG>-FMe2fxOvPBpG3Rud4)_hGIv(KWly3m z>a}^vNHS|p0tD8FXvr!wToE}n^l$b5i60WJ30e9q(<3Dwa^zUR+3Vk@h52P`qrE=3 zTF{@&iZwLDH4v_9-jD#MDjNl69jrp2)P9$u2H!H>sKtUpYsg`w*&82kiJ98 zp~=Yp0Yv6JKjl=^Gt{g4{f={2csAx-6{lXFU-zg2uw6n(Hp(TaDDhM@czB~r z+fjv~v?x<3qf7OS8%iKGIhQ2bw(koeb3!Jk*Xm7{Ap@C>ncH`T6G4Va@?tZUAy3NB z!h)$ql~o!=lT&w2YXqHFPmf4ka7haJdfzUTRdgsUsW}GJV>1FAM3+E?G>7P-{PUFG zvktCu!wqkrri1-O^Wn9h)#*+u1G2IM&1iMJWZ*dEPPZSuVVuXJAOOz#=-N89%%pU8V0H~paPzG4~u@3(QCjG3vD(;deQ1aPX0FT34|!{7W1gO`itK{}LK zU(SKEmTqH6a2fXX)`L=x=^=*eTiBb_z14LV;=Cv<%BV5m40@spY z(5O;dZC7_%#wtT!)-4{ZAXkL`+mK@vHsD%6RIF3~tBUpi5(Cxk|1Zlr03n1azr^fN zPBVaX7vWGYb=QPEzy3IS4%Q-&ujxxvV-UL0Gmjsqed0*PiK|fM$$3A!Cfr0*qwB-( z_M_~hPW~hR_v{kclj9uAp*5_g${Dp3<?zgQ;Lz&;4%u$jl-+;RfDD$C!^(l>u~w!r7+R+h0_ivSiAAl zmy)E&K`smqsV6vWV{AuQ-G|c_Qxs1e?MPs`dG#f5S(2h{%9tkw;p^$P^jbrV$++a( z5Y9SR2PSi$v0UVJjvos_4EL2Z?6>eC3}y5pJDQ>9TVLsbwDIC#FJ=sV-E3!LRjwOg zWH?ULIfa|ERbQaB02I+@^#sfuTMT94_<{#qp-L)qLkwmq<%ZIc1-p~B(e0m;1(FRj zl!fJnd(a{0=|iMqMk<24--%iGS2<4I8*jGw-jD%?{SA}bUqL%~>S~U+5vW(mBHNDM zEvlu*o3B)!YYBDs>r+?ju^d&cX5hjA=HL;vqb92%$`99ymB>=(W__h-${|-WeS^?# zL*hzsmswqn1wsr2XBa$)~MB)#yDcuD$>uIwa6oBv2Et!}Cm#@>*$r*3O- zlJrI4S$ptd6u06}5kIJ7+aN@iaO3c~EoSTExEuUjgvZ)CZ>NZAgmGWyU-Gp}Od9AH z(hEnYP8qg!Kk+$k4R;j{7G%1l+12Oj&@uw5aa+(2nXvhp4Q5!~BS@@Qd}C2tSJ?le zB5#6Oy$^+8yV$mvFXmDW>nHK~Mvd*k6|VT+0apE-X`UpdQ6EV60Y#36 zz%0b$*Jn94J?Nb84)`SM%#yl7ocwH)e4h8S?9?EhZnw3Sm7i{dFj!+zLBc%Gxn2oX zv}uv}j5Yl5?|>O80layW3Ntbx3PG|h1-h&kuy?Ww2Qnc6sBCrCsl9SycOkS$zT*fyjgQ4x!?s2&|Z3#(SDOu`?N@3U7q*X*5yC#Ko#M&n?uq^O0%t6)%Lx+V}Y0sege?Q32cqK*`-#(P1iN2q*l@&*Nhs*J>Z>@?loGP z=q|E^Rab5(Ea5%r*$AtC<=N6%o}kw*@?vHBu$bGrrcUU@))Z{k8|)4BV5 zGbd@(d(Vc^JM#3Pss)9KJ;mG!)I^n~nkM0}h=1f}!)N}F(FN4I4&VQ{AkqKzg8Uy8 z-IN`gFb4mZWGG#+nx*MT^$NH`4AhE3TRCc|=@yYM4Ygft@Ny2vXCh6L2gNr`wDJv? zJ;)dN(e9}k>ERa}0;8)xJ^)?b`=c)pkEgr=Y#cbGp+|PLsVfYrS6^kwv;@8CRn!va za2d|j{tyD8zjr29cPbFhMzJGjAvo)mCn+-oH)rZLDz~{U$ww-zaaz@MwfATz?Qj{SoT?y>-}1e3UBy&GO~Fc}F+VUKMDj)utOS zp0tsn@TdlWx|FEpkS0Mb`THkR(*lWK=5EVj2sx*zezt+-LZb+S@5g<~zC2!U3C+;H z({R)o!*orkh>fMrm&$El%KK$A_-noO&=Fvi=SaMqka$e3g5LJT2QjiQNQ3tchNkJ| zlziSua&$?V`<5uCf1XlEaPDx@i&#PcbYZzgs^}g>t}yL<`&Uuf!d*LBKz4~mQATW+ zQ1|1tHCAClL0i+@1te(Lq6JK14dVLK2Ut7wGTR_M=d*wLT*5zR${0V+8S{VSda(WL z8T*(TI4`TByeVvH)|Kni%iyVqOixFx&bnrYh-6JBQaUl;R;Fghry7|YZ&0V~{u;vZ z*fa;KKojB+(ij492t7?)T5cU&2UI=`!oP0iC#+T_v9_|5on z?Fwt9fXXn5OjdddxXgjrgeJt|?0NnLrzLnMnZ(e~>bKQAV^y8Mgo5zJ0jMDKh{UE; z+8x=YWX+p`XfgyUJ-hVXJxY5|?&f7!8 zD-|v3gI5&q!)j2~n*xfNe`}O@~!gh1j*k1hPa?VyZzSkCG z8EOUs&zEwVlBi5jtxW4>SkChDRf{ywpXEVK>^5&U6q@6rvFooe-9a})f<0fDO$AK3 zmX2B(-8(i;@t5pBhmbxZfWkY6iJ6*CUKi1|iv}kqJ?2o^#J+uNuO-v=$TU29n=ELo zMa@-YkP+{3@+e)fRA$1J&y4ym+q~c8F@A;P@1}=|g_4h@eAvwv={Tj-fQLOZSd1<} zAPz}M7!Zig8G{;buS}q^{#Wz{Tds6}Hom+4mtTqB&UvKZGqD8v-Nptaj**yg+8ioT zHLW+-C7uG*B*1le|9MjIkQ0OCX@*d{aF(&C$lWnF?y&JtfMs#gIkENRFDqJU+eXZrlplXhH`7x%1apAJ|t_`9#C!Ebs11^6Tl+ zw%&^W%}zT%o1f1WVkzM>r=OIy=1Q_&-W;VJWcL5~(082YnF(J$eR};E0{)jb75l%g zxkj~h4Los-H)xSM>1M&d>Llv)uZ7Zxq+9K3QU^1WTy`kCJiv3yV^(wFX`^$6l`scn2#9)@6QjAsP zaQ9?Zmii0~g|psh08ybaO1P+m#0*-g19O0tW@CxjoM+=GJDt_R*r^2wng|*&epEEZ zz-qhK_$O6;8zDl`Ol5g04`eo<_W_bOv%Pyz;F{?#dn(Yk1Jtwl#6w*4PB<_o%U6oA z9NJi^B3Nnm(tzNx7Rp+$D69X%tLL9BnWUd=wUv{hc6n!IWe?zNp3s9E87EEhyDITI zGMaDN?2dU?!i1sEvp#~y^!A&mmd|sMm`1qb;6GD)#0WDM5GGHDsur|le3J%{N*{687l$bwtP}pZbub={NvV9UkLj z(xb~6k8r_5vUW-25qJzSj%>r0 z+3UVAsprF5pFRhDdoz!Et(D2qtQ4==>1ZR-meUmeEz)3$O%7RRqJ|tP0ZNhy;07BJ zY$$dLm#?J6RAnC;e**Xf#{Y0_LAPhHcbyjO{%&vi_BG{MQT2=pL7DLfJ!UvI>`#I% zBZ+~1Mr_>f{_HdQGabL4Fz*35xf zRSon}nN81m-+Z7LL-N?CP^Oe)WSudMyUDx~XA=SQ-y50lCRM;%>!|FLCIH{RNq@22 zUNDZ*#Ka{yJ)6{+oXbm65E=bEVp7#M;oHc#2yRnr0)+Fla@PyLf`eSO5u;>W_R62H z!&&da$nZJ_7Kv=30^v**2z2%?C=WRKe=z&EE2`*_G3K-w=#HPuuf8E=t<82*N(_oL|AKt{scko_$zexAo=G%!iQ2Vu+s!VoiKrd>!EKh_C>)@ao$O!l|<}ZgldtwpA3>Jh@7NxQDurd{mqEfQB7;3+sY9CZdJIb$0hnpeESL8Q@ZZDtn zQ6Xny+lv5x?&~%0eZ3s_&Kbe?);qiaN?qfUVawN;$W)~y-?BXRB9+IU0U@3=qUqTT zMsXDuE8#gvAPCBo3w(p}A?{p7i0U=v+S!!*&e$m&g6Kw7fdV+eQ(06sWCe>hsz}Y= zMmqHF_Oi*D*NBN2f{vVC@I}qn12U-NQ*hFUD@Tnqxmt}O_JCYG?QNpj30TS_BBXm; zpQ%>T2WzZpRWU!QdJwQ=Y5&eHGfMvs;!Tu+*Bm0qbztZXMi}|Soj8I}G;MX2DvHef zqSRiW^~jspy7^Z3I%uHgXWC~G0Y9htr^dwzrLxq9CFKYU+GFx(IX{d=hRcRA}ATR zjnik=&|xpUZvWKA&X3nLk9;UiIJl?LR=0lRg0xEM3(4^QxY0!L%Lw*Zl_DZjd#4OE zB%azQ!{hc_fwQShl~#_HTs6=0{H|2o(+p*I63ei@uaX;(1t-O`S6;HSS7O!v&^V{$ z6YvDKyIYqfVodfDmpsq)DF&hp(wWvOC(=o<1#n<%qZZJp5*LYm zUiOeQV-S;LqM`HEfHibTg;9E;j@I7GfIX=|f18WO`wKU-)i079ibC+_+ zN7npLLL<6w2{0*S-?my|{e9#~-SFNDJVYtjQN0m{8{l0#`gP74Q*QzjwwIt`rA0P5 z*uWAwhJ-2Kbbv>;$2SteojoP^H_%HZ86beJmx`D7j=^l8FU2p72mpsrw@_t!T08xg zxS#Rd21VkrZ3IYL8!WuG!jv|ol!J`p6!zGO33DT6I_}&M5{Bk8y5Sk)axW%w%KTOT zr-7zqp>MB&N0MA+W8q z`kqwx;Trgvu_Fo@uxFOce`K46C0eH(S=1IZdgzZmcZVvl$9mGRrjd{nt1hEM-ZB>W zO}4jQzYm9u?(eEETui9=$KP=!w3yS}h{6+9a6=NCVwZ~cB_^Wbank}Z zKB}XiZukS#p(o(ji9DQ1kQ#Tf1!~VaRPNzKO{R z#?<|?hw@_ew2~7`yJpo;wpCa(gHFkBHZ4j?z;S4objD^`EiFp9TA>2JdrvwZyoq*t zH#JD{zPzn}s?QsXm^O9dH?3>yIC4hl+ql{Z=37=1dpAXBxo^8ae*SW%G0G{qQk_x0 zea1ODCw*_ecXZ;K6%}K+!=j)!jmV;JMj77epg8jROK){L)}3aRv33Q_AV6%~tSJZV+Hb~(pteN*6>)2RI_;~~tHZ9f#+a~6I?0#PH3%Fo zEO+slH!E-p$J~WmV@^QLCeyl>AY!Hd01l2E|LvDzKL^cQ~ zhr19ZZ{7LD4mZXE)`^sg#8bY$%q?u`(_vDDSA}?buMgTp6fhQ(sR)0(?i9E z)cCC@mwPkR1Fn8*e&F=zus8elc^U)Cd%D%W_1OKq{rvUu-oE>bMb896qn2-h);z0> z)kpBaUPA_+?b(N>3rer_G|iPee+N_Vld+~Ih*gZ}GY2%5u_it(7?ofI!F(oDoJ;XE zhyX&=wYaSGkpV&Wm{w{QIozS=R07kCnVuR9P@jP?WBuFP6Ccj4`_BKtc&^ixS{yCO zP*+yBfZ#*$pFL$Xe@{K&T-R%YV}5UDKri)PE$Q(QA^RaHXIZ%;*IZVpY8#SRhZ3br zzGqq^8Qcz`KyT(C27VhtqDlphDzRT_!dtyMT?O#v0UwSMmeEH=Y7GE?ZMl@Npm4&q@2skfC3w#VWXTd-CA!3cC_2=YP%P)>>p z*hBlKyB(V;%bXqGrT2#Oq1oCL<0wHCGc^Nuhml!mH6UR{B)Vad91J2FooEz`S7l)Mx2tmm8OLGlYsn@kBY~VXXsUVEmYA2Pttp|t zh!_<>wGLe#xX*(%*nJ5B&LiAVeH?(C4&yEl9}=-_8*&9~Tlov|enSJ)g1S+Jv0^OP zajNyLlNj_ZqMtoSLlvsV)2WSFN)P=;kCK3(>XZ8mBN~;X2aO(Pnt&23H&YDyCE>s| z!69OZ2lcgRC?8sEE?3Ay$EH0T@I8i9zjv9@XmV#&y1anp;2a4mPvL~tFfU`>n1z2J zz6Gq^o^2#^VdT}}bLKq<)+Qk{NcZxM|Cyc)FRgfX>MD%Bfr@k?z+=aWz2W-H`*~}# zGGys3k(e_=DpS}Drf#h(d?zkqC?h^bfw@V=^@!3q7LIrp4;e2eS6(b|!H)rnWt8Di z%(%5f)^GL;GDTbL3teBL5OwGAUf>8Ry$%$9q zW3Lat$GPLXz=XrmyDgV{ZixO4#SL1p)Q=Nb@~5rZH?G}lOxB;(3cJo<)b5o&K51AH zzxUqZt=wfIEalz;devG{6V`q`jg;OO1C?(O<7#i%@F8M@W|I*v@` zTxMKNcAa^$b2UT#zD0NTynrx1ZnET+vFJU7u<8oCjZ}!<++oA8{;8MS=a^J{eX5QckdNg0k`hc0%2vu;1O}pHUS3Ms0Jr6k6ICwRtyOSYcbOXI3Ldf#tiTDk&%&}ssDg3@^Q(6bL$I!C}7 zgT}}JUo>YG>t282v$Z7M*0AGFl!q<;ARm$DGZi0^PJU9FqtyXg7ho{=J7Q8a)u@v( zIwa3hz=R)^TCT*hsVXAoW(Op*RX%2fe=lN;d>857k8W8_gR&okvTLefmV!hhlS^qI zGIrhHzMDm)>d*L<*c;YaLONlc5qf?10=(a;^Ij3uv8EQ;0_}`h)-ya#(f=wO{4}nQ zjF)LH#A~|LKutJaww(`=Lz;SDqp1f?!47F8bOcaQ{=)6;mOB)HFNLWTyT?)%Qsjx^ za=~O5$aH|Z6(vB*1V)&5#!7eme$*!gINhFvrS>Dq?+V9|wd z77TB=>R!j*p<{27IsS|}XQSvqs$NYdmED)V>PV<3I?$2FsEFzkoUVWqeEssz>Lu5u zMA_qGB`NbC0~px<6%x;>AO2IZ-#aNSv7jyTKeCy%W}7T6@hspl64-2+6AM4mnLisQ zMjH~#{`jcapByDIlrS8Hbw9Zq1Tjb=`Q086?Ou*|1P*{3Li7EAM0ShWe{`9D?ZvT8eSfXSDrr4K2m$}!u#`>KQm~jW=_eBS(C=o7EqYF-{bNw z0kSR=9MUG1=Q<^RTgg`t5Fqp#uwmU%ExGz4xhT0iM}Dye?EUeSQ4&ZeLQ{F}kM7&B zM><7EjwH}x{&^UlhB0>DPQx&xpv>vRcyyUV`*R*nbHaB?XjX`g598`9*-oDXXmKT? za{6y>P@>rZ(9zHIsQutn>xx|KP)H~e0$ji))golxegl6weCA_U>)N1L@zccSm;I zE3jj67G~Vj_uFnw0Rqk^E?S`}IBq_qcRA2%v?TLS(&|pWCx2giMCx+FJID4t+Pt&2 z=ERKtEEw&AG;Uu?jgRee(1VXjepN}gkbo(3y?X$uZd)ybxD3Y~@U2!hW&~ahAK`yv-m?W8x)VD;H$R%E*YwnMs$^=~L6uSSrq=z9N0E9L~+@ zuq<%5=f|?LEcAzOv^u`1_*@$3;_>JAH^4>u=Z_{SGEf%!UEvE6$G9;xAZ{098emlg}z=v3Ov(oZmy0mqkHFDNe1?k`Cb8b}sdZ&bzT#5T;U=5{opTxtE zJJWR7fO?OVeHR_sFs9R^kNK6B`VjxCYb-OSBpp}P))<^Z+xk@NH+1*xsJ{~}g0ryu zD?bk|Iv5{P7(EU%&Tty{2<-D6CNn?5Xxise?$oY`jfKMvLWZyN@dRS(dh*K$TT#EqAXvh-O&_%ep7+{rKhVs25g<$QaWEaW!xRr5 zbw&?xU}n>Lsoj)^mr0cnM`66LIqq<39ySyhjT&FZZigE7#x8K%Z>AtNL1z~B;M&({ zsbzgM+ei?Nv?vLL^2mG@;i`Eb70utBy( z=dQh07uVnaso0@Uh3o%RY?uF9vHw+ej(zNCW+X7)I2=j)!(~2=6I(Ze^nf&oAKzJRrc8*+NcM}eaoVf@}5>p92G zlGW>P*GvHzgh2e|ii2G-H?nGqtCSVnO7dW4v0I@xy+!)&jMe)P#nV+hDQwXQT1b4 zbn!pwxi7_4V%cNpmD_sGt1ud78M@5XF`S#l@4ek2bH!?4`UGz)l{};xZspI#J0y1O zu}u+zSf5jEA&Lhb;LKq-Kbi3$o}JM%N~IUH9X0A6E$LcWO80O(p7LgybMbF1Vfnv} zI^v-*0uesq_o1+%-n@06CjP9PR0NIWrT`rCG-)wdNU9;hCc1~gMHq5nlaSz@F7d>8 z6RxQp{dB`3oe4+&vho(?bh9?V85E&{CWC#`!!qZK3 zhc&f{bR9`mtBu?13vv98`CYM2I~0) z5~LrX@{QseW;_I$2$?RWX|!E!rKDPMn+0nxt&!oO+c{rhVUh~(1c}*qge0XSQ3hJ- zuo5`%`uC=dpNTj82{#i6l8_NPu^Q~!1YM%lyJ^7p?>I=A1Pi-O*iL5OwZl+YUU=V7 zK<*_OwH_(L`s_NLtr%Lx=HoTjt=oqI&R)A(BYTeu?c=L;O7@PIn+`lx!>sDRAh*pV zR=`}hqJ?p>V&I4+(RP)*AA!2Z!+8AMt4V3zSGvSu%pe{FV0yu7KT4l{|KOsY+~b2G zw&QIX?xLs*Hmg9@xsjHhnmx3a_E_1YL38C1zuc{b6w;m0cG z4vtFXfXlUhDj18{IArIR|K-QGhx9g{Q?fJTq9`b$5rOH3!!0}P%n?+c^_=jB5;vuG zPSnG#X6!(7h2xToAvx{yB#w|h-hZxL*ETCA|HrU2=fCb#{wG*e(^J7S#qiS~8l+rp zs+mtMG@_}*{bfmvp$#!Fg1`|^pDbUJtG+@mtC?ZrP~S5j_r%+A@khzdng?3KJnM3v z$dv!wjt9sdKR&D5LF75%InF)t__zE0@%7uM?S~wanshbRO;zPF7y|@hwI4cqaOQJ; zWdU{|c(rnjsftMb(c=tE8ob7AsYoor4g_<=nRy0Q%PNadNo{HKboj!iMm+}Q`B7!D zMg}nb*vtLTO;tSATWN~#3=`oOqAfh3y~v_ww(q{nsbrx z1Hh>PGadL9dyVXhtN|RmU3%~wN8Y8C=^*uSKjugYpsBX}d1_=MlU)wnbsFNy;up5R z$&PBjsf&WPW;fy3VKx8K@*C(tnn=U~E={zf8q28s0VUI;Xwm6>gMF!h@(M6GP*0=* z$r7+L8UlrU^eAJ3%$RkNT$`MrG+I;c0bba3GJHw8>b+Ks{M}h_)i4hMJ;$n<0fwL` z+uv|=d3LsP3Qx>3{X!YrDpM9Nks;sce*vq$Iv^%&50BVfDqk6A^;8Sa!@FjNFMG@s zxa}B2a0Z1NCDK}wcU6>-LD&((o)m>!F5CiweQZMfMwLI32|VTL7KU$m2iwjho^ZQX z2PB1k!g&$4thV$yS~FnGo#YY z$X+d@M8&eo5*0x=gWsK3z3D6cUYgJ0#{H8W)bo`f=@Re_0`i8PJA*||uT|X()v-MJE?pt`#OTp? zYpA6o35k7QZces4=$1yz1L*$bp$y~IynUHXnd+W&4{*l=JpF)r7y5435OHt3=J3V1 zt~sI<_>8!Ip#f9pj@$!n)+;~S&qwa4amN;KXSCaOVkyF}e$AIgU~7;al{gFL*WD~K zVfy~vcV!U!dD4jRP2$KU#?#b(bT9_-HHh$QnhtS#^vOv73sP#B4z|fAkPyw*Kn1G` z^@^~gPDnAehiHol;PjiWuqq7SBLjJ0Q_a`hF+P!`bAwRBjM!bDu5d39tORyyu`R6Z(DyFlY1#V=n$vuFS74g~m*3TC z+5U)vBOfAxL@`k$C2e(Nwot+e11S8}t==!g>)0zeQJ=XU1g?_VOc0a0PGmt444|SO zP=iAW%SI~qiVUy3);Kai#x~BdhM?bxhB)Jh&C_phzOnh%aIxEBFtiHFg`qoEG;sey+L&7SnN}guA1v82)GZ?Ggl;OqF(pGNeGx#$=7t$787DU-&ncFbt1Rm%u4zJ(rO4E|WJIbuFr3kYUibXnheVqQmio>QRM5=t_O{ zJnQMq+pc^xVq2Y1g!zJzpp(?O5rke+=TL7)_(R-)RXHkQD~sZ;ZM>PM8v{saR!!~t zzEOj_oF%6lQ#uYA{EI!O>w1!MlPj(Q5*OXP+3h@{I^#+`mU`(HL_v9r-U$0+qL4r`zPxyJA7--u&A zUI*d-^&0;lzR3R>qi~Fo8wPOHg;pBQG)Tir(}ZFrplF8|NXtPKlBQa+fP_+6r2o$5 zg>OZcY%p#Gwa_IQFOz-kKK9@IxrrU;jwQn zV-;Ic4Y|QqWRj7OQ#J~6-?$qRH#HVMlij*ge9TcO+6N8BdmR4GN+R}Aenm@d)yk-&%_s=}QN1$CJsCBZrQm5I9;%rfqGd1i}SS{j8EQMBhYYF!LGl>8Rb5xI-aAwyeirZ&Dfky~4E8_w~ zw+{AomXM!OWXuO&D%RO+;z97~PZhnFyX)RQdg@N<`erkF6hqm|#RMvRr;2NCV0MTw zJn6PgS!}s&+M4He$)st8zw-EYz5j~qUm_wn`|=oW7o;klXmMdxIZ^XRO(RM|L|b4$ zO?-q(wKZRvnIcu@GmU7lEYOc*v{zWqWm)cpPXN5nQTKw|xvguzo*Z1YP*VcJxd|wO56%=?TSs`; zdgXcZ;WHyaQ+Z9o*&LH20mApGGuqRX2?`u!)y>-KX8ZKM0ot}x9m-1s%w>C{!Fb<& zNH?|GL4jXeMzoAoTX#!e)mHLZkk}u~rO+EtMmc$@l*+cm>Lo*qPrn@|PN0a_$4HG& z5wZ4Mv*?#^<2Cm^L2}KLC~llf|9rKE%2M!5Y zQL`1PJL97|54z&<~=l^eA$M%}p&iNR&y#3c< z%m2ZH=zY*#0e)+?%GBbJJF+`?uKB^k@t=bZL}ue%W@?~BI*9e$S!CN>xsRjQ9x`3X z4amK!|HWr^)B=r8`n|oL1SXzcb8>!mclmv-31TzsNhu7W8OhT`DU#!ItIYW8x}vQY z8M;u!Hqwi({25i^OFT3llp(|}EV{%e()(OphinE!&dIr87z~kxCcWBDf?m}dIEfP> zQDjw2k{dJ$hybl+rAbK`^LqruSHG9c7V&g=tKp9}L=t1Uk_JHj65a*-=UwAo=N;Qk zeByo2O8%%Rk^}*LfC-8gKw%N~?ESbu*!uFOe^&@{^tUo@0T*Ncu3yQEAGF4UJ45qw zlKhdP>cswI8n`<{$t<6aBx9ad9y{bYU6qV6TE}D7&ioA!i%Ye~%etAKqMWyDhwcBZ zAOGx``|5cN|2X9FSL#e?29^AXbv?Tn>NTAfxtxC9#ETBiXkHMPFzR`z+CAi^@vj@7 zhw|QtnvUO|-`5F_Hx_E5Ln0~o$ZxbsljB%NVvkXEj5&_$5y!n8AA#6dpKzqloEK~m?3;iRXXfMBlcjn`n0Cx=^GMWrNzweXB5XKJWJs`#UV)UQQ{y zhX+s29gNm#j$eyfat&xbaj)!bu0uO=93<%|jCgRAd1q@lH$+gu74&6!5q4t-6_shg zs9d2_7}a^TIaM`u&)E&E?J9_sh{a?}^Sym8m)W6oD$Q%0Nc$~u54?$xkaiq$+h#0z z3YuqcJ7&sOkyO_FLTcx2Li&!!E-1BLQcwiHwsH(b;%S1W%!dXeT_t0=*GRQxvj+{7 zmkH7m!Q8DbrNFR&87bMUt&pfB>uqF7jf7z`Ht5qDmweO|*1F_ugknJZk)G|$dvAoP z;Y zo@Mr|?3;Jio8@}SG-Q;$3$l$n_s|QW3nNnD+DnJT%0NWnll;XyP<*vv%zAlSyiKNV2E)Pt>*YKvh&TQBLd$fBsZB)(TaB{s=DWXhc&qhxR$J43*sO(EMy zuH}sc{PTUkx8>FJ7L}BBXk?WmF42j|M!sC4I>aJi?@< z#yGTh43&K1ZR1gwFuvPY)h9bFvX2<|TN`yrPO%yOQTOx0`7_N^XxmWrV531%x!A6)MfH4bV&St})uC1uS;Ls>`kxPk=Lr_;-Ti2Z3UgRK-cB%11Fp4fB` zrkH%3th1JYi5aex9<9XjLPx$YNd+#r&ny6POKL>^V8g^N8Dnc`oJ7XLT7lpZa^IwZ zqwD#39DAhYY$K;QR4hi-0ZlASPe2lrLB=nvD;*uhMXM)8B1ui2=<{Ggbc$U{EQDMi zl}8lXwEZc$&WIFB^=oci&k^j!#Psj>aoPt&U3RZUBsO<7!Y?vhbswVSpl{f_dcym_ zJW4`=z(8xr>;exCHOj;rB0zs+Oq~4__8@ymF+E=Bg3U=j_P)g#{un;>A03me_y{sl zkL5lk^uaKPApIN{dam0E2)bE~!ygl(qsligF%rfX&;Mq6C0SdRgnpFnPybOo#qqCV z|NjMSO8$6jP&$2GolX@IW(<-N|DB;My(|=tY_gm)OR+4g&@Ax}un7%_=DR>-nq`Y8 zx+M}*w>a85>f>zI^~2fk<>dE40W1_j#;g4f|1qtG%tP4 z4`P!@cd%)6CWYXg9-kr%!?8q94F?R_5Bi$nVr_tZMjiUDdVd z%xfxGzjq@A1o!mgW!B9|5LJ!Y;+j3cTbJ{zSW!CWm4~H5kFSW%m4&?@O$R_9ts9dv;j5m>@H|(AK5SmN3mRpy?#e`Nl zGDwYy(onY@O^?&?26x`}23^Ek8jCegH+D$($1mRX`fiwx&7}o|>Ma_MPC28H?_b8; zg)Hiaw8!r5Z-a0Elf)0I#zWds;ZWWHsd%w^K6n@F4h8pTiNN0+!<9NG9^ zhT2+hTYCBMYP_pBVrL~d-N&450&B*~E%lez4KPKE0p-2!k-wqL;@bAdYaJqYzp=A( z{8m5LTbsmP1E*UHJSJ}Zin?VNF_A6Bs8 zT#9~Y<+y_|_ZS%Oy%fSU?qTKQ+JSu^;q&)7xDOGW@BM4K*h^N@dj(ak8~*n1sMGQ* z-9XXD^F-@Enix6$m7D+H=UYK%v5DSEh0!UYys4qEfj9`Nk=SCa2}Osw?`z#^&TRiF zG!l`4mSO}^bxg&!v0v_MP%h#WiWrCnxfQkk?Wm*Eo;B&Z2f zO`|dlAwO3ZWs?B)Gi30^uk753eqgZ`1P`F2HJUtc=F*=)4*}hd1}Ei<+IFFt6@(X{ zD@?zA)t~Wsb}mCN@%p_KH>C|#jLDAW#?G#Ds0hCHM%z!;OY3hq=Crlnjmjb(oFFs~ zk6O0K6zfw{MMug=770P(-L5Ei)vyomt#zWBnLqH^G$zr1xalYiiR0wQZ7_V;3912!cQThi>wbO1{bw8 z5v7BA%jX)jD6LHHTc5&yXI6nLFG!U&VbMs+**=^rNWuQ%QyJBf_Sv{&mIvzk+H+y) zE4<0~%NuN@TgNtO9U32Q`#O<(l@+5j7uR*r7J}Q;=M@hhA4@NyQQ|kdULANP;c~!6*%!Gj~d3xbFqWgGfI0vn+pebXyd6cswIYKfCK>_W3fq90K zK>z$yl1W_%=5-B^g7ABIzIOJ9ZzOx2E{U#Uc9duo*sCrIR~Wt@EVEg1YkAJ{n{aQ- z?3{?KO<@kNpfKeI&~P}XmUGol-kz;;>gSNLaHhvxLa<7rZ9~u^`Om5G;L(4BnGjbE zV@E%3LBM~#1^-H9|M9y2ucMq+isXuCO0b`eL83&Tgw2Cj5>+lTgb(o$ZaXtcbvbsL z$LYM}Je2w^b))Z}e0kdBVQkpbbm!MfYRy>q8p)6Q5P$vmiys! z;>FN-+HwoRfUlOfR1cvlfFO;ACPw6d>xHC6p^W|{_9j|*z=MZdm0OIBN*$6T-)`lt z6H@v>5#84X(l4PEIUtLM{N&t}|LZ5p_$dGv`sHE4F&KzFo2XN|7)$M{tpb#KK=nsY zey={`d}BIE%y}Q1%bAtO6a`R5e}_>8%1k2Nxxr1uU4?dLugD^9zs(LfM15llFmI(G ziJPB+vqSf~4r`}7KAfA22GRWFh_LK+QRHb?b{1Ppa%-$GNS#XvH_8FxbHPPVC0CzakI^fR|ecuYPzz+}=)GODm0IH6B* zGgn|8;l)ok;u?fQe@KV12Ah2_uuu~lM*Hmr_1)vLPk^M&k~^D-r*15W#H3w)%2puc zGq@^JH(wc}&H#%bwrp<|)X)dt-e@W9ytq#?@c(Top+8#6;s3Ri=;&1G+=DBd8@)JZ z*+TCtPXDx&tcnj!5UHf=C@eP@+#+G}ViUi1!7ru@oUP*gt+Qg$-SzxnDPFl~R-^y#g(9(*MA|BMp&*R zF8@DTN{;`@12w#Tbkqpmb2x@OVX=pLq2X&7eowkt(u_1US?`mNO*1gc8zt6a_Bm$i z*V}lya7r)wU?}!A=gDC>z>tm(inSy(v2ZG(LZOOdTm~Zhbg#c14z73ZNB1E&BMTf2 z#=SP&d!L`bti^p0nqCLLP<^WCU&m3`xbcZAOKZ4fmY?&E3_TM2R-jor?`rERGdGv0 zKH~x#y-ANZ&c#pOz*<8O=61x39qpOcEaWQr4V#9CB!y5VAL^9b^uy3}kPj_8jn)CY zEsUpNXz{IY3!(hvL7phl*t=0TrXnkHMvktSHH+Wf04)_bG_1;zDiXa4$LZ^H!Cf@iwKhvL%=y#~BEv&ggr^x()BCs{&aXB=wBU@KuS!R*j(XLPl@ zXNMp`yPLU~*xFmXf@0w2(~YuWSg66nH&R^7wuebm^0t3ySiArVOvyC!P8C_o&d;+Q z11M+V=W0}QIeFUS_a;_exmiR$0)@_N37S#yVHvJ^GsSCBm^K>%w`lB%_|pC0T1f7x z2?tttqjtB8vPgmPN#pI_7wE4*3*41iBZtbMv6T&3%dV3U_`-<1fjL%3^|IT05 z+n?1Y7G$+sv8XZ2)U;Dk4K>a7Q`DwQzKQ}kY|Upo=Pe-Jp?u$HCRX6y>zWQz*H&a>P$=(&Y!KJf7aqkT>4tF4 z+LKFwqIlCjsW%}QVVmM5TlTqvvRYr}YnUt}_jsiiE5TcSngwemuXWkca{AlC+ zmfsy_ciL4)ot+G%!o;!w!pd9&AI-tj+znJf8iY&l6Qwybu|t{fUT9^ywFH#r14-u&Bp{TtVcuIxJ_i*r&^&!*y^`?{v} zd&(u6jrvIyzc3G~&L`1UNw#Lc73mebx%AYP5-bgH-@0tFJs9@0lkGuG!(Nn|op5az z5Zf0n=s3fb`&Wd?#=e^<_C)VZgiY9XQTFx?5V9gYpuvWBv`ju~H;q2qY{&f~dVw~; zYkB49jEmDgwm=k$^cCcZc>xM^$C7UhfTMJ-sovDt?OvD47X|Ftr#BxSXdgLdU!edF z1`xRUHVtyAy!{vcX-t%95HR@%ox(ds*>t~9S6(Gv=&N|PDE%Tok}nV;$J2NXVLq`D zInb?3WBJ6;KhuTrV9tnJ_NliCPM7VGB{gL5f?BjUwF3au6QPNeJP@V)LhUixvJiX`EFrD@r> z7?7Q4-H&El&YI)XP4x?~SeM~n*y&2@4fCy!S@6eGU4BDavDU_QDNyr{f5c1)~actc{N*A$<~io_uNTar0jAZ<8%6 zW;RY^1ek`Xw@kgrLrcyRhYlT1qWx0c=uT7EW7lLk>+rXpiU}1qW(*=-jGWeH$e;^YRag(8CDurJ12u^%V}1l>?~n2a zocxhaUxUsfxnkSSIh+mx7yA^Tn2L6Ox)YD?L5wrEEV_&^^LCz!Od3Msz>W7^Kx1y^ zLK~*<*aZLZ%>1;}g;0K@Vsb=eQnta0e1OeB`Lia-EZ7J7BIiOxq@XUm14Z#$)7I74 zW9~<&cnluK@SGn*$RK9PT7BH7*@J8#ZqUeEpitX*YHW)={1uGq$Z zn_HBC*DOCaI;}6-nt?G|ELMw8(h8Z%BGv){QT_4n{|Kll>VWaHUr)C zax!XZ5)CBsnQrI0oE>NFEuEORV49g0_LpWt|4TC`&_-fEh~JBK?DFa1ITlpIfoW!~ zLzk&9f9UusR?K4|i0B`hNeO`azz(LF@u)NBxOmTB-npHlS@6}9^lI1RXjBDr?6L#%~ zd`*@GMIM1PpNQY8oX8lM>(5qp;yhPZ>O)JSBp5KBYdTYk_FH~YObszvw2@3H?iKz+ zH8o4^B6S%VWmotrT3^*!gK^pw>2JYGy{izDmo?(D{!~bnDVU|(a5;jU=e`_Cg z{D$LT{0DOpCu16ACjX$H_HK3>`TGv>H5I0RQ{eCzcPK#6FG#sJ=+f1Cjiv7Vg{rB5 z8XF(D>)v_{?kvaM9sIK3(KJ$*PwZ|g@*dpsI)uv=D-N}YeB#674oW2#OnP35=^1Q| zmQv2WShN(G_5ZtxB7;yH=LM#k4gYa^!S&Z**`ltegdu|Y_R(Rj6~O0)cXM3JCv#Ten@298_fYY2n?g2Q{>oWM!(l} z#_yPIr#IjYk|b6tw6LtEoMR2OrE1Q6g2Tg86($c8wO>u27Ig&4%2=~{L$vK!^tuoK z6OJFW(H|Xq`n_<`lXTH)caq7*HJXiu`k$d|UM6}Qi>hUo%WAoU9ii3XAA&{hoq|}r z5jl43&w*tXsU`C)_GU^nC!}t(_-Q80sMrTg_Xf2X*`%TKIO5D?&=#ksBc>vZPtJ)? zY0=Sk@vlIVP~=JM1>FYOtT)x_=+>Q`iZ{xqUuTjnHf%Sf0RAB<_~P=uJ4=NzS*B{^ z6jYkef-=W!Yx1D}01iG7J%s)UkI6aU=!`k%oHoO_cRzJbkL%Xkb%v)iY^?>c)`Tsh zx?K?{0Hezx55tY{w(RF`_VwJH=0;B4QcT*zO9^B9)rjsr@HA$SL*is!PZe?U(ma#} zO<1i9%H)EBE$*Jd(@CIV94&KYI@$30sKXpS^|m#1QZQY?LWy0^G#%CVQucx967I3T z2Ac_(M$?L?LAugXHLir5md#ihZBg7~qxC1o3<6Ejg8ALd0O-LsS#46@sN?haZHyFY zfN)!ZWdIjy{_SL!mFdeT20r&j)t$Dw)hne(_-c&Fyh<@Qsn=2XFQUy*(N2b!d3|ZS zA?c+)F&h%UQ5$~Tp*i|VY=eb%F8|=z;2ro1g$?ImgyMDS;invZ9L5zE zE)1TY!NH?V7JkpJK&>QX3$cnQLE#SwB;7KeQAgs`Hy;;E%w5RR|CvK`Ef!P4`sZZalAF8+4MZ9MXod_$6dL4Kt z=IL{iOjE7yaMbPIR!|TT9vpoXTYKFx&wpvLVo-R&T3dl&HJb<^>tI;-8eHKuMb+Kk`v*%O^V z?U6@usA7m(1`(aTSmStReJLe)5itML*2a|1*TzM3xV~Z&b%uo?wGVqrt91n|50DgF zv>9x9YyhZB?BPZ*CwOz>_Zjw~=~6h~%NW3}19A?15?HHWo(pT5&h!?vCoJ7>XF8YgzL$ z%_L=W(B8Ty%q!;Bb&K2TJ|97`F}Wyp^v-d?TNf8g*9S%4cl=U34^;+L5I4V-v|*Q1^D1$2LHD5>3a39;YWFSAw}O|y9_c3(_FD; z^gnnFc^%!}UxJn7lO~vJ#Ft(a%Q!+J{K3U?`*B6<#j1_vThPEaA<)pv@~j5U5?PSj zqo7aJ_#FRTjR)#lurBhvq72}$!8|JGeqJb6kB6ZBlpJ^Ks%AbhH=2J*Z&{I@#mcX|X zmKvifQ@PXmRQM69Q-gu^Z~&z~D)pUwJF`#H%yN&xr_5Jz$M=%A?Pav?^A3dkJ{oDt zbSYbQgT12}Ij&qeo1Hgv#O|z>rc1n;(l0w+W?ck9ES;$8MusSu!io06tE=Hf0UB#^ zx1VK{C7EnZRrjil2m`VdJ=H`N&SIQ$H{F!(O&sqJvK(6^wr}no%B)8r%Dcad359~u zog*ZA;88nEm80>)3<`B*bZA$^(8}=5?SVU%20Jsnd`>en^D;o24+dXT9^Aw*n^c+4 z()>v}6%(fqy8groA@2)xzQP|s7IG%bV!#^EJ`}8sro6yIDHI|;^H!9} z4mb@NL_+A_9I(M67zB8P;tYnq!9q04s*GI>)dbr?8@;VPo15BFu@3K+jTnw16H7YX z?qJzpu2RuQG(Lb4r3(9DDf>NTV;Wg2a)jk_l*Y8RMgmv7n`w4qPVhkBEB#1d|>r8Yf!H+||sh4ucc2ZTnI01yw6$6)4=T z_Bp0P2_Z-?16hnjLk+t~AFHv17);Z&(!9QhV6Q5X_;H?B_P^sMD$PLNWb#5GUsLUS zT61jf7Yy{{b@uL?65^RorYRNbUDvPosUkmoA7yLcRXRsa-zH~KG`cRBy=C?sQz)x`k$sq6Ot^#bxBi3)Huvm!>8<`fxi(qFrIidhdDy z)L06W*zitr2QXdNQ5Ng@?#Wuv)n7#(r8wk={c=~_>Ger(6M3ToK7Js7P zsi^vcp_Cf6#AsA2ZBC!3HzF7$!#=WSUY~~#UH;u&vVErg*HkAX2MeB76ApFdfvlIj zOjY;PGP$hF(l*~ml%wg4LCC>34c{|#USTv|<~-(KIWS7U(N%r%(cgd#CjC*{YP|s* z?U5jjTo4X`{;O$^JPQQc)TE^Yzc8aoY~fbz>@*1X44&)4wJx+C7tLfjm#&g-7U%by zoi6fLXz;qYJT#US3sY(1@4_o>O8craf1R1MN3_8)!^v}x>vi!@U3aRmsRAhJE;6-L zKg`pj!&{YA)dUKxqp%-SJ_V+ZwamY4$}BDF&(|7ZN+l2VP+9$S(N4Z#F+svNUZrv% zazNb?hw-cewkT}yDH_)f81&!L{VCVp5tOWmI#d(4#`!w%X3*6K-Qk`<3TZ*{^`MpO zqIcRQ_-wSjG+S3dAG4mmu!D zNu$B)&skT3y2u06FS2KP3+vaHe}^OxJ`;eWe`M$XIwbk)WcsRM@XwB;ApV95xCiOe zlXTE0(e(-E;07d+AEvaLsD?d;J*Q291Kngaxn!DvU5A*F*D>|=4502STQZBqy5}R> zm!DTOJ$4<0mUR1y(Zn7-UB`L858F*z%NctVj8TWPyi{jK&(*>rvy?JR#`kr%6ERRbQ8KuS^w&b_U`#_S;1le=DRNEw|D24 z;Wng=+^v5M5*=duSOH%y`jy+1!z4NE*4XB} z6GHmoslXsaxC^6r8{svqpdz2%P?Dd2K1)oJ%;4dO5xmc*&XhR~eKmxJDJLIef@1AN z`+Qbwe2u~GUJdqY$wLrmxk8cKuzFDfSyH{6IfActTe14$mo5oGU1fo|h7m?@z-JR^ zED*WRY47izR9D8j%xIP`{dJWz2d!@An!a&S0ILHsqgqc$lQoeYT`}Y`z_A=C{9O&< zvj`2oDvc2zR8=M8mT-Qaw@U-=(eum~2rDn^KXV|n>?sm~iz>Exk zj0!>cX-Ha$qeM$-z-Z|YpQi2n%EP%FlC33YWB}LKBWuQhWKu;cME(rKoB5BHqJF(0 z*|RF!0&aFF%Y-%WOCgC%Z(OrywINr40|>YlqA540sPi#3^ZZ;tf_1&z z8AXabi}lyW$s&(9*+G|J@)ywOiKedlh#F-XtYp$MY}LvkjFTo(%OekGe=~uW=zURJ z0g2lIvlvkOugB%9+3V9qt#4>2mJ#j)4vyx@VZ^>SE_mTKu)g94;OkrX^jCDUTIvFR z0h6=0|F|Q`{r@{yz@pQb!jF&Z3;61#BoXS+HMFVC$f4jA?+r79#tW{E?;|4V8w+v0y z+E&7-prt{R0r<43w56ReXvBarJlZ8YSdC>3MZ0+Ge7iy7)_Tj)J{GYoM?KJc8)|b9 zIv}LnPzboe5=ZG1vi9Vg&|t@nclS*adEQcUY}rmym+2*nJM>;(Bfi{sse5`YI}e$e z_cB`+cQr}kXM{l^)~D$6#5uaSr(Crc-4iT%GszK5ON0r3 zy1X?3c`MbMAFaV%vEn_)zar=|?0)P~$MB<-;mCrdwHSIb(oreKvWGXt$JwT}3Ozy* zUblx5pCys;ZCQyOS2@q>NytMZzGzcv2-`=pTws1-(5uz1(zGeU+8l-AFOe8{c{e{p z9Mf+c*Qau`(U?RZmMyLdmAMK#0U;D?)!P;mqw!_3DWpuY(i>4#%m{B9L2tWV*oA3b z1JBr!fd_W|XB*_rb+(eXoj3MQY8a-B#n!_ph5Us$5{h>(l)Ft z?Mr$J+-K)Q9tXL%0VC^*yUD9t-=}Df4l`=%g-%>*tT9yAI;zJ0_l3tVVE^!)@M%>-O1g-j%RW01Qhk zA?SYhyRP*{H5Jr&0%44Z%0bYD!c`pJdaIb}31fs{KGiRQ?4zvf!@K=LW?4~5B(ZYG zly(*}Nzq9HYu_Bw-N;Kjtm*W{7{Pp9^v;I1$A=l~<{-_MEF~P5=#OLd^wtviA?J~j z`=stmaULL|{+4r1pL{D>6P2+Q4b~}+`c>s`r|z$OYbSl~i;~oX(ooj*3BpUR0@LI3fQdvA9K<6Qut*ob>yLlA z2eF6O#}>wbQ~6|rO9bL_=jIYT&d<(uH=gPS-zHOAj&6)P2PJlZ?(@}fiTAuzroHM- z^w1LpCE)M#^+5A*hvs%-7vxCl*4sLCC;KVjlbkPQy{IH*KhEp)?C->gb7KXO*#&1YFU zHZfbL%z+r~14%`yAw)CsZ{fiuRnBq0x6}lLN0vs{x!5s&A<@mp6qwc8F>T;trXK(d z%G-6q`DoXenF@4P=S9u#05=&INSj>?ya*mq{+vSo!KAu9vhx$!Nvc1G&`$E7VZUir z1>xAEp9XA7nU2#x3Gb~Th!Wdg+9%s{ZW&+6RJFh-3;%tgD-LG*`~csM+W&ex{%3Hp z`$xwW6hqqhE>S{*Vk97LLtFYwQv}AgUsg}n6G>BktTh+x@=9aSD>nLrrn-4a=Am;lOnX>b9c^|!Z1eupb#j9QR?W`p~DK?xr3x35UqNkjx$CN&&Q%Z>_J1LDY$4eU&_6$bmosWkgb~a6D zKlnhe9<{lenT_cbxu5JZ9=SHYc8ZIZ{CQ9L9E8ZO)8;H8GVSmj)|0y?Ff zeb$&TU6ey}NW{jdno(N@H|#bht+bbZmtCg0##%O9?Zj;pC`caLl=!+GW*EJ3_uY=R zKaY8%DOxtI9~MZV8&A~0_{C`2+_^_&cIEVK_7$s|dHxNdxu$YW3HMGpzOGsiuMY=9tYTN354p%AktfLSIVT zJO_y`8kNX_pc4hd+D$QwI;LurgvjJBwuvLItnL)n2^HC#3h8*l`^)OFI3Segp-1YJ zx0~yC;AqZ|=`L5R%iJf+%c<$*Z_N6zbHO{fX;weHnrO;Pw8ha6kIcz7R?ej@8@+XO zFEK1wDGw>u;73@rq!tuV$R}{M6HJ2iq{y5|u*NC)Vblv208lZ2)HC!`aYv{@gO+6L zrQh%@gQg<5Rlo^BChkE~L2t(p?nbSsBkOdVj2X|&ewF~!(U^>3<6qCgOm(A*lWggM z{7&V#np2jmoS7Pw026AWRO>|sFVnJ5zBL$TfV?_ z;tv1Jds$esq(hPwDdW=KvmBud>srv(RXY8>^*dETUiETekjXrBBH%KSlGRciBSdAL zS>l#A(xljNA_mFNV0_47L>5W2Ago{a>e|ucIU7=>OL%o?tCG7gwIBU@^;Iuh6ry}5 zbQ!>oZZjZ!A^S3PBE+g_xoWrNJM7=UOIvm@9h8$JJ<9+2=wzMELw=)SL=?{Yf=6E$ z#;vNoMvbLzf^I<2lufwuicVea`c=rj*%;~^qqsH-Z?C{Lds@n+5jc(DznlWtB3=GGK=JS#fMqS5ra>S@tSbm56Myh1oK(2%{B~r9%FCLh7lPxz*4^5{bVsD|;Y9=P5rx$sU!v+9U%{>6(4ER(ox zWGHpDHOk~*(mg}F7M!`&{+Ous#f6H_qRE3-kyBym8-oIAY^`UD>NBL|bx2rF_a{L+ z1CGiqZ{&|Iacw_UpG#fhE{XU2w}Z#Cvld4FMC4CF56xnVdXh1E|Ei3jfE$)p-JhmU zPA^u~62+xCsoSMD#?Jhf@kT2@DzMFP>Oh2&D@q%H>7$KLyhNix6?W8oBjiA^a-tYZ zymX=&>tWk$Sa^u}5DkPLq{Ks>%Lw=ZdC6Eb-#M|)6&y$Q9q0NJ+7=9S)JcPo^;V&i zC)RbuyylQ$5qtT(Tvebw+UxgG$!l>msPD&|zr|p>HHH#Z2rgQB`C}fUd35@?C30|w zJGM@YeAf%K0g48?cH-B$B4$(y90Q8^loi$T zo)huS*wF~-u`l}Ue%SWO|XU>{vTIHxc|C5mbLyDJHV7l0Z^vX zTf^gW$WB@Kq(>7GIwwk@V2e(J)gYhD3f-6@GeCvyEP?4Pp`x#h?Hm@_j0LSP{BL+; zVQl#6fQazwVlV$yZ`bFm-?QIpcOd5?z;Ixm;uTU-@Mas=Gu@ zwIn4c84KL@o`z7Gj}1`@U>IOo`7DYil=5?$VkLqmd>F(A4@hf?bR%nvGZC2v60~f9 z*YDekp_75KP(s3DEx0|FV)dT!1k;IW;Hop5%n24Nw^3+$vwB#5@?PUUG1E+?A*c*T zF-l98bArh#X8`bcbu>4tl$SHxqzu8GBoW-%<{CP{iE|6Y&g4y!`AwPRV!v7l1J3F_ zXHg5#Vq5vsW&QxHxrz6RA@EQ)BNbb&2!+IEPiYGi1;_lB>b9rtid2bWfUK#g=mi<+ zVU}1{2et@fr!S9|t0k6f>|31JA};!s!>Lv4CYy@#CQ{65tc^3Wq?7Axj5^h#E>ri} zLdr+JNv$(;Qk1%Nljf+QpFU=Fv9_4Cij!}8(0#`mWdezZeYeD zGyusRXnH@y;Mini3j2pb8?ahUW6PWz5(gyF&e{j0D!xr+{PQiE8b-QSmc;Zn5-J>H z4KEqGrRB|aEkR#nAk^El$S|=?&0FB&=PEE*Bt$sv1V`sjpZ~tIbdAEC#@!_28Z6g& zq#4Bg%z}yl^ZJ`&5NFjq?Aus678&GbItgWSK;_{4mGd39gFJ7ISB>ZVp$sH z>Nb&MG5lxxq$LVd{`4gW!{Cd^kW)X|zK^C+mJ4e+DKi$hN10s6)KtPA`!e`>pHNs; zRNWO)EJv-?2Bn_j)S@F3=BjZqEHZ=<9n9Ovk+6PRghP3>klw>kP?U&Ymqv6`$N*rZw9X37TyiXJDqg z3iX&2FVV}{br-MmPDz#ZhP7RIVO&{@d9$xPRxUPbvMdi=5H00Kj%+3w8VIdMzmKJ8G(jx;n%bLB)UQx7B1CwKIN6qvl zMP7ZzQcyOBs=@pXFYD72UXk7C0S;@R2)~Yy`0QeqZl_R;N)GxL=iqI+4;nGHfG6Ge1%*HuL7VpR=tqsUQ}| zB5j|;jrlC?)(Yy@bc4Y8ix8D>Zqn}6gNv{NHgm+>Gx2yYgCqX=5D$1R6i|-b*CruC z#^>DlFYY6~}fhVtC3Cnv(0I?@UO&bgW)9t-5?PxO4DKR&jAPeX=07 zEVxznJ=3;7$+RJ!kqkNUn(*m+ve41pxgU{K4b-x++tac_|IDfN!Mb%n|0BY%PgkzO zz5RnOGh|5*LH8_2to=J!n?Uim>c|#12%OeA>J7C`M|^frX)qkd24_aLR_S(|Lakyr zA$nRfn$4F*w6?^=HO{C$e7N_VKSskEz1u=szZ8ER8Vd&@VU!gTE3L`}8D0Y$8TFp6AHr|z&~)XRUCU!x z`KYM*RjvWj1UgUwg021FWc2IY(BvfVQ=YK1G~dWFn6w&xInZ@f{uxZt_^AC)-Yoe{UgrMzPw*k|Y|vy}P1Ya80L4^V_@&QWD}3~pT^28<8O|LGzad37xXR_? zb}QP=Gxm~@+&Z?_=d-(2xPGT?&p)&in}GUZw&wUfztX&4>>RkdsSUtOiX}MbnCvs} z{&YpFC#J@g)UA3FUE9m5h=9wQI>Jcs42lD)?2B(CIBG=o`}aF8_kb1m}#P z1qA&R---+_JfdqgJEClE6LNFKWF?*E7;LbOgw&tZ%u&XHk|u~EWhAv}>K@rWX72cY zas7?;PrS>u{IL5JJg8*PnHuBUEnxSEG^>qbv(aX|Y@q=;s#KOV`5hr&82TIIUL11y zg3uLh2Jr(B_I}AST}~Uk5YW%ov2mEI;M`76YPV?6;FC7StXdwogVpx_xUq^b z;ZE;mY+4nXpMDq>ItWEZR`aI&s6P7PHRv}~3gQjX4CVtXZrugB>KUofarEdzV%DVz z*No5}+85v0VmA)zxNYNzv}jY_%a@23?2_Lrz@43`+|z!*Xn*MGt-s*+xwqK1Y<0$0reN-y6^rv zc4-^@3POTfBBAQl4U2vn{)<(d8bb)YO80JJd_@~*pe1l0ig;a9i?^6vWW6kq+E@!b>qP_l1JiZ3F;O6w1b+5&v8kVXgq& zQj!BSE6gYG8z2A^ELu1Wi3aRRi1PQPMMn{(h?>&H0R8NhTMJZ73D2OgI+MW1T4oV%MY1=` z^cL-ig$0}pzR_4xj%ZH98B({9r+pFGQyfcS6U)G`1y6xTfJNYbI>f{t{;#?w1?X`nh`iN-@}woItY%(OtDBP%L;l7*KU zFg>?j%VwM;)D0Qd!71;(6Mlv`(h9+K{WB+T^rE8Rsgsq1uqW2V?t9tsB5<7JJL`Hi zYjnH=0ZoG8CZQUP8HZG)6cv@Egjh~2Rf@$AAEbskaEiQ>22|LXmz`5va`o3?p0fu{ zbPCrIoxfn55AGp~gjeCJuk5dv)pV!3rjVS=oR5b$3NzdBezQKQO4EDv9LcW0(D2y{dJ~(N$Ruv#g9l3x^Zrpt7uP*3mgJa+Ce%-to3QNRfK;r0UynVv$E*VYqRD z3B|`R&|jl!FaX|J%$>w-Iqi`UBWU{w!Tn`1BAd?j4tQkN?4_oog28Wm6r~xZ&yF-h zdqP2Cn=-JL<)W@lfX(`4@@t;!4~CFrH$Zkl{1Jp_CQ9cFT{N?w?IQyg9#T)^{upSuaoy|spk>GZoN$3 zJc>Fk?)lJ{XC+3iWLve!5>mb!OmvYh)dlw|T+Li$N*fWNFaE6jy=yBH(G}O(Xi-vK zZeuGv23Egq6ATx9;+7hMMzLsRLSZL`)vu-QqbN#)Le`d_>dX8lzjjRxT$_9sK!#0` z_DgoH?Y8N59=(%W5>k$##IdKrWq&5an6xPx+ktfJic zgIv!s+u}{=4{CSm&F+xe+5D*Od0aykEwSU~W~P3k*^i#!F_UXb{=q~Tk;^qb3q@0^ z!s@AXM5+$WX}V&%)xG|g$8f|iLqLHqj@Ezu^#0FPW$-U zVo54e2tTA6=f20_1iO;<&+YM#!r40dx>q7U&2iumP*D9Qdw*G^Rj5D4a(upa+db>O z^WZ)6_Wbfn9f-;XxUkD~@>zf#*-c2=o08p)#hhN9o0!x39xbB7d?Ok+>7%US(Ha6C zJ~Xqt(P#C$GuD z+<8hm_mRw_{fYU>a)-Y3VXN16#Oa}GZiGoyzc=#Qbk5nHn-iYbKHvT=v9XoBAij_jSBV8|J~+m9 z+^Ed+hqclsJ8TTHrb;G*fTQ_rV=y79=xb5ZeesvE>Q!r~-?u%@7<1>p}H6!7CIN`&g! zZ}_8;N`Bcz-lw^s4@7Kkx;UTe?D4z%`nGvlBWcwTe;PfM)nKU;2}>p97^=PCPGucs zceT_04uKXZOz;!20{-GsvV~A0%or`gB|lRXsH+?N*shT8en{Ur!&$t2Ek}EXTI3g0 zp<@-(-=(L{~McQjau0Le8M*Dip6W2`>Q_;0)J_ztb-B_o|2|4Z>`l~ z&cw8mZb#9vw|oP3+77imZ2MR?*%v6i3JG%!AD8UjvJNbd?g0kiels3L=+hb6Ra71x zK{ybrhf`m8=uyiqWIjv?4n>)zc#V^)HNqhjI~Q7TWSVbD;!;N_WWrhsfBFW`km{A% z>8g;uua~p~MX4Zao^GVNUF@Aa^m|ptHvg;I;KA$S&KtQv@rsdgad~M7u~S|AOFSBH zy^GBJs>xBGqP4spOz#`qKL}!n`6qS~j38J4(OSs;Z-uYsnJXT+&|~XU)2FttA`Xk+ zxg26;y;7(YZWGkyPKtoq2?j|c>-&)Ol!s_I()dR2Qo@gGb%gvgj zo8wpzH_?~Z^^kYVf93jgFiRW&!4h4ETc#(;S%r(-qq@LJu3OjARvhV5y~TNVnqz5= z+*6DX2^{2wo8b`rXAC#t#Cp+Jc+MsJ)kl5^A;xzP)W_1RYWJP*ibek;ATdJ+XD@6v zoHfVXX}pqSFa<-njZ|-aVUlpc1+ly%jU7C>@|5p`4x!FgQ`6y9tY@Iyx9HvvBd%i; z09r1?LrD^pGnCIbms8=+@HtJkbOs`Aq9LwGbdNYqk0)xHb!o29OMNu3d=zxrk$H6; zk9lpge`nDyj;{e4+?XJ0;SP0E;ILJz3X#d-6Lrrxi6$OAaiVM+^QhS+Axx{Ym!}fj zY2=a;Nq@HC*KMxltX3&CTgqBqz2#>YqyNna?WZoru0H?K{!mkbJ1Tk-QWRil!Oq^r z(&lyxih!Th2Cm@x(ei33lUJq8dO4W|+G!5u47(@qRY7@mFI@t4JIvN-cd?%`()T^d zX?Zg{t;m_!9;bn;T{$8XzV!kHHiqI;3(fnRh<4AH$!RKRpT3+Z4q?d*5i(sf?L)D& ziBm9SbODazk+T9R25lU}@r)GYB#^GYFg+2eLU|#PeP zFuba@eQ+bpuaj-Pgxc$8snhwwxy(vd=cYr7o7l3fJKIQkbEl+^()TGGS8T&$_zV*2 zvJ<7SK$$#bU4>t*oTpg|7+kSyZZl(zhu($)2p%gf9YaKlBR~z3KRJ zUK#!R=1}YSP`@6&Gzj;_+-K}};o~G+#eKu?9$G~U7wF8ea5^~Y_J9#>z8}vBX4!&X z_oQ@w)EGjWr+bvQz8=KKSU7~^{mMKGgOq1o@pjmc(95rJ$lJlz!JnbU;H)hNd|9N2 za|kX;WxqX*)oFWyY;?D&C?aXrs!=z31O)(1#Me(m&7b$m2EQiwUOJ7Ip?qWi@)VqR zAl~m^e4KvA1*-cum}Q5~>F5cJn==Uijdb$-&$jhH+=N7msH~vP%-0EudQ2>{rXr<_ zln%`L2R0>FjGey^S7tlDAioB6GiEQ@mR+6+TU@QRbVlqBcv#Mk<{iKK%-mkK5$E@Q z01lghzFP}4-H-N-yMpq_nYsGjl52FZ>Y|Ac!Tit};2Nx#R)asJYt#NN@RM z$h(R%WSwAaVXds5YiFyjFt%p(>!TICx0&y+LV~f$pNb@_3uT0c!!RWysMp?Pm~xZ1WS%C4K^RGix1nF*jAIkz@Dp)pHm zJZf(hH?!9cgo6Q5i3P)E2)eJ$-XSBT_YgMmVW?6W_u6g2 zTo4qK2*Nsf#vlM-N^{O9m^a>Gk-3}jp#SW)&PrQ=@7*i-M34Ny9nXPG?LKz|IV55_ z{~v^%$r+9R4My0Q|41`={+DAUr-mVd`Uab1j~*=R_vsV#4gxCFV{o8oMBsdVqzvi- z68E^e{-(XtnzGN$QT*<%Mr{OTN%O=)G#ttsMT=F47fVuzyJ;HC|4QYUVXl2Un&wWT#P{&0e6iWli97I{e} z{bV5zGWt2-MPus+h-fic_AOHN2LLU=Pew;WG^+?l%w|#f_x@^r0OSpy;o_`ZMYG)L7B&G72{HQ6usw{o8S%wzuIzuS%UQwOER8Q)zPF8g61)`Ow})ObN(ORpO734u?(Ahvjk9$9#H=|8x$TJk^RhXb&R z3Lg*J_eX#gvV`=TF^E;kkapB$07lJ0yi|*193Zd~Z0;1Om~ zM<1ti6lnN|{PDf-qHGs?r{~)Ot2dWWk8i;EHzZTHxe#;4!#1GqE!N;}C%Bj;Z(5bT z(AdUYyx!Y3?WVhR@u`)j1!mBE5Z$I;iL;@-${MS8V9vLW^rox*n2h0pR?b=D*rhb( zKvHttMt^hlFe>qwy{e^t{XXY9kZb?46zN;$&yeG3k1D%EagBwi zypf7PcU{VMlIp5vADGByf; zw7-NKOm4iSi^X=WcC7VFG%$!>|N3CQitb>Efw7A2Kl)&J{&kmuHv=}*Q3bh)-=gGf zOXofzXgJ#(^3*nnZIsB!5=trNJ|fB3NJB!e_43F%@X~m|zCi_$pmZm#?0>9;v&`6w z#I^MLaiy%86f|XQY8gCoP@Q^znJ4Ib`7?dz+dJAPNUA~cR^|0MQ`^@1tYkA?S)Ei) zVsNuPV@b;IRS+G$5P)6ZLARydk<+VX%AMYj`ydCErazVqDX9gvRR<8iWdt&;lhNy!c!Bl!PA*;_@`xoyp&A;ForySuwXaCdii z4GuvPWa94b9^Bm_xH}{`1b3G^$=avw|FnDCJ?p$NdG2F;HL9vt^}-o^Ah^f&jti&T z>ci?o4?mhW_RQAM#x7rWG+`dQm0ITf4!^oCFU7El&O6N2H!e{5$9%iH6i!U5#RZqa9mPP2-ee^S)h{BQl16b8xSF8;9;&9yEB1+&ezZ?usd4H~-=EM<~yZGlToPEx<4Q)#h`(#Yt8nHF-P zthy4r7b*tnmR@73EcQ@hEec1$>c{wqXPy^c$NXD3k* zrfqk35#y%Ohj5QmpM^IBe{;mT~}T z+K(C8ku0mV7ovsrg&i!0;&9qp6lbVZ3fj4yUhLm3MADUKP=Gef#C5+C?S}FNOIf)) zB5st>LMJV?^xMs0Y}+d#?*rpiSi_ktFcYYgKK`3;8h}jsVR?gQeouX@Ly7w(Ajm0R zD7{+SyzJ!ab_)2SXL(mVb+T@jHW8lahU%g>sq;u(~lxl3&- zf#bi{Z<{9E9x>j~ox+rvv_)onW46h`si)xD_gaCHX4yBoT_n$>^^L71JNbe}msqIN zD(&+<6%0kuo7_E1fG30}N+b)O=GC461mkPof&6g<^(ceam4WT}WWlztL%cs%SG#&F zudyF!O>NOKKA76QeH*T@Jce+SuW7^ny4US{=qTy9>~L*BX#*Yk&x$txgwXgb=rS<< zm&>4Be@$@>>gy`Fptr7GTs5(+PG|#p1%16(dQ1Uzt|Cq~4pDtBv6Pf$A>rWo9*!_4 z?h@J3qmtkoOvZ)MlXf3;MAXFnMnLDoPW-l?F~57Vu>}q^LfZ0j{MR$?yNoN|uCJ%B zkBjbtAF;ak0Y2#YSjrJBj5{sHf%VF+)NHwGWv&5th3F#GS2&zxOu&3OHq`4lLlZ+S z;C3hlPAb%{w-|2X=I5_a$1zwdL(*QQZmF9E?wD}D;j!@@Tc&{WkUA_`h6h$fjK-3? zm@V3*j8Kk>9^Czow)_2LF3emie{A^@BW4=u7`DamPQT$YGOw-Emtla_Yewlv;iF5r zvf^3gWzt!pM1_h%S8jWxZo1To((D$-4Z^L$WSZU&d~Hj8+7IJ?{9X1UQ?1RYg>}<9 z6`(S%#i=x1jxxcNv4n09Q-$Ld!$X16=^f;9%XznU--pUR2p%t6@?n zK=}*^hOb1UyP?iko|ub>(>KMsroc!1UU6Ne#>Xi)2 zE6xED5HWBW#98o-{eFalyz{RI zSA$XZN>GoB^v$Lt={j*MR8qL>tY^evz&k6nJQ=O$iRMq~TwOq7_Z9xOP+Xf7hn#9) zo{sa;p2q{OO00CJoi~)c6LbN-U=ICelTS29t&{!diTjgDz;Qhvsz>WuH{71H>8GrS z$fUTJ*U#18Q5WjI&n6W!7;ix7WWDAvQd16RKfR=vOoA_5e0vUx_x;Lce8=01EOAbG zT|t7cE8+J^B)z#l3T3skSBc<`tAU)eJy@Yyf$?=ONm4mc}$P>E9^?7w_K{}Z;OrlSG6hh7m{WKn=R z+B$<_g$)&8(keM?kUt<{?WCdEV3N^j5r&Z=opR&BW#-Fn)P2q~Ef%e_b>RYplj!tr z=d-t>t4~=`lT}q_8mtNS#iUZNJxN+HVZreTtaa=^1JGM-dPt8bihmOppp} zcpLW7;Bi409}a?9E9T+S9Y@>(f-It1M~M_>+rW`87{UDRlYloR%9!?*XlP2C zd8;_@0g&AWa{y<39Fw)VDeM)B%WOwIFz}L2j|C%8neIRQ>i_vO>dp6L275|7Y->0# z8w@>@EI2dIM!NFds|?STjltq(FyIpzd@khHKI2vc{(TtMT2Hn6pbcYBU4ZA=I0}xt zV|mC9LekwA&dy*&_v*(0tA0_~(a-eYV+Xd@cMB;C`l+&aj$_JpDBJd>wM@E}1$9+{ z3ca@mQ+Q1$v)j)E@}g>AhfL~iH=jtn@!Oiuk$z847xLUqqcG;VBl?sTNS4WbiMvLM z%si$9i6RA8(5+ix<@WQlTK(191|jlxCy{!D;-V?oY|*F z?c$%(70ONFHecoo7ib6y-7rzZzRDZMJdqSNW_jxfUr)zFl?C99p$ZKMd8}e=diFGi z=#X3Lq!0z|lBoNMgyE$Vm&xOr4Jc-i+lGXIqXvupy1;TjzH6EyGlYl;qV;f1@Jug> zdoTm_*l3uaP;VY1dI=DfLK?jN6{4M`mBms)SK9c$i2fF~fv zDky2MC<_U}h9qbs*b1&dAV_UiF{{)wb~JW;3|L={uBC!h2=`}9LpDiS`(8$9;8j9X7N~ZL!bl59x$iePP_;D_N{IOaH z$6jlCq_MoQOCTdjh7YhYr}vU>e^ZuchyJ47oj33Y?9UA0lCdM>$f4F<+m@;ha2M!; zbF2dIR@Okz3|Jj`)lJ&+*dZ2&nQ>O0Zq{VjYmQBHqG>{_N`_CZqM4Uc`x>7F zqpik<0FZIJAThzLKh%&)S4iT7U)+6M4hr3UcPvs;!wNOBj#5)v4sWv+tIUuO%T1n; z_!-%KUk}9fmHSjySvq%khA*g$+1|B8F}rK_JR2p>;Vhfu^!Ud3$g)B${8RIjuK_Jt z52Exi|1G8W*R)fpIxUZ?1aiP>yXk~2p$CPbE6!oGqLmPR%u`$q)Rdm3$9f-kheP8w z^5mq0a6eMe5*m`+^9R4-elGWLg@xPiJ}K*|yzYBr8L2N1PpgO@oF!Q;ALbTr?WH+k zOEdJB7ThBeUcjrc@_zb6|_xgF|qrOQv$ z|4KERs3sW3OBph6H|E)GR>Evl(SKM(8Ltnu_AbG&Nlg5JR^ofzBSA!3HT&la%ye@< zmfG|r6Irv?3Il;-c@{>4H7$)u9!TgYH3h3UO0fU1Xxb_S9OkGT*1nmlJXe-qQfsp( zbcPTDcB-w`9NE}+WNy22N1Z}CeiHGuY#yFUUms(Na1G*%KqeGIkZN_~h{&u+$lX_s zVDZp zPHG{86e9XXGX@P&6P~zP#X)VMMu8r4sM`xgHTtLE5SgqVb*olbvMkJRa z-bD#S=61ZEha*(45l*rwfX|1z{Ihs!>CU+E=07}H`F$Gl#T9mzT>NY!VIkl1rwp9# z#v`|VgKj|o`byyu7+<}}=hu&;%S+Vu*`JA*=M(Q!?m!4v61i_k_1 ze5`qPa%asPexhDxb>rIj4)tcWgZ?zB`QtAgcN}lH#2CjYbtH6%_>M#|LnEc4L4zFd zFV$bJzy6^HP+l{h8v3g}0dM-BdU6?=wrinM)wphs<%02Yh|pn3434%xr$y{yfb@0d z_1fjgbh!c&bnkPd-9jp~uzSmJqNUSr3Kt}Le?tf{B{VUm`mj8z5fP=5{fSIl3cI+? zJCV0k=hK$oAbXMf1i$;aAOu+B4xG_z3|-ppP3z)zOII;K$MY|U|^ z;6Aj4*$=4-Y%J?uShD=Vfi8nMC+@Ut>See-opjjErcb&G`NUf43QNXi#-%8fUJ833 z(D^e=(Y*oH84JU7UXx_5OD%Grr!G}!GcwmGO{`eY-$A!seiYOi+d1Y9j4%4$XaN}< zN6kK+DThGeJglT9Odeq3!;(3cY2VM?=9m8GFcLOu;3GBzov9`Vt!6I?Bz1XI*|JgI zeLv09(i)fkpfR11lyDNAyKPD(Z9`i*T@ClbcD1aAJXWh#51h4RU!=Cg*uw~KsTAwsG18w@EGj}3 z0Timur=w>?xnBUXg|a%vPJc(D_z9Ymr9kFP|(w)x0sh)G3Xi|2JR zP)=mYYMA8vf0NX}Jo$VLEn; z?2%F!9y!$ygrAdGnPl}mWau&_OJ89El}P3c#F<8L*PtrosYh1>XAzMl*iUj1TETgQ zv#O)*{X-^ae<^ME2UBue6Dv2tMF|+QMR50tD==vqbD4;n_lJ7J<@%u!#($v}uwN%{ zh#Ku@U~EcTq-s`95tLGr$V=E{ec};L_dl^i&h}RbrMUUCb-Fk=`_LkO{Hm>gJBSNg ziJAHW=$m+R2)`$s8-QDMJ#TVwD|562Q^s|qjS|PiB9rh(H*^UVQVAc-PIl5esh-3=y9(0X23p)s;^>XTX@AD1 zGn9O0seqJ#e44jqTgX;^=u$H$!`0x8AM9Sbw>||+oMX|wE^f@gq4znCYfSMY$EjUT zIFj}3q@FEWGanh1^(>@zVA~xpYM)PNll5$)K4aTmFIux0`6|n8KJrrJJ(Yl%eyOCQ z{KU4yUbJQ}J)eLpi_Nr4Ba$@Z@Jl#iCVT(OhpW6mTf_28&C*TNsKUsiy`=xgqC*7xg}U{9wta4q%%LpTY_u`&#Zc#LVjtqv$A1 zsi$(_s!O}*%5V1LxeFGnD$AwZZT6Yh(oGuts`y(6c#Q*(fO<}LUC}0$Gb|Gvpo_Y+ zb}G;}lUp*LEu*Loc7`fXJ(Id%e158+?x6rb-{?jFOZUP?bSl_PloH=ib)i`rz@R(A z6@}gR<)iknAS*=u4$|8w#lt<94iaDCx55guEI#>(e2VCKh#$+Uc{;HTJaaz=u9KGGkAIwNEuisC3)!eVrO=%gccaBzEnNka?!fZR8 z`zRm-hj#Aiq^Xjz$_&wR1#S9ei=##z9$8Ubi5Gxkzfl`N;_8TkC;oXx^mAO@w<@ev zo=H7>Nlt$FGEm?tN#jV~W)!tfiw&$oynQHT8mA}o63fqFtR1q*LN^nk>G5AMJAp#H zB=JpniBjKbmv*c^y8lkl`|S{g(2Re|qSDl}jEIjuib0z6O0pG8ErVAut?x^) zgyO|>&rOv}sUw|_(s`p9&PV@{InwDqb5W!Nm&;{0fw){#Y0$ya5i>Lp@w2!Vz(J*?vZ zC{8dXX!98ag3BlA8uR1x=Ace6k8b4alS8%j719*cDxrG>PeAuk5L^H_DngXj`UaEe z#zfH!AMoV9=}WNTbf|KL@*=$Uq4GA9^tqn*$@QDy(%IUNRrU-}@8Y&@@%>6Zj`5V$@%2OVARYW6RZAW2j^L(}*Lu z@nz%)aNu}85)DOSFz@YAZTn%As&#k|dMmd#OZzo}W{em$!rg>Y)Z}02Xq9Qcc5fR6 zmw1E@aYWA}APV-h#~XST+AA)z+*qfI#C+C8c7lzUkJ(nHse+c4S1j=7CsSGW5sETH z5!N5sjeCJcjtKvQdQ*YJGH1;_7dlg+ycEtZdaQ~zEKgo5U%k^$uWqYZRHmiJ7A@gn zOW7`UzA4xM+O5iOoLdDK(Vk_qnm?S&FcfM>S^r{mfPcJlPz)a6T30kJPHLWn3to2h zw!BpGs%v0|AkqS|(FN$=Pke}rbtT*b|%aj50?z+A5`nhP4mwxM_7mUX>% zj5-j*yBJ#6u!5=8H!4!a*2mhR4)O_p8FJ`UkLch5R%7L?^IQ3p@Ef*UfX_{6zCM7ZfEdg%9ZDPz=I`(MHDQk)XN1iE)n!u>LTvy&7^iBbfU1PXUsVA}5P~p8{a*Vg z!Jck}C~}|uN3deQ@)_`wDwsJ;KAp}8MZsSyS0}6wWnWqgxOsm zQ+jNGp>aPYRFyVb=rqLor^cO3*Qrv`dnnyhb1|9+g1`r-_BXI8Nqfe-X8-|TprYrb zh;>+!%>I_A#b9ZxU+39ZumETmiJse7RyJ;WgWQ1nP(y*B2B3fnUqbCb~9~} zrRY=P@|nTBXHOYRK6+C$B?QE?43jkfL40BhSW9GS(M%=PZ}eRqDO*t*{9$UP!!E~f zpeifVFc#4h-GZEP8?1wDbfB~qd{~3SJZCJR{HC9u#i}33Y(tqTzYwQyjODIOoW@R{ zYpwo?ew#UKX>Jeu*IV%+r(%Lw8&!f=usX6oW`&nKQv{7h-VsBf{$N<7@8Fa^26<$< zx$2G_NJ&c-nwQxWV!xMd|u>oHs0LDdsP3sEdP}D+fiDo}sQxwo}$| z3%3qAVLdAMW#`!>9^cP>7q7YZMjn0DyRBDf|YJ zCb$mgVJ2ieSD(Fy@{YzSd`@eZ?ph)$i3cA0If**H_ zbiDFaTcAnM!EB_-PauW8E!~>pYnwYv-DvN(9A@Ia#U8YQ!qkr&naLRDsN%;{Q~CFK zok4->W6{|LonRr`=shk$=q9kV)Be)v7_2UJIIB!F=8@BX^n$3#t(7RgApu%7i&~I2 z$cb2bBv%GV?m7$9BhZnXrWU{m!TlT6I)3QbfSb&)hiqhpAl$#4=foR!4={m@!>!Qm zsjAwdO($<0r%1A`N@WRUtwL~epu#nnP8o-_iMN24k?}OWK2WD%r0n`lKH>{_p9T&r z*3NJ;XI8JTh0^E z;-4rQ3YrqsalPy<7o-zXb!Wko6XKtl=fi{5xdqoL-WdKSRYJ7QIg7D^W^J zr6{K?mls4i$0N0nMWPy;b()kq8w}cA`4i@MPCY1{O)V;!%yJp-kg1Rw^)@XJ80i|{EMLth`c~6l~MiF7=ql^zYM#GN0IJv z;YGa-Hl>2wG0*YlrhO5Z_jmo=Y-3a5gGgPk&);;jOma4hf|I?<|Cnd;)~rj`_i9ixycciUV$ALBYyh!vB ziiPL>iy;pL3+}Ejk~uJTEJl^WUUz$4ZSG_GBRWi_#+Heh2FfaA@xJSFdjtWds&(5X z5MUagS3Io5^f|D=>SR&uB?`@6ojA5YVFB8803D+r_r57ce#9K2Wrn%K=Bbq^U7C4* z?#+w%n^p*%rrjgH6L%~mGV&MNI&0Q$;OeU}DL*;yc!trSm+(zq`;Os@t&(zUjKT`I zG@^)I6`0s#3B9h20G*9j8NMXbF%A!K?7>X%S!wi43;Nu|aFkvESavjC(r>o0&;9%7 zWA|HCC|^sDt$FhRFRweHm+GO1(k)na1y+sJdt%_uZuBj(9Z6*DF{#?8eNke=M%zET zV1#ujLa6T@^$3$=48nJNOuz|4U*&MR4G)_|I^_els04qqA5&-V6<;go#eoI8 zI3;p63>x~_qG0WgS=l-%sbjX+CH%Oq|E&HVR&JM;gEX0ro{I!L}n6?h3E;5%|V`1OVKglX3*#EUBMHVFxvE6#8q{{+y!_{T;QpdC*aG?wG9Bhyq z6_H&T$zg~x(6WKLL8Q6ct&(WesLgNLO3?$!LFI#g<2kAR8_$VZOYW>T0AKIg{V8aw z(HsrlCX;Ee?c?TejcKqdOa>PeNIXD1urw!pLw*pIrq%9mEzE8L2qbaH#@ZAWv+47OXYs(66I)dgW9LC|%XR&dp}>F3t59q7bZ0T#*@21FU+(Zz3#$KvJ@kFhPYV zs1U}b0MVUPCOmu;j%LtyiE0ogKlxf@FA_~#zK0A{L?5W%0KWP2J)pDvxMqre=$WD9 zh5nkRh;&v zQz|Te-X={SL>ErhPgF*$5a)-9@00=cZHiYJkBbWuyCj)OVJ1q;?$LseKa{5RKR*TDvaj0;uw}{FTL}LE-Rk$mE|d{@lIn0;#H`v2rd7XON@-kc z?B+Oc!dV@*r~0O^FL;mkPPbvNtbf|KJ@Tn%udlIB*1+^)oSAz%L~r7V%QGnjyn**P zj}hK7WEfq5k7gfQ+gJaNL8p2y`ba#f(ToCi$E_R8UY{)_*Y+@3NgwC@-LM2m@H%-3 z_yo_%uX}h>ln(D^+;%YzAzGhD?Tp5=Hz4ayy$M}T)5{jVivKjBm;@Y=Mcj(O}GCnLkiX%aYA)K8p!$;2=o)d2~LFxz(DVZ~uqrhD{HAEY?ktCKxTjn=YP zuujkaK%CPx5$z0{OZVsrE8Kbrwq!}${jf~Aw2DumkcBF&lR=j-<+n->2c;F_kFKXs z0wf|;t};^{$DEj_U7EtWij5KOUhrB1#G}ZJ1WI;YIuE60FSTvqmHMBhF<|2Du2bLp zjueq7skS<*t+R-{0SQ@%eu;wUNtj$`M{Oqf&p1i3iZy}g!r5x^$_X9jnSsleI&P@F z$7%)Mw<5w0Vy#If>a(?)lN z&(g>82n@<78;E#;X4)rBr0GuY6yU;7{zl zLgX5+ZJUSK&n5+2c>brqrlGW=j3H;xu$KQzsfPPM4PF1_WX`H%jF2#ThPDgoJm!7- z4DsK)m~Hh$GugIn+{NZPyh}>vqj=tX8STO)8S zkG?^nh^zwD7slj(Uw)$l-f|-l-uu4eji$g-W?W$O0H>-X)cLEIeyIF_S$S&g!my$% zVODk+AAo@mW5&cA>C??okY4OnmmPaT>#mp}B$hY>gfte(MIG;-02krGkitbKdzE!O ztTLqy5=@;W$KYI2=XOFpEp6@aVXP+0_h#d^0>auVa1B_LA}q33U^#m{>kgibT~GGD zLbEl`-rZ_r*Fa|k_LvuQBsb&(Rp!sr9hPMmk_O6ceNv_0ReZ*9EPJ?~;8+wH{~!?A zcLX8~;E%sPcOtfEA4Bd1G?Df)ZOCL%RV9X0CWOaAwrWL|U>ebBOPJ5z#wr1^i}AJ| z%Ba!iZEMZwwmZ?6VEfwM=8kd5^yD@RrwE2lrsedmz*h~Ia_8|X zDl7`3rd4DYHU-7bKW=V!207DZ8s7wT$id&nqXdZF(IQ=X18K1x4Z2-*C7!rgp@D}7g=eOd%u9~5GKIhFT9-*ElW>1~Z;*1_1z32D=nPzM2zzlq7>(mMyWpjo&4w-@t&+$8^Wd;RYZ(OnA6*cArF zSq9TKVNkbyTjqPWeWOnPf9RS26%5|0m@ms=VSbx&Huf;V&HCHV`xTZb3=_Q0tPV+O zoMe2z#9AECp&d#V;nV;Msrodp8a|gt0VT|IY?x~9ACUfy3f#mBD*U+3xYE}4yg49> z0mM(b*dCIvuaKl5*?+!A^mOR~@ssP|A_%}Zd&dJ}N10N#X#LeUy*1Jlw>(t_b(erW zojI;+RBu#$?#wr+r^r?Iw(nP6rD>_HX9FJ~VZ^K0cbLZFszNTmXKXQB@7sVQYJ#G{ zwYe3>;~UHn5Mf$thf)tlwq}GAh63Snhsb*F*QQl5HCN~A8KmpTN-Mbi++9a1hnjD7Wzte5@9B) z0)=@_>wZOnZap=fnhIqljscp)Zo-EjLfrfWzJyK5Ey(=e?C%LW`yIJJ-S50$TC8}y5>ZXN`a z)hA|B5p|ei=Y%LO_SWJ@g_mSYK13l+k$HN)&|b4%q0$Y;QE6f8GT^^#Tge-0d!veW$FSm)P4k*V+}jyT|N7hK z?)B8iJ@vQm+aJsiefLSZU1a+{?Yd}A*x!?VAZpqV;4q|j%jm8tJyIEA(S;iQnemun zBc}Rb;XcW*;)SJ17O01%DjUU#;I5ol1|{bDNGJ4}nZax~*rmHWW9 zjBq56ub6pgyyQTFj|!)br;4BJh~H}jG%=4#2n#nB`nm3Y0NqzrIcmN~*gQ7ur*Z56 zS^khjkS_q`^(7&ql)^Tae!TJ5q zgL5f_PlwE$d;ndltO&>%eYtFSeQA|UlYnTWXsXyMWlibxWgBmOL+EA_xM%oZ8XJY} zjB2rB)PfI0LmhTffWEUFQ~c6CwlO2wAvXCnL%y^S@LuMR7g!>}2*%=?S~SDlkl8SS zC-4GMQu7iWv#mXprJZ94;R6HyIps|xpE*h37R&SKb{;*r4d`K&3#+J-M(gcF zVvMq}X-=ez@wvidta&r%Y~#0w#?K*HcEiRjXa}tj_L0?*1;(p+v7!s(FG7-C0!{X9 zL*^b>Mu>}^K-TtFx4dZIUx7CC8`=cAU)rA3)vU$zP%F*uV&Es|zGH94%#172+C&En zms-I-4e;D-<1zd>+#kDQA!Cr4&qGiCqu5B6NZYPT&5FlSL8h0I(dNH@;(>7G5@N4i z$JR5oSdth>4RfjLj^|;j%A^I%f~@^hUfaF@BgeY|c2u}g8yV|}5;_vQLb{1pr9}N>nKvz~c3U@{%;TAUlGTLLf@tvmjt!{X-4OYubpxhHmpNrFo|`~Hhs_+LAyH` zyUOZR$)B9E!csZ2Yk8qVb63`n`GTX*YXV~YgtI|O#I8iEs*Q%;EDexW38k~esY&Ls z#ilnF4!K=W()1sVk3T2lsCykLGm7eHz>j1s@19eu8^7pZ zLJ-&4ijLwv5&nVxaAAkq_V{qjD_Yl@&qq{~Ge=?m?2%q-g{K}(zpVBvg*;bY1T7hS z#U|afr}G55D9RvyKmX<8R^TcG7eQuIdcePvFS-A^mMT>L-}2=x1+IU$=$^WvIjw0q z(iYT=D`#E7SE)tpcU~eE#8bcX603I1qHwGua?Yot+>?JiC%ErGaq$nd-^kmEQmRr0 zs;!eOi51jXZ4Vl(xr|h;UE?Rt%8Rt~Fxa_~{FR_a*--J;z(t8uBzZM=ekER_n*RCV6abSOVJ^)NRzH5oa1*3!6SEs3c?QQ?h!APjKeI`nU?NDG#| zr@e;#a5xf)n}>8G_Ai#64AkEqo#v@!<_*()Nf%2LHNxkwf>&QZ{qZv{_KVC>C{L%L z*QpR7N&#VhFEPqwNSQ?iIIJv zz}K0_Ed>>`z}q0fFQSxOMi7Pkv>8=e^hZ=wYIH)n)63`NBJGdH<*s^zZ1Es9*+h5~2M&jd(%6?6 zf8uc6Vtf*s#B84Ny@Sw|fOp9bm~2^=8pOEF6GXB#{Fce;85Nt94yJy1(wI)a*Y8Hk z@F-}+iptgJyhld@g@fd8;o56*>-PufT3|b>ST=m zyqK=DDJ7u6dh+;~pku1ZTjkPkfch0Zzc>Swmt#b(jf@bjJkxQSY#|CY0_D8p%@*>A zaQvqhC;gax`Rv->aYKd4K}d1PU?3#db?Fe_Ig6u8s488;h0UYwxk}n09_~lLSFup< zL=xq=Nxf~jk0L+uGxr_NzmqVcfBaKMCmmD+#hqm*WBfq~iu}m%QxQ?H5&kUnm%dO< z7M!qtn0{)Y8-9O%b-QNL6#xtsdKK3j&!nv90x}=~kHRHDLD?r2A43LCOi05)EW}t~xsiy|$I^1K=fE&56$@mTe5K%!e=JVM4mf;Dgaj4dK_22&sIhC{u9rsf_>T(xDXQ%d^y-_0NtSom&rGTAGG} zN~ycr;@?0EobCum$s_ZU#0K)BqM3NK+i>_p32xn)`N_2X-GpYcd1-asB9WF_)zVAl z22fXIeVmJt(C|mG;yodIEr4QO}RQsE*X{L`j?GZwVoZU)~1+o-9!ih2Z-Hr zHBA(!hO%zWWGlZ_Pt>P3`*e&UgFy)}4SWw|60^_dEQzwyhRsFpNn7S50F~{SYf&oJ zv6nu_Q}8)g^aNQsYYOyX*@-_bleuLg4iG`?aA*BV&r zZ>y$Dq0XFY`}Rt-#g0RLc>1#)UL8H<#0UGe-8i{Ai0KH-e{B247P1#OnXeyco=1qYD(w}l}158 za2{$dfEz4;YoNC)4dF*#H4e5s<(sD}9|@#^+p>v%cRZT34E3VFn_?;NZbV?Ha5C-` z2`{f z&_sV9u(zdgZJUoye|Tk+r+q$7_|E6@@c%gfzrqFoF?IZ-(fv<~EY6?EUs9|)O<8L7 za|mJD$*uM~MdtRuQDhdYgE7sD`L-O+XX{@l)>2vP?uI5Ae}ACcfG}EMf+5MShuUb}=vaTUpNJVEPP1GCniKR!}Km9XyuVpV-tgpcs_G8+AD6(8TJzA>; zNTW4(h(14}{7?Ffx(8$co)7V947q>x3YK@hVp=4{O?sFriCu3ey;SOe)cdZ(i3ijn zvsj7gCN}Zb2$JZMFhTv_5xTGmO#NFHjVe#2%@N2tRYq%jt=vqiq>N+7hh>4hfl=4f zzj`mXW}H+9o8@r(z>SXMe1Enx2gM~biN*Bu=Bm>R{p3kn0d|ey!_7O5o%Q|?hRokP zCCs9+?vE@@)>`71s@Re_;JdxLNl!Ra-fb*MxcEul8=-o$Tq*@FR^U)`B}Tc z#|hMv>yf*Zs?DO2mn-S?CY&j|ed;}C|FL>J6gW|9Rg$M1ni>Qv^yT&BmE^q0#*el$ zf^zA)HiWqo&-?Y0@Kftwf()aHgLr`@O#Kn56;)e`tb8DYiB($OqUu+@61!SW{ygSQ zHkIww)adl}Rp!y2{0{7u?UH@ZBbPqmyK+$t(aTY_=V2#E${vwrSPS_EYirLu^f6b$Vqq~5!tapomE?B$)ee3dVuDR=-GP)J4uKS$u}K+!{oNycmbVkmwh!7 zbpO}B#HpF_QvH7<$lyW!FD4GAW=;moO#iWJ{Et!pcp0bR`6sE9ipU``4B{WB#xtlo zFTK_D>F3G9yMZt1e;N4fa7A1|Y%m*W)KghAoy~9mLBLe{NaoUfgwr11cWY(0k!MR1 zNLS5Em3M8;4YswvYemQq_2!6}Dr3Ree=H4rSEKjzK>j68(=}loD83kIyL9pCY68^3 zL>r{nPuTe9UYo*{M%~0rW+^DG(EpIZ6Mnev&?@o?(m}OGwYu?Xf%?6iyNR=JZ#}-- z=6#i$&kmJ9W%rH)5kaH-kI4@5)>Rp~U_^c?1d%i^SLI z-GRb+bnI;odjM)+4K1Xw&vT=jHVobDB(i;*&n8l_iGaf{cazHhskI6TgBg{AR15Sg%mIKrO@q}YAw zgNpSrU}y#@b~+%%4*FfOt6X|l?4009y$aqHyANJ4eFFa|cHpc}AjJ;*-JP`etnD}wzlVb(4NwxARPCAutIK7|EXoWFbuabxE=u4ZjGLsDS znD@aTpAnUDMw-KTpozM4Xi}Hns}H)f2T}YELb?$;4d0?diC-`&r)%w7crlJ-qqav%zK=Ln%uBZL6rZ8v3FpuY|++0 zyVEf`w%xI9+qOEkopfy5wr#6p+qUhudhh-2J*VouTRT-NzhKNczwv2^&>(OTI9O{) zzlsJu`2Peyj#P3;h0WQlrl3@yK}DNP0TB^YsrLZIF>%46JTH~{!h*BKL_?72gTo_T@%&cuA$4M z#`=Q#cELZcAq8?%Oz=OhAyUWThZxiULL`^}960?C(e5t?1^70=L4jAtCv_l5LdA&A z7$HyBY>6U{OlI_*v1DIRO%y~Bt(tFe>4y!%4jpY-^efuKQT(kj_^Gm z+Z#FlAQEd-CjkH=QBpa{#OydCgw}#mr0w1*azX$LDGtS#sN!2A4PT+K#KPrm3wePiJ&3Oec-jQHU>Zoj*knNdgh-LV72z1}AM{ZrP(#AQPb7D0MZ` z*fiW3YC6_T7og_r1~_@=Bpq8K$k#9$|+Kr}k@+ZY)b zoC@&`cm-XLf10$YjTc{*}$z1CKYLkT5Q$C_>#K%YQ{ z+2wgFl5NV~C6pLq;xE#Uk>4A=_eCJ#TC6>VGpaJ^(+7AckPP`y3*-fjB!I_1j959!1BDr@zALUCfWAtp`SmuD!`XNS5FXfT_u6U-t%A(u$8`a;I_|?;u+pQ0 zOADGQ9p~9`fL7PMtPjxYCetq&m>=H{T?Qw5ZM~5Zee5||cObgTIK4gg>;rffdY24V zM+mVJJ$op?a{s<=>T`Q&TLPGI?SK7J{>Me}A7Y)AUEHgb#)|w1HeU^azN3aH0CmHT zJ8>)!uUgfuV|ZS(n2L3a-f01DH=bDmjB!8Y4!6g~QZCmfQ*e2@Jifv8arcE=A?4Nn zvBf1t6c;K}Ok+z`EkJYI<6+u`{1x~H)r>}f|Edj|Xo!}m377I%&|Ya7+8mI`{Dena zZ&6}6@6k_-(kx8i@*@|)|*w4j6fi*;U@-Ut;@hoT&lwuwJU zcF?x_Rzli4PwwVhSGBqRM;j@rg7e#v5N_X80`J#v&^vPMG3(=owa0>HGX2pB4SZ{c zXtps5cR(z5H30yhAGBr4?oSIxQ{qN){jpepakQ^FjjKU%+GUV&&Q7kIsA0&1q7eNB zXeQ)MInvCo1_vUw@ixaHc@9 zDooW@zGEc%RV2%LXRdXB4pd+fm`a;^50HZIO;PL~m)Kv1yPgu`9JdXUXMomb&Jbjf z1g)&!u_k5}UwT@PxU8i_IQwlcmw`rl)BqF@hC-4o(!QnQ_0r z;{>{94?ZJ+hoJCZKLr1{GXM{P9Nhm{r zFaP13UT&llL^X>aH=0NRoK`gMOtJ6$e0oFXMXLf=5Xyuq;hd~RFT9D)Ns`F1%u}tj zVRp>6W15s4B!_!GTu#|f`PyWHYPwxnl>HiiURY8Xp0SfjAI%ues|(UTZV?U;Xw0`Fr6uShn0BjRks1KhPwWZ!_I z8K;?`8b)idAw(k#U!#RPR+yM8_qX-!-=MG1r|%81tfG2+A48v&Tm`C1>5w|3C!yOP z1TKWQk)uzH%*>w|R@GM-jB_g(X<$z@9Gg1@yywr*W^al83M4C0?GS+cvxf+w3++l# z$7)qfx_D+Y{q{aSB1v&11QpCHz~S8zo>BlTG`bl+YUz*}BgL68oV_yt@lUE8(q5+_C zMUz?nrpzAlz=`dWUia^x$i74CbxFxQLpMXIYR~`@nw-e?9q8*KD(epSAu`sGQoT06 zG}}NDmjscK#|JO6)=pb=(otE^F+#q1@E#&SD0!O76}w=vo`$$!{)ERZP$krX{= zxY{&6bepP9mRy3arAmy7loB5qE@!caeuCd8jn}l7cdduuo;!&w*_`|$y95O1hkv0X zp|vWezuqPc_@_@O${$}+!ql#AGOZ+tC9pFAipsRrYgd@Nzim-GWJ|7IXq=lFBs;{W zXH~`@Us40Wseym!tuUY5dMSk33h};(L4IU-GrKzc{!>z@Yg`2v2M!b)&TU)p_wMhr zTwgwZi4zl=TE?#C>T><1K^Q%MS_dhC{7uoEj2~!(KXx*vMicR{I2Klzy%X4wTlbT< zkQ=&uv?Wq8E@1; z@O_QrMHqVht#sZL-OB=`sIp)dDNl%lUFiJSUXvYa-NwlEddV(K3V(`8HJz9s1ANea zY6KonGMQFBgUD&Z-#eseB*<=*D>D7*HXDvoA@UZht@5(q)Wd4C!{o`x>xg|1JQe|D zORKpzVS8xN(j9$>oEQ8bvgNkbYC#8M66KKre}y(w_ziAlS6G{9q$NDsl**u1#ky2B zv2}^AH0@+OrN;JX%cS)w$I<@LHo$e>xJkFY|yKwEzcoHS#n3qAD`%-avOm6pE3;mcam)9d?FPURbw#T5*!ne z1XH~a9PV!?juMH+b))}&y-Th>?eK@#;$B>gaUFV{r#wHOo;rUK`w1aIO+zZFtye(6 z;M!Yr+R$IQyMUQa)xq4NriZf&8BBZO$LKEyMS%Ma5m-St(pMp4OFEwuhCEgMEpDlV=$9`-2?~ljKN=)E183N|132 z@t{m>89K${_KFJ^b}$cI^W(6 zhO%wCUJ;#hv8S>fvO3O9pUpMw^PNRF5&i*4Wr%Oee)h`uD~<>UgetYGa6Qs`Qnk47 zFXn3vsvVj8`|Le;i+3=Pm;RAXyXL=jwU80LDW$cE+(eJoYttt}zMn%5z}0G%9Wmqf zX6vb_RmzdkYtx2B2A3YJgElQewKbTSGElpsA&c91NlmPeHc#*hPm1h>7zIbe50yh*; z?c-m(F5h>0j#2I8&d4w87j9}SB}q&oG;nj zaY#%o)elv@~iXsIN*(1@emK z8(<+l@U^E47Yu!3guhg2Q8KKmkzZk|=Zfh;*6EXGTINlo4jTZ=33(KPa*z7;0w-FY z^||v3=w}O_*SIX13k(bUSj9~rVS8BzZMy4+kvYt1js~GRdeP}?*6iO4G8-M*VyRmq zO;t#|)o7 zhAq44kiUIcrEbqzqtzRKUsOScru*@R%z{B}cweEo-Rsf$mX29jU;cTfs$OAvNG@zc z7pfON!f=VI+{5bEsyJp=M?qYXOtq$HtEPB{P-#)N+Z-y^6{&(g@q20PBz3?OpR8G! zYgZEuJ+Kd9|2Z}@WQW}<|d5AbrTTL>>Zr#zL&oW18Y`gGk52Y{dQ^SWx?AkJB zhXeXGJaE@$^**6@3h|X{g$3UM2gE1Sc&Y7R4qCg)I32P?C+V@0$EIBfdlRN=hdNYF zTt9@}g0k~BTqa|=^5OUKsZq+*K`Y9({UGhcgrwH_EhL4<3u>xeKL45PXm-_!de4xNG1IuI60gg3~=#EA| z7cJ%V31r29b#`9a?h}f1RbErbQ;$a9spzyo@Iem=$pYOy#9|UhAq!nw}Du{)4I zAW|Vh$P~kUG0aQg~dc*h#^0e~I_N(DKGredhP?#x$k9J3 zgF8g8{*C`h8RYz(GSK;B*m^vXo9 z5IJqVTxm*WrrPBQ<+_HOxmU_ZE*zbKOyy+nv+JF5C`TtTdnsHuWv_LzR0!XNn#q|=OzoqOhOEVAE`eR z)fQmxhmsXOA}f$VN+cr$({BBetd7|tkqx9xx8cp-M70m>B-uq#U)k~zG*Md=Pi^2s zyVdHu!u@UHw+My00`dO6J0B2s#A}Yb_79g{{j_v|zhEo)i6q0QwTB5%QUSc>KT4_< zij&meyk#WnU%VwmJb<_SM@hxk0PvQ?;jDitsTK}aO1~*0nSSkh9ureb4}XX@FsM*?|OE z=3>M}c5=>{ED9OD?w%9K-ubJn0UZ?cVt=DJjn=5llm(J2Fh(WNsO@-PcMEdhHE3N zl9H;b>Ni@GtwAzgxYjJ(2oj~J#}sc)-P2Z;1W z)mRiY@&h8hrR%=M=8eUt{?rvCY!qq{CkQ0(i@BK8Kpj3(0MFo*+CkwUc>)@ZB6#U- z(j#gJivXDVwjpPqeH9!X$p)DBR`gV73HrG65F+ZjRB*!>Akyo95wER(Y(_WKoO=Kb zKcB`__J^+Vl>3Z400h|unLT%w9mBMdkWuRJ+aOMNT|6DaDwl<^{QXtOLmS>PEA{rE zJ28Na!Lnz2L;9nL@kIYQx)$FP<%pu)aifP9QXkBTdiqnxlYQB`cI~p z5b#p(<|UMj`f)GKASn-A({ij@oM| z(8>B7PU;+v5H*+>a7cTs6KNFv3BTdD;G<2u?pPXJ^o?UpyI6S0XSqU*I2D%jXK9Dl z&(}9D>f9$QHagt_mk*&c5erwO2`yQr z>bf%ka;igbfNzxWeUedyB~1z1fGQfHEV#j_^5}_|KrY%@b=rb4;dP%zqlcn&P=UE;tjd831+mBAh%&*l5HJqwe1o|T3%SHx7lcYx?H%6ceuQ01e)Hm^TXN2g2*3E=y+h(lc zX+DNAYn(b@_nm#0E=wMQfiU#3Ifg?yp2X6dLtZ2Lv16?F(CS;gFR=)F_|xMk?FB;u z-Xp-Umn_AStDs6bw4_0vSZT%;1Bho|RB2TCqF|v+{v*+**Nl!${aJaLHVYGGFy&q> zMFt_N9KR_h?CP}Be(O7`V!5mH6L#0}NNJ;XI~Cnt3MO?S+y%C*j-uS%98+)ACxas{ zew|^;GHx^QfIu;h?zj~4DGu%hVq_ZE5PU_Y^QV7VjewLpxy8#@=7QrOe*+HbRU|+! zi>U*6pm)O4uVT=`-M)!3mvB;e;g9%HC(4N@fzd*)AJ2qrUZJtjedW*+I6OWTsDbN< zShES+(I;?v(nB(1W4`kU>Q!opkydjS_${j!Y=x?InmrZB3^PE3Y{6n5vXT1y8=#XU zMDA<0mb4SF3q@LNzmdDUqwwZb)%Daq4ql%0QHNQQm&3hUqFS^lg;jEwRaDmp){h>i zeK{yvUR&F`uG`$BA+9%6A@B>iqcNYq`S24wf%=Sd^S{cL*%c(e85cy!tUDRu9+vWL z%oHLHE8-@#H%6IfUfULCvC)1cPfP4N7a~?&6(_Itp|mB>$9mdmto2pE;9TBx#p~nK z(Wm7nnVjX+ZkJdzliN|{wOH_Bb;(&L(A~UfyeCA-z1>k!}E+;okcAO7%Ly#$xFoU!8T)#60fYb?J4;@p4O2=P#-RiQHM+SVIuXjFxh;U}eZks@<~Zk1uG6 z3A2Z2Kz$tbCaF$rAW+ZLVQ3S{n{*5)45~nWde+^S1a)I&TZXI+-j{XvOAlR^~KV!e5kI4Gc*$-RWjJ3^o80*5)BO+*joNv$gxMmvDZ|#dfkm}xhPP2 zrSVgGP6(ItLmsVe_n2>q3yDXkKtH=xr`y#8ozb*5mA8oJrHp-opZ;$vjXJ&t*J z_|A}ue!?&C?VKxvOY0m`{kau|6&)p@_vcCP@4#;5u2tllA0~0kDoN!>vQzjf4)p1s zz2dZaX=d!DC(xtVQpjbksOIHIJ?eo2m@KdB?N%A}=HA_hSoONtt{69MzG;*$Abb(T zKd2zA^<^WpOCrsnse`P8S`{qA%0i|aW!0mIg%`1D$inm+-E~5s%I8!n5uDqQn+w`7 z51d)rwHD{#8JOvl8`jks<4Aa8YO$SeEEU;wQG3h>0-BQprRq4gV3{eg)W8Sg$3HaeaHNxdi$^JM)uilzL z5bS_#6cbF6gNzcZ1yPAFu9Sm|DXlVEx+M^JMi6vM7GWQ$wo#M_+8M47*8kZ6B&B?A z-aMM?iDZ$KixzQXH;;me8D(CJGu|8vTG!`G7dShDRGp3>MzMo-*aHD3WK%4poY;4U zAzk3el*+73F%`3eFUc@>1teFkzkJCHZApJQ0bOb)3?d)x}d^5oT?@-Mm}@wE@p@!XuGS`sjh zyy83>1m}uZ!SP;|g5tqEGzB`@bv=mCpuUiuKcL=f*d`Zdq=O2KbqFS({6o=3bYezy zsN@P;Zv7QM+@4qGNi6kM(Xr8LWLIjXfk;GJ>kXOlhNw!RBpFW12=0VVL>GnW#C6`T$an8lz<`aXK&Z(54g$M z-}eIusXG2F<==-O!kOa7j^r#2Bx!flTSGOv^?kd-KlC)jyA=I)Le%-EilATo`Cu{Q zUv#EKpxwH&VbLA3_@F>LhE$!CdN!@D823Orda@A%HCdj5d#o9XH?yt$oY3l(rp(y; zJ|b7UuV8mFi84R2CUVH4l-TMIrwui%IlM96U0p1`4bEm;mRX8&YFW7_;42uz;nort z+9=_qU^yMyMnt!3iCQ5{ULsGrTjJ6#tjXbK3}(2lS-$4uw={V*MN2NqfU_%jH)Ow_ zGWg<@Z;~D5ylDAyr}pi-dawmm?O#V=b;b?FV0lFkF*F(%UDt7Dw&}168W=1Lf1zX) z`{F#_SA5f;IGJts18fv29xe&G9)*}~E^IQEY)N4LZe(+9=45Q!;yI-k($s_Q{*b5O zx)guqH~-xH8hr#0Og+jK%SvwFru^)*$}VT{pqTP%Y9IN_sU6DH;t*R@N8>N4inFg+ z1u&QX1KMc;OhJ6=oh_4s7)h&AY{ekq77b~TXjHmjRN0ftRun7}m)8 zHj8bUHm033tx2NHv#rs)-gPr>WN@|0oSf~mt1XDGVNalLxvyvwn#3u#w;iSXoN0es zE~fou9EJRtasr{8|7(q?a{u(K@B|1aSy1cyteW6?VJZPfoY0aLJ@WFqn%$(L#!pzI zX#iMljOp@(V8#8}5t7C-|B=l99IE6uN6iPatmZ#e`mnUvIrB_HcVD7GmI zp^3Pcq>JPS^RBp6>Vu;1Nkp-S(69cy-gj&7U;^mbAs{9nPh|KJko{_@%s z#B2Pa_J=+tX7eis#5>@T`G75vi!DJK@a*90Kteil&|lEoE7>AFg&w60jr%q;VGppfXu7ukkZMj=T zr8RhlOA5QrO3Bra7Pyi;u~?ecd$3SSQQC{Bp(z0C$4-p3E!8B?nY^jT@k|?<$BM#- zHH3c0JQ%hUFk5WKIt<5bF1^lxRW)IAAjVN^Eh%=)iY!bc9jAxMP-kTOXv&^3KP9r{ zVavr8(~&q#3;jm5!O3M6(B^+J#EWKZd(q^#E0_ML5`^~heN43vB+yE(OF%}{PR-kh zHNRPq`(3}zKE?crg~2}$K`pYa(r z@|Zqd!okSURtX1#G_e@frQ^bwc8N}W1=qF2F%Wd^51q>6Na#yyHd;!GQ1=gykjy>= zjozJ`nZ$PqikY2wQ|~Gu!%X0Tt2^(ooIY;9K^>dA?U*W6KGyc7;zTh4;pKxHV@S=d!*nkzEk!sY1&n)fcm-Tuw6f%{eV(cJF#&IG4>rQX?SpvtUr&OZ zHAcfB?~_b_3IB8>+dx)%fDaLQwB3V|egdF+z4NwXY9#;S&E-B_>E%8f>K~YnL{t6y z*qYM`qi)q9iij!cxn)w4dx~1)AdZgtA#30D-IF(-UtDqRX}Y}T5_IC>3qm}k6AYwO zJk`}z?(n7|xuxP5r51w=#qMO*icl{6q=OSwD%KWClnkY{PUpByv=;mR;x+k{xT`?` zNE+o|Z@z!obQ%CiT0;qdq)9BTVpkiWFwaJGQ3ESAFvVjVSLuH`Xtf3uh$ZElD%dbd zRcfiG#;5&+#Xa)a{U+yO863=7n$5aGT`|@pDAdE!373V}$>)*%1l(nRSpZ|c5RO~d zb&xsq$h!IXiF3FCmf3P@^@X}IcH1|deI`{_Bw?;PR#t=I_)XPZg(QilbOfXWf{Csa z327c^&_)?#;tLlgEnW4GzGWXstQgO{zLqgi_=e)TUT7$R^?_rHRvU=E7AYvv^2m_t zULygRGw6fyZP}_{ZhSQC1imMh204u>mdu01ROIMWW~p4zXRu?)MtJP zW2)6Amp_2B`ssy~63ORmQzZP%(HM_75l7=JDox4D4vTvzV2v~93F|?+14C0*Oo+Zh zh#Xsnc1Ho)1Bo4pEaqQ`;SM77r1qn#WkQO4@tu&e{YtO5hhW3)N4&(g1$!?DtjQZ@ zV(bz|BOaDSH&jd5gUqFhHXp4Zq zXb2Z+>mY98>sL$Y1y$pv%@(pP!tL*YBFaoKzinM*FX9aBy0F?racqWdlQ@rJUp4K< zh#zO`1R^UE3{Ll!+*VqGy{KKgsfN~XvNbO3N9mf@WMoi3U4Lqf%?rmly~L!OS8#5{ z?Bcji5k9)^C5v1X6@@vph^C~)w;X?AQQ3(BTiJ6-<6I(nj0t3J$;!0)Fefdrl0P7! zSR*>orh%;=y>@b~*1E{^TiN$=a}!MoigyM4!xhTSbn3Oh?n^=TMU*tAyt*07PF?;L zhCWfHSlBXM;~*@CzHbJo4u6+QQVD%%58beFTb9;Y;jVh2Y0x8NN1xzmflr%RMnWzG z(E^qqxJgMm=Eh{sOXFidzDBVqXup7Y^^=27y2g8|iO_Qe@%c$zP%J>Lk_N&R-y7o+ zRn}KGu}(tJzwdigvBuVBx7-e*cVav_pQg+Ll-myMm$7X*(HTrbi8nZv-NfnL$P%-b zfF_5=PElWox&jIYcNk$-J$B**uX3c^#m}+JSf7B8N#H{44YzYh`9qH{wv~^*K)ySz zltmq+sun*0o;preDF6OG0jb6EJ*QZP*9c|g7Z1PZ501mqARxxVHn;iV^U#Yu7C#VI zGuIJqVl_&*2bC^S&C(v_`D+5FRoQNwR(n>3iL{&Q&lPF77>L^1I?i8AJc(l4H%&NiIffa|IDsZt=NBm2mg zr0b>#t%!(g>tYDG$`kPBMJ%u_t*9chJK53->t!QWLgNaVUeZy&wU7vi(=cX3gGNqo zSqGag3$^1Wz~Vi)#g&9P{ZZticA?VUXlzO4$-IOzu=>?>y8LPEb6&v(N)OOz5YHJQ zw^VF-NV&QT#w2a?Dy=f+_bF734#$n*DsowXjvql<<(O>Y4KdH%-D@TH#I;lVW z*p3!j1Ud6}ZwN~_#zWm{) zm6It2^daj+xgH^NH1rW;R%>ql11X2%K&B4slmk4g>j=xc;3v4lBS?cpLgQ!QV@?+X zW1`l~>kUYN_$_WeK~8Ci=kVGRx0UU(kkzlfs_Om2j8~nfCYaBDZ^lPwGSYT<`utKM z5dKsHHRSPjMbk`Met0^iGYfM?cf#~o$B*GAAjA6ZL zzWl0>Drq4~@G2UqkWusk;|WNmRjjHcp{Xqh@1*ww`~t$_(0AQe)`TLjW6Mc&sB-5X z0_#^(+GENv>(Vm}i1ChgYw)8d$a{8hcsL-i$movjW%ffyG%#{= z`iPKRC-2${^u@kg9wJ)=Dtu?kR;|IYhL;(5uk9cww_&WNcz((th!N zW@J9Tq85(HsOU4-=0{hO;q&&8x`o!5nU&Wc1&V+fs%Dc8wu)p~Y%QuGMqn`yWA~IR zqr!+#%IHM6OAyjgyHCijvUn+-)@{I)@Ka$-#9){`T&QiSu&|;@3p2cZseR5}cCB9C zdq_>Ava+_U+j>}FVwstnq4zl#fzP2_=>Z#Fvmk*&(B|7D+6wGY9zJOh!`joBUh0jk zMviUp&)7YRwXm(yibE7%+D8^kBMf9-C5+Geo7(+|buL$L=R1(Ljtv@&hyo9P&^$j}{5v(GYV1k;Q`4YUz1U zaygI{Ddt3+ReUKr=n+dWJ*utUiTmtsg_W9Qm|L+I6;}6JzKr=@96|>(2yfXmeysjl zO5E^*iLb{vkTf-}$y^#ISK&BVT>)Z~?biic{W)lMY(}h?a)6XVk5sb{<{^sAboHR*%Ufej~KJm~p6tqm-k|#zl zt-zt&98n2~uE&*nIBe<0KiF1HWiatI*WIhf}MNCpgYU_A+>4@=I=n&bI-tSX< z2ihR^iW4Ttl{`F;iF@EAJtFMs06%@;DgM=aa;-d|TDOr*d6TEDDC01HhOnfsm`+O{ zgJpeCa>a$lx<#_k7`s7x?ks!WwZ2sE@DuirlAa!0!^;9V^ZADIZ#TBT+_4SHug-`< zfKF|(Ix*FwSaMlcLbDfD{TwPPA-woT!A4U_`Rwd?sn$la;X*5f?9eBEq-!5oS&yzS z-g8JMQNckv_fa=4#?CU~2nZm@VviGR&j%B0m)uU?pSy=TU+Z`2`(DcF;AJDinKP#p z38SU=3%_|DTU6?roD!Di7}d8Mf$Ks`P~aiEf!oklv-a5)01+_9iT#}IAUN3uT=4Yi zX<#ZSx>-e22K1PkY*6$9%1azoyQ}koXw$`^RDW-Q2O+`3tbGuOLZ6bi#E(lB&8#$^ zr+&fhv;Oc)nCKdR-S|XR9yn~%s7-e34in}SwII43A}gP#u45>OD!PM!9FeEIooXZr zY+%|3N@SSBRhk8f&~qfd<-`m`R8XgvDOAx<0Hdf*)iYEo{?!0I5ueF;gz#~Y>V!M! zMzgRDk8`cWnTKO=RcIHQI66S8l+mk0S2kk7hzmCzj$&1iP)mn^jT7J0f*+Tm%8Is5 zNRgx3AMr&%K)fjU7@sSbB&ry3&v~j!vP5K_SACuosHVNgv|USKI!vCp-XJgOq9a64 z2t<{hqY~ZV{5%7Q9i6jgI_IHMYMtwxfcX~slAooIfUAsRIX^Yh?Ae!(JF9&Ewu5Rh zas=hhE~`;K&|lv`oTo1`Rj=680kiQI?_AfUl`sp)Ngf(3Fi)VTIan(_m-{XWevw#z ziol8mL=_zk!rqakBx~<^Hh>FSUJcmT&XtN#H(0VbFlU0OZk7R>YTver2CXz3@>(BD zxIc_GQ{QB)Sft+j4kz$heeNx7r$R~x+7>4+hC@ZyV`gg3_UkJe@Og70<=(MV*V?9L z>t+gT=r`@NA-<9R&TXxCIhIT^Dd}Ne=|do+#AeFnzBP+0F%Dk=l6cS zzSdo52+ACiTo0Z91J*A_)Y~N~m{1v~aP${8fdf?Xe$v@~lE;L_k4NF)qRfcfCK*8i~}A&@awESguP(i_M2m#Q1c<)AXYy5PLz#= zd75Uw{wYfkabn6q{MS_~hBFkDDOAcO*xM(M;(c-)$kEv5Yw`unp*#;pCm8deJ`|x> zI{ax&)Ost_xg`-=eNDCXzky^W@w5+;(IeyOK) zZEn104`)L%sp$-kBhsu*JB2vt3NLv5Ih;Q7ee{7sWeYD_w%-)NO3h9Qh~pD9@pnp{ zCZt`5Cw#~o+fac>BCv)tHg2k9O1wk#Xl;FWZqtU*$xTKxk=zT*>=uVxt7z^899LJ7 z8aDO&U+H0jzWaDtfT8K*|7?x=Px9>V9zB(1Z$!Y^Wve<#4A398KDDBXbB$#2h4LnR zj1JQ#02xia6i+g)2764N1d*)Rar04Y4HeE=FV_;J2N`)SNhIq{V2;5a48vPe<0%LB z0pIwd#kgye?eXC%%N_QMNxwC8*o~RDU%t`4Ll$KT40-|W(p2IwYG`SDv4(s>dHHbZ zmqFT9VS0WZAS`IgVOkn}!kDGh^HF2vP@5ht2vT6sM{?pKlQQ&);uOKW2XXj>D>peG zQ|L$&*52wV>5X9gg(fj+(>+6WBQ$Lz`mqdFy03L;oHZ9eSy5nO)KE}tA*Cz)VT zvnWf+fB=I2SX`@E64tprgPwj#aViwVCmEmmpE%EUWe zP|M9GGDnZTRL6k%-lIPLM82Plseu2?u&-L)-i&xmsOd*CxOWQm8mG7BR!GgPs0vE-c-6EjPNi79+d|CB~JC}<4>$|WQ*Y8oh) z36YC^B$yO5Lju{M$c3YC`qcVRz_VPZQfyjZCT`^z4GlY;(4+a_NI22o`LD zEa#G(M#PH^dbJ&PA^Fta?w&Vh)n_)s=7MuS)r znWke6J0@-TLuCwdiC4VDqcU5Jt%5hY9)t_EaF6ItNuN+YUy#(&&CKXZhS9ed*w^bs z1)jc=$@kb;mDb0?jyIv8{!0K~bkLrnTpW5?V@B8z&)Y}WYUB8Il=&h1&-NvMi)FQ` z_}{nuu#xtd5LD!cGhf@{u&*yzwYY`211oXCq@rKUgZ+#s`U2x9->->m{9?Kz5Dk38 zAkmC$03Uks40(ozbq$*`RF++4&?@=h-vRt~ydyCIsW#_I1Q*>IgBM!Rvt#H5C}2z} zBuIH3?lx7nahoCn@rpC(Y#xHX)BzX<^qjxIB1-PyV74<|SeI*j9vg#2T-b1_C`j+O zcH7fsraH_wH*q+bHWqt~;3uy-HzsJ`HuXPUCJxzlJu-{RM#q%;!#IbNMq)LocaSsp z${sFpPa)x|{kla$ocvn_+pUVv`YY)LCw^q5ifDIp9(rk%rtBE1 zxQ`Z6lAy7cTh2W#f5(xav8o_kaEoZLsyRZ4V?S!R{)PkG7gdju*Kqw98OaMF;mNo8 zY@jOFE4~S00G=?_37gT;DIsjD20^#EPeNmQQ_1Ms(OD+7!NfkJWba1|jfU&>vLuQ7 zJvTLyir8ZIS`|VjHB}}pb@Ife#edPEU9NYv(^-n54aSg$EWraeHJol!JMMx7nTG`# z_JWR(1P*tcKQJheXzFw=Dpa()1{S%4oih&(k$T5r9(VhwnBH3kSI9AU!*s|on!lb} zwo7#gD6UNx$=Eijt~kkShkBXW?h=1R1r@C?r}72f1GnV$%c1bMO1$OOkda>u%}`LM zj+FB?@*-`K$&vZrZ$#%Y(D*9n(cvP&+ei^NEWq0|$E~o{%eL&!c(FsQpjdqgn@ft+ z(R$7+_#3t`de&Fz6o%ecKVJ->VJ}}!oe|vShw2LVpt$PYDoX8mtgIYW+OX#*1RGXM zb}b30WAXUEJ0Ze5#0SgX7zmaIYZ%JvU$PVjRf$}g!ZvwNZFHXQor7`qtRLuoN_JW0 z7B>fadFLpBc)er(*&05UDxqxv9Q8izzug-CX*krfM^HiYk_MvODikZ8mz84js*eUH z3%U0bG$)#phmZv?G|_0K6sdJu9>+?Q?64jD+>-kEwV_TwAemu%CPnj-XSP{a#*jf4 z2sJvu)^42jxa&H3o7wg8@lN~;2|7^Lu`ZT|R6M~9E*xKzs#3{{*lgZ{IM_CDx6y=@ zX?nYYWKnR2v6W*OhzjxzaAINKMsL5Ow(zsOfvr!y+(u`0KDN-PAx=pIP1$|Fi}boT zx_BNeqtLRlSQZYN@E4pPPh-O9fFEnGjiOD3lG(;#YaF7}5LACPC(-8AQLWKr2EF9g zw-mkD?KL=)!HY9A66=J3X*w)}B#LAs@N$gAZB1t~931cd!zW8*+#M4%cn`+*F7(wC za@GkrPvbNsLG(d!J!B>RFTy7?H}ez{lLKXQlCRq@D(Gjg<{Ds$rm^M^85RM#H!kd)t{|M=xzc8S*+3DyFt- zpaNl-w1LncP&-8NxTijut zbwXhvFQ~A%G~kH|kwJpaZ~lZQUkfvLRdFT0X<}@ha96ro%{qXrU^a1$6ij^_ec`d9 zeDg`+I=i!V();yQC;E#4nwI|O?>`~rUs;X@K(q?e z5Xnm$e3{6qBEKO(UcFQaQ5^iMcuqDWQ5rMxa{jVEO4$xcdqBZ3Xp(PuUFM6)eTxx4c;Am+lg0fj)VU^_PqZsWxL20c5neyoW)7W{(W7WO^ zoa{Xc4~p!q#}-j`MzYD4y-M~dGLo|QmR%^6krCpth3u4(5i;r(A@g_iz7CJ){PBDG z^yk-gpX+?@bKmDa=Un#yBc|tlCq&mrimLSMm=d1BQ@M>p-&F2}C)(lV=)cC`3#(`! z;jg(>wxUWMF?CA-aW6QON5y=ovqopG>y}KBjgVt3!Ge`juT71PPj`T)>#lG~AOWN5 z*IW|cE4^Q}e^pxu$8~VfrCEu7X?m+=G}o%Z%+HZI;;N^jz}l)H-&&BW@axm#GUGI< zt1<@+6yJ1j=wPK;lWqxL8nPd3%42I8N!TawY`x1UK&0MT; ziDaT^eoD=mME__kiQ+jLl;~mx*+d8rIj3j7&JBUfzk|sKHRf6L$As{SZ*2K4w}*t_ ziEmJdkrl{FRRRSZ|5Sd>cN%g{v-12WNOqs(N`u`m6@evHzBF_?Pc{N-_lnu z$iXGrOmrZ7*sH!wTgYbjj{2ovF)>tGNvkgH^zC9Cw;OxBQ)xKHIb}5&DOVPa-{#K_ z;+Krd#J*U{OVJq;kT=Y6H^D8RU%2t^8-i9(Y&Yst{uwPXX6(rq2_n@YG2eBX`B$!4 zi?!w_q)q=AePJuUx8ch6^?PrmRZlOC`dE|J@Iq7qb;Jc&fO-o013&Cm1-X}B9Nr;5 za<~jR~$g%gtyhKK+}z{0`XWkK zvTi+XL6lOXk2hyLtDlryPwINK|2rvH|5pan_aHqD_x0SIw)2;#+NBgWZoN5cd_Tky zeqUA}`vTmL&o6Sa0>|X+JPoce-{AXitgN(2_R@A=<G&G*`=XZxex61v6;r8Z_dRU)rhOT?Aij8O+n6GIA3HQ9}wD|G!69$wE zyr_Ms1LQO>jSap@zHQv<8;o8%F{=vH`7wxB80Ms6*mYlO7|hywr*lV3F)$G3EQHHP zco(BcP^YTweB@0<(GR5T6WuLsmyAQ&sEH5ymT)65;bA$1Qz6xA_zH8sux4nI*R!cJ z4EhP~@v&yBD=qQ;dKdMM;R@TiG^aAjuvkJSadtiLuR8ug1Hhh_tz55IpR7*Pul4a5 z85MB^*pON~B}}~+RvRc*f?49Ou%`yCX&JY)Fk2cnV(B)*rVX^7sln&Idq+23(u(8T z&rzccm6vLrrEJO#u#JQdFfdyfPMk^7fX|~BYgllM55@#1@WO)SKZRv{ph+p1C!|)K z4lQY~+K7Dy(~a8L8lg@&s9@Nao(e1ahsZ8bsq3C+-FNLXh}Z2A4kXgc+|ImTTuovZ z$OEq!6u5hjCT5FSSAAZ=9+%GbHZ(3PR@s=R1b1eI^Yg>dHcSTGo)9rC(k_n#KMzu`s zr!^CMH(u-vVx)?e`k8oTe5S;9CyOI~H ztWR6!%D=M2?dmZ_RTXt<)(@j&ld|5J>Z)SYpQxWqckpq}ltn~+`hD^3Gl%U_77vf8Ph;|NHGvh0c--uq1RaF5J!f zJ-AZp5rvvsGbN2OK{mI|ccxDt1q&4QiC(y+zGR6~7-t>YmR2Wgq?#r;M@E6qiT@;5 zTVBEX{M9X-t&Rq)D;_@+D2c)a!c<0G=;v3(BYjl&tJY_F(ezg_5Ija%rof8ss+&*k zgT9F33`rCC;tI)QF^qc2yA2p&jTCt9K|XaDWG0{d?SkcQndiz0^n2gd8wpF$a&{HGpLugI(s>=Es8(iDq%P&Z<|n7G zbWX;pQfZ2sqS|rH6)Rp1d?>n*BcfI*5{z?3asnn(mRGlGOil8%pICs<=q}Y3NnhA6 z8{#OSTKTnBnO(O}t8fOI0hd61&XUNEPrOy`@WB*`(e}u>bxe$$c8RBLRn4Tom(ulF zqx<&+&RaPYd=(;GQwr6jCJIlbp-xETnJ&uw?%AX$UvMC%V3i4X)xm$#Q1E7v+5MiM zyCx!>&=q@^jM}#EF~6=xUyXZRn0oY6wm+pd4nIkDY7*aG9g{@_M2X6ze^IHgwVajH zq<(JI2P2eAG-=scKR-dlpF#Gn*IBu*v|*AKU*Wu`@350WQJ6&2KcR#__9JWtsffLI z#IlVfh?nd5j7DL$7rc<^5~a!t3|OVFQ-;nV%lu)&;xs&%AFd zs~Oger$1XGnI~n2-R0jq2X}~Dtv1~PN?IR$aVg#*b8J&IR((GA%*>Hob!}BKa*D7% z<=I>9CK2AWZw@~^C*bQUs;)C$;<2U-*CwaVADuecbk8|Qgku*zDJcPgJJnmrh(LQyW?7HqE4t+UUD3{L%%tt zghk&2%5igGZD#+SoWiR$9G;r~+##pz5HtAwo3(ga{s+obrP(3c8NQK@G{uaJSQer1 zE7i7xRI72;O}V{Z#-%?@e!W}v8Zunjd}p41VdMVoR}ns{dPSEmO{+NIn^3I|%cbQF zy_I_@c{j!4N*iUEC1xm@quxpZKZ^uEbz0MnfC~TZpID9hZZyPn1%)2@>I-FiK`pNr zL)XnT^~mvrsY(kU4mD(s8aPfARN85bu|AJl%2hiPU)AWha6*38%09GzFm zM@8aN&SWrtEi|{c`|Ur|voC5R-^i=_Xi>4%xh_uE4{{3UZ7^eS zcs)VTX<1Imq3=*UW{g$s!f{rs4#D8_9hS*{`T!rNI<|p>d^|&19rMqt%Tn&47i&4% z^EoxUr0SQ2pTT#isHXe;uEm_`)0uqFE`f;jnZ(5XY2g1Xx;v*knJYiT zts<*VRXl}wuEwi9GUl%u((p9#V&{WeM-QwN6Bq2~^9NU%Yn${-|$Ei+@%xyW z6RrYTzR&t2YxODw0c$X|jmR zH(H$>FLZRnRN<55D%>_LG5(^?m}CZ1kMEqw!JUIm2g?cF60+AFcxK1bqZU0Yvy!YM zC{(1aWz=S{;J_+A$hCGobT)p8a6l41e#d!U(YBiTE4HmBNu{zqm-12(-`KA!PG`vx zA51>f42aIwa9x}iQgVUKv6yf)yk@pW$0GCM1|G76hMRYkc|F<6Tb7iuP!_>)C(%|E zMM#*897s85T*UULcd1(pc}0W z=DGY`a@kRsxdUU!MKP-I=3-t41_oca(I$VWkpkU?#!LGOtYS|{!+l49`W3ZgIay({ zjwxU2cY5mTHZuk`_u8J9p!HYXOe*fOQ%V$4=O8f3=XSX(5?{9HL&T9!P%~)XM5X~0 zu#kx2q{Z?*6OYSOh?Bilqf=~9MCQswDou4x+O)g;hIKleZi$p^^6AAOCz#|qY4DYY zDYhI7EL#;sLIIK@2Uv#8Dqa;@B`YZjFVf2MO&|WlvoW@`^Ss7nuc4G!;$U3IM&naX#eDxD1AaZ&Gi@F3P_q zZH8s_mRI}wAb1yAx#~D^N0VxDelBq+zbz`rW*X0ZF0mR>lk~m0sakHa{_Y; z-wjgTifUG?nEek7F;60^ei#296{W$G?>-(9fJh zJ6@CP$XN|C2ELh8XGB8-7VJ*_{uV~(HBnPWhA@n>x08Wef=b{PoB#=l1^(23)zo>- z9b8U>f*&8^j-mrq!T=Zc~;K+*HBfI~0=4gneTAU*>Be#UVc%3BMr23e-}l!~gK3U8R7rqnnZS!l$Y9&qBk=EQNTgK)j=;Z*C#S*CIFl!bS=9uh0w?ao&z+eY4WyLs|qm?E(2&QGC9Q#l79#0 z(_{@(Ph1HQ^EN;ulN`Jt2`P^)r!b!|Kg*; zI*B3Z*7k~mB&0u!k9KIFTU#X#l8^$GYx9bqgKRCkBuGLU)Na@vTMT5#6eYLrG9U@5 z5aT!gF9HCmgOXcgd60y3D9(_P@UVkrq2#vf`Vsl>Qo?ByNI#YFDFQLGQDUA`1xZMU zjHS@#xqz6hC@~Y&KoZiSFLk1>hrRmn0)%Yet~N+QIwTnMp7gL=A6|iw$!R^1gmj1! z_7mr@uN+>2kV#bokc4zd)J2ZyIuJ7xC1!#tNJ2VPa62i59f;Y25))<)l8_Erxo<`v zUZRarGUROol8_FiA1E6hW(f6aVrCDLkPeyT_69&_sN3;~6!^Owb=sk!$ZR)xAm%fa z3{kj%B&0(vZ-ahuLS`u54J08Qnh_tEcLWBH5bo3G^N%-3LOK+Bo@31lXzg8;+-63A zB&0(uyED#*eMJ<7ycP|TkPcz%N*E~u_fxFE^L1qV5V0T$>5$mHkO#KqLo2{`4Y+2 zLOPVO?Ya6LAUA;NFES}QenbjEI%L#t$^Zk7aUP|w7)*gAq(fP*FEl)XGopmz?W=i^ zgmmc9cHZP6>54*{tbin>L-jKP6cWI3W}sw$8>2T4eW?&Redxd09op&0LriT>YxiV&nj zvG%qv9sv{@%K7BN0ZB-QY;m|+^MRPRP>f$BJR*f59U>Yxi}(PL4^hZY5|D&+=r*NW z*I^l4)Z_d}4w8@#J+>=h_X8|o0KT$E&aE#6NJ2WKh*uop3B-Jjl3S4rAPMOZSy$Gu z4nW4Ekl*P+64Idu{ZG0L0f(qj9P(lWNl1rU*8}ImfS5WcF-cfK64D`b?@q$G!`z~r zl_7SJgmlPyuom_JXze~qFZ;~}l8_FSqiuXWoP*s)iTU!<5h()ckSZeCdln#zQOH<+ zkc4z7SRa@4JkZ+1#=y64D{9vZ1$xKuZNs<|Y@e zf+VCvy?*l8XMxuCp&X~V97sYswC^Y}jtOLF8K9Amv-CPhLOLWEIfRY@P`W5Fe<*<@ zq(k=ScEh`Xm_JeM<5C4lNQWjlo#y@kF?&!(d$>ACLORrw))x62h>1G#nrk1CqL2=~ zlAffH0b+8Zm=L1}l8_Eb^hk9N0Hg&<|0FR4Nl1qVg$Zm`fpH}d<$mS7DM&&(hGN07*!Pa&&R8mjfB1LOGuvwjc@V5Y>}##lu-@AjC(x%*~n;grF`K|#n%JUD1 xLN8vQd{~T(4s9HxkT#usj)#oi{Bw-{XA>4Mu%My&0RQHJr$;|`fTwO~{{!z`P#6FJ literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/coder.lisp b/snark-20120808r02/src/coder.lisp new file mode 100644 index 0000000..b881465 --- /dev/null +++ b/snark-20120808r02/src/coder.lisp @@ -0,0 +1,714 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-user -*- +;;; File: coder.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2012. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-user) + +;;; coder finds shortest condensed-detachment proofs + +(defstruct (proof-line + (:constructor make-proof-line (number + just + wff + &optional + (wff-size (snark::size wff)) + (wff-vars (snark::variables wff)))) + (:copier nil)) + (number 0 :read-only t) + (just nil :read-only t) + (wff nil :read-only t) + (wff-size 0 :read-only t) + (wff-vars nil :read-only t) + (target nil) + (hint nil) + (cut nil)) + +(defvar *coder-start-time*) +(defvar *coder-run-time-limit*) +(defvar *coder-step-count*) +(defvar *coder-derivation-count*) +(defvar *coder-print-state-interval* 1000000) +(defvar *coder-maximum-term-size-found*) +(defvar *coder-maximum-target-size*) +(defvar *coder-term-size-limit*) +(defvar *coder-term-vars-limit*) +(defvar *coder-ordering* :rpo) +(defvar *coder-do-reverse-cd*) + +(defvar *test1* nil) +(defvar *test2* nil) + +(defun coder (axioms target &rest options + &key (max 100) (min 1) (max-syms nil) (max-vars nil) (op nil) (variables nil) + kill avoid all-proofs must-use resume hints reverse-cd + (steps-to-use nil) (steps-to-use-count (length steps-to-use)) + ((:run-time-limit *coder-run-time-limit*) nil) + (*test1* *test1*) (*test2* *test2*)) + (let ((*print-pretty* nil)) + (print (cons 'coder (mapcar (lambda (x) (kwote x t)) (list* axioms target options)))) + (initialize) + (cl:assert (>= (length steps-to-use) steps-to-use-count 0)) + (setf steps-to-use (if (= 0 steps-to-use-count) nil (mapcar #'coder-input-term steps-to-use))) + (setf variables (mapcar (lambda (x) (cons x (snark::make-variable))) variables)) + (setf avoid (mapcar #'(lambda (x) (coder-input-term x variables)) avoid)) + (use-term-ordering *coder-ordering*) + (use-default-ordering 'coder-default-symbol-ordering) + (ordering-functions>constants t) + (test-option19 t) + (prog-> + (identity 0 -> naxioms) + (mapcar (lambda (x) (make-proof-line (incf naxioms) naxioms (coder-input-term x variables))) axioms -> axioms) + (unless op + (dolist (x axioms) + (let ((x (proof-line-wff x))) + (when (and (compound-p x) (eql 2 (length (args x)))) + (cond + ((null op) + (setf op (snark::function-name (head x)))) + ((not (eq op (snark::function-name (head x)))) + (warn "There is more than one binary relation; using condensed detachment for ~A." op) + (return))))))) + (reverse axioms -> axioms) + (declare-function (if reverse-cd 'rcd 'cd) 2 :ordering-status :left-to-right -> cd) + (input-target target -> target target-alist) + (and (not (contains-test-target? target)) + (reduce #'max target-alist :key (lambda (x) (snark::size (cdr x)))) + -> *coder-maximum-target-size*) + (mapcar #'coder-input-term hints -> hints) + (identity max-syms -> *coder-term-size-limit*) + (identity max-vars -> *coder-term-vars-limit*) + (identity reverse-cd -> *coder-do-reverse-cd*) + (identity nil -> all-targets-found) + (setf *coder-step-count* 0) + (setf *coder-derivation-count* 0) + (setf *coder-maximum-term-size-found* 0) + (get-internal-run-time -> *coder-start-time*) + (loop for nsteps from min to max + do (let (targets-found) + (format t "~2%Search for ~D-step proof... " nsteps) + (force-output) + (setf targets-found (coder1 axioms target nsteps cd op kill avoid all-proofs must-use resume hints steps-to-use steps-to-use-count)) + (setf resume nil) + (let ((run-time (round (- (get-internal-run-time) *coder-start-time*) internal-time-units-per-second))) + (format t "~%~D steps in ~D seconds" *coder-step-count* run-time) + (when (and *coder-run-time-limit* (< *coder-run-time-limit* run-time)) + (format t "; time limit exceeded") + (return))) + (when targets-found + (setf target (remove-target target targets-found)) + (setf all-targets-found (nconc targets-found all-targets-found)) + (when (null target) + (return))))) + (format t ".") + (mapcar (lambda (x) (or (car (rassoc x target-alist)) x)) all-targets-found)))) + +(defun coder1 (axioms target nsteps cd op kill avoid all-proofs must-use resume hints steps-to-use steps-to-use-count) + (let ((together-target? (together-target? target)) + (targets-found nil)) + (labels + ((coder2 (lines nsteps unused target* ntargets steps-to-use steps-to-use-count) + ;; target* is used to record remaining targets only if target is a together-target + (cond + ((eql 0 nsteps) + (incf *coder-derivation-count*) + (cond + (together-target? + (cl:assert (null target*)) ;all targets should have been matched + (print-proof lines) + (print-proof-for-otter-verification lines op) + (force-output) + (setf targets-found (rest target)) + (unless all-proofs + (return-from coder1 targets-found))) + (t + (let ((found (target? target (proof-line-wff (first lines))))) ;is final wff a target? + (when found + (setf (proof-line-target (first lines)) found) + (print-proof lines) + (print-proof-for-otter-verification lines op) + (force-output) + (dolist (v found) + (pushnew v targets-found)) + (unless all-proofs + (when (null (setf target (remove-target target found))) + (return-from coder1 targets-found)))))))) + (t + (flet + ((coder3 (x y xunused? yunused? new-line) + (let ((found (and together-target? (target? target* (proof-line-wff new-line))))) + (cond + (found + ;;(princf *coder-step-count*) + (cl:assert (null (rest found)) () "More than one together-target simultaneously satisfied.") + (when (eql 0 (rem (incf *coder-step-count*) *coder-print-state-interval*)) + (let ((run-time (- (get-internal-run-time) *coder-start-time*))) + (print-coder-state (cons new-line lines) run-time) + (when (and *coder-run-time-limit* (< *coder-run-time-limit* (round run-time internal-time-units-per-second))) + (return-from coder1 targets-found)))) + (setf (proof-line-target new-line) found) + (coder2 + (cons new-line lines) + (- nsteps 1) + (let ((unused (if xunused? (remove x unused) unused))) + (if yunused? (remove y unused) unused)) + (remove-target target* found) + (- ntargets 1) + steps-to-use + steps-to-use-count)) + (t + (let ((new-steps-to-use steps-to-use) (new-steps-to-use-count steps-to-use-count)) + (when (< 0 steps-to-use-count) + (setf new-steps-to-use (remove-step-to-use (proof-line-wff new-line) steps-to-use)) + (unless (eq steps-to-use new-steps-to-use) + (decf new-steps-to-use-count))) + (cond + ((if together-target? + (>= (- nsteps 1) (+ ntargets new-steps-to-use-count)) + (if (= 1 nsteps) + (= 0 steps-to-use-count) + (> (- nsteps 1) new-steps-to-use-count))) + ;;(princf *coder-step-count*) + (when (eql 0 (rem (incf *coder-step-count*) *coder-print-state-interval*)) + (let ((run-time (- (get-internal-run-time) *coder-start-time*))) + (print-coder-state (cons new-line lines) run-time) + (when (and *coder-run-time-limit* (< *coder-run-time-limit* (round run-time internal-time-units-per-second))) + (return-from coder1 targets-found)))) + (coder2 + (cons new-line lines) + (- nsteps 1) + (let ((unused (if xunused? (remove x unused) unused))) + (cons new-line (if yunused? (remove y unused) unused))) + target* + ntargets + new-steps-to-use + new-steps-to-use-count))))))))) + (declare (dynamic-extent #'coder3)) + (let ((new-lines nil) + (new-line-number (+ (proof-line-number (first lines)) 1))) + (let ((nunused (length unused)) + (revlines (reverse lines))) + (dolist (x revlines) ;use reverse to reorder search 2003-04-17 + (let ((xunused? (member x unused)) + (big nil)) + (dolist (y revlines) ;use reverse to reorder search 2004-01-10 + (let ((yunused? (and (not (eq x y)) (member y unused)))) + (unless (> (if xunused? + (if yunused? (- nunused 1) nunused) + (if yunused? nunused (+ nunused 1))) + (if (eql 1 ntargets) nsteps (+ nsteps ntargets -1))) + (let ((just (make-compound cd (proof-line-just x) (proof-line-just y)))) + (when (or big + (and (eq '> (snark::simplification-ordering-compare-terms0 + just (proof-line-just (first lines)) nil '>)) + (setf big t))) + (prog-> + (do-cd (proof-line-wff x) (proof-line-wff y) op (eql ntargets nsteps) ->* new-wff new-wff-size cut) + (if new-wff-size + (make-proof-line new-line-number just new-wff new-wff-size) + (make-proof-line new-line-number just new-wff) + -> new-line) + (when cut + (setf (proof-line-cut new-line) t)) + (cond + ((and resume + (let ((l1 resume) (l2 (coder-state (cons new-line lines)))) + (loop + (cond + ((null l1) + (setf resume nil) + (setf *coder-step-count* -1) + (return nil)) + ((null l2) + (return nil)) + ((not (equal (pop l1) (pop l2))) + (return t)))))) + ) + ((or hints *test1* *test2*) + (cond + ((and kill (funcall kill new-line)) + ) + ((and *test2* (backward-subsumes? new-line lines)) + ;; reject all derivations beginning with lines + ;; when new-line is equal to an earlier line + ;; as well as when it strictly subsumes it + ;; as in the case below + (return-from coder2)) + ((forward-subsumed? new-line lines) + ) + ((and (not *test2*) (backward-subsumes? new-line lines)) + ;; don't just block adding new-line to lines but + ;; reject all derivations beginning with lines + (return-from coder2)) + (t + (push (list x y xunused? yunused? new-line) new-lines)))) + (t + (unless (or (and kill (funcall kill new-line)) + (and avoid (member (proof-line-wff new-line) avoid :test #'snark::variant-p)) + (forward-subsumed? new-line lines) + (backward-subsumes? new-line lines)) + (coder3 x y xunused? yunused? new-line)))) + (when cut + (return))))))))))) + (when new-lines + (dolist (new-line (if hints (sort-new-lines new-lines hints) (nreverse new-lines))) + (apply #'coder3 new-line))))))))) + (let ((ntargets (if together-target? (length (rest target)) 1))) + (unless (> (+ ntargets steps-to-use-count) nsteps) + (coder2 axioms nsteps (selected-lines axioms must-use) target ntargets steps-to-use steps-to-use-count))) + targets-found))) + +(defun sort-new-lines (new-lines hints) + (dolist (x new-lines) + (when (member (proof-line-wff (fifth x)) hints :test #'snark::subsumes-p) + (setf (proof-line-hint (fifth x)) t))) + (stable-sort (nreverse new-lines) + (lambda (x y) + (and (proof-line-hint (fifth x)) + (not (proof-line-hint (fifth y))))))) + +(defun selected-lines (lines nums) + (cond + ((eq t nums) + lines) + (t + (remove-if (lambda (line) (not (member (proof-line-number line) nums))) lines)))) + +(defun coder-default-symbol-ordering (x y) + (if (numberp x) + (if (and (numberp y) (> x y)) '> '<) + '>)) + +(defun forward-subsumed? (new-line lines) + ;; return true iff new-line is subsumed by an earlier line + (let ((new-wff (proof-line-wff new-line)) + (new-wff-size (proof-line-wff-size new-line)) + (new-wff-vars (proof-line-wff-vars new-line))) + (dolist (l lines nil) + (when (and (>= new-wff-size (proof-line-wff-size l)) + (snark::subsumed-p1 new-wff (proof-line-wff l) new-wff-vars)) + (return t))))) + +(defun backward-subsumes? (new-line lines) + ;; return true iff new-line subsumes an earlier line that is not used to derive new-line + (let ((new-wff (proof-line-wff new-line)) + (new-wff-size (proof-line-wff-size new-line))) + (dolist (l lines nil) + (let ((j (proof-line-just l))) + ;; don't backward subsume axioms or ancestors + (cond + ((not (compound-p j)) ;l and rest of lines are all axioms + (return nil)) + ((and (<= new-wff-size (proof-line-wff-size l)) + (snark::subsumes-p1 new-wff (proof-line-wff l) (proof-line-wff-vars l)) + (not (snark::occurs-p j (proof-line-just new-line) nil))) + (return t))))))) + +(defun do-cd (function x y op &optional last-line) + ;; perform condensed detachment operation + ;; with x as major premise and y as minor premise + ;; assume x and y are variable disjoint unless (eq x y) + ;; return result with new variables + (prog-> + (when (and (compound-p x) (eq op (function-name (head x)))) + (args x -> args) + (first args -> x1) + (second args -> x2) + (when *coder-do-reverse-cd* + (psetf x1 x2 x2 x1)) + ;; (cd (i x t) s) always yields t for any s if x does not occur in t + ;; producing alternative derivations which differ only in which minor premise is used + ;; used to be enabled by *test3*, default since 2003-08-14 + (and (snark::variable-p x1) (not (snark::occurs-p x1 x2)) -> cut) + ;; in this case, use same wff as major and minor premise, to avoid unnecessary use of y + ;; added 2003-11-30 + (when (and cut (not (eq x y))) + (return-from do-cd)) + (unify x1 (if (eq x y) (snark::renumber-new y) y) ->* subst) + (snark::size x2 subst -> n) + ;; don't create big terms that cannot subsume a target for the last line of proof + (unless (or (and last-line *coder-maximum-target-size* (< *coder-maximum-target-size* n)) + (and *coder-term-size-limit* (< *coder-term-size-limit* n)) + (and *coder-term-vars-limit* (< *coder-term-vars-limit* (length (snark::variables x2 subst))))) + (when (and (not *coder-term-size-limit*) (< *coder-maximum-term-size-found* n)) + (format t " ~D syms " n) + (force-output) + (setf *coder-maximum-term-size-found* n)) + (snark::renumber-new x2 subst -> x2*) + (unless cut + (setf cut (snark::variant-p x2 x2*))) + (funcall function x2* n cut))))) + +(defun just-line-number (j lines) + (proof-line-number (first (member j lines :key #'proof-line-just :test #'equal-p)))) + +(defun just-list (j lines) + (if (compound-p j) + (cons (function-name (head j)) + (mapcar (lambda (x) + (if (compound-p x) (just-line-number x lines) x)) + (args j))) + j)) + +(defun print-proof-line-just (line lines) + (let ((n (proof-line-number line)) + (j (just-list (proof-line-just line) lines))) + (format t "~2D ~A" n (if (eql n j) 'ax j))) + (when (proof-line-cut line) + (format t "!"))) + +(defun print-proof-line (line lines) + (let ((j (proof-line-just line))) + (format t "~%(") (print-proof-line-just line lines) (format t "~15T") + (print-term (snark::renumber (proof-line-wff line))) + (format t ")") + (cond + ((compound-p j) + (format t "~84T;~2D sym~:P, ~D var~:P" + (snark::size (proof-line-wff line)) + (length (snark::variables (proof-line-wff line)))) + (when (proof-line-target line) + (format t " target"))) + ((not (member j lines + :key #'proof-line-just + :test (lambda (x y) (and (not (snark::equal-p x y)) (snark::occurs-p x y nil))))) + (format t "~84T;unused"))))) + +(defun print-proof-lines (lines) + (mapc (lambda (line) (print-proof-line line lines)) lines)) + +(defun print-proof (lines) + (format t "~2%Proof:") + (print-proof-lines (reverse lines)) + (format t "~%End proof.") + (terpri)) + +(defun coder-state (lines) + (let ((lines (reverse lines))) + (mapcan (lambda (line) + (let ((j (just-list (proof-line-just line) lines))) + (if (consp j) (list j) nil))) + lines))) + +(defun print-coder-state (lines &optional (run-time (- (get-internal-run-time) *coder-start-time*))) + (format t "~% ~A ~5Dm " + (subseq (print-current-time nil t) 4 13) + (round run-time (* 60 internal-time-units-per-second))) + (mapc (lambda (x) (princ x) (princ " ")) (coder-state lines)) + (force-output)) + +;;; coder's target argument is either a normal-target or a together-target +;;; +;;; a single-target is one of +;;; a term - find generalization (or variant) of this term +;;; (TEST predicate) +;;; +;;; a normal-target is one of +;;; a single-target +;;; (OR normal-target1 ... normal-targetn) - search until one target is found +;;; (AND normal-target1 ... normal-targetn) - search until all targets are found +;;; +;;; a together-target is +;;; (TOGETHER single-target1 ... single-targetn) - search until all targets are found in a single derivation +;;; it is assumed that no single formula will satisfy more than one of these targets + +(defvar *input-target-alist*) + +(defun input-target (target) + (let ((*input-target-alist* nil)) + (values (cond + ((together-target? target) + (input-together-target target)) + (t + (input-normal-target target))) + *input-target-alist*))) + +(defun together-target? (target) + (and (consp target) (eq 'together (first target)))) + +(defun contains-test-target? (target) + (case (and (consp target) (first target)) + (test + t) + ((and or together) + (some #'contains-test-target? (rest target))))) + +(defun wrap2 (f l) + (cl:assert (consp l)) + (if (null (rest l)) (first l) (cons f l))) + +(defun coder-input-term (x &optional variables) + (snark::renumber-new + (snark::input-term + (if (stringp x) (read-infix-term x :case (readtable-case *readtable*)) x) + :*input-wff-substitution* variables))) + +(defun input-together-target (target) + (wrap2 (first target) (mapcar #'input-single-target (rest target)))) + +(defun input-normal-target (target) + (cond + ((and (consp target) (member (first target) '(or and))) + (wrap2 (first target) (mapcar #'input-normal-target (rest target)))) + (t + (input-single-target target)))) + +(defun input-single-target (target) + (cl:assert (not (and (consp target) (member (first target) '(or and together))))) + (cond + ((and (consp target) (eq 'test (first target))) + target) + (t + (let ((target* (coder-input-term target))) + (push (cons target target*) *input-target-alist*) + target*)))) + +(defun target? (target x &optional l) + ;; does x generalize a term in target? + (cond + ((and (consp target) (member (first target) '(or and together))) + (dolist (y (rest target) l) + (setf l (target? y x l)))) + ((and (consp target) (eq 'test (first target))) + (if (funcall (second target) x) (adjoin target l) l)) + (t + (if (snark::subsumes-p x target) (adjoin target l) l)))) + +(defun remove-target (target l) + (cond + ((and (consp target) (eq 'or (first target))) + (let ((v (mapcar (lambda (y) + (let ((y* (remove-target y l))) + (or y* (return-from remove-target nil)))) + (rest target)))) + (wrap2 'or v))) + ((and (consp target) (member (first target) '(and together))) + (let ((v (mapcan (lambda (y) + (let ((y* (remove-target y l))) + (and y* (list y*)))) + (rest target)))) + (and v (wrap2 (first target) v)))) + (t + (if (member target l) nil target)))) + +(defun remove-step-to-use (wff steps-to-use) + (cond + ((null steps-to-use) + nil) + ((snark::subsumes-p wff (first steps-to-use)) + (rest steps-to-use)) + (t + (let* ((l (rest steps-to-use)) + (l* (remove-step-to-use wff l))) + (if (eq l l*) steps-to-use (cons (first steps-to-use) l*)))))) + +(defun print-proof-for-otter-verification (lines op) + ;; Bob Veroff provided the template for this script + (let ((lines (reverse lines))) + (format t "~%% OTTER SCRIPT TO TRY TO FIND SAME PROOF") + (format t "~% set(hyper_res). clear(print_kept). clear(print_back_sub). assign(stats_level,0).") + (format t "~% assign(bsub_hint_add_wt,-1000000). set(keep_hint_subsumers). assign(max_weight,1).") + (format t "~% list(sos). % AXIOMS:") + (dolist (l lines) + (unless (compound-p (proof-line-just l)) + (format t "~% ") (print-term-for-otter2 (proof-line-wff l)) (format t "."))) + (format t "~% end_of_list.") + (cond + (*coder-do-reverse-cd* + (format t "~% list(usable). % REVERSED CONDENSED DETACHMENT RULE:") + (format t "~% -P(~A(x,y)) | -P(y) | P(x)." (string-downcase (string op)))) + (t + (format t "~% list(usable). % CONDENSED DETACHMENT RULE:") + (format t "~% -P(~A(x,y)) | -P(x) | P(y)." (string-downcase (string op))))) + (format t "~% end_of_list.") + (let ((first t)) + (dolist (l lines) + (when (proof-line-target l) + (cond + (first + (setf first nil) + (format t "~% list(usable). % TARGET:")) + (t + (format t " |"))) + (format t "~% -") (print-term-for-otter2 (proof-line-wff l) t))) + (unless first + (format t ".~% end_of_list."))) + (format t "~% list(hints). % PROOF LINES:") + (dolist (l lines) + (format t "~% ") (print-term-for-otter2 (proof-line-wff l)) (format t ".") + (format t "~72T%") (print-proof-line-just l lines) + (when (proof-line-target l) + (format t " TARGET"))) + (format t "~% end_of_list.") + (format t "~%% OTTER SCRIPT END~%") + )) + +(defun print-term-for-otter2 (term &optional ground) + (princ "P(") + (print-term-for-otter (snark::renumber term) ground) + (princ ")") + term) + +(defun print-term-for-otter (term &optional ground) + (dereference + term nil + :if-variable (cond + (ground + (princ #\c) + (princ (snark::variable-number term))) + (t + (let ((n (snark::variable-number term))) + (cond + ((> 6 n) + (princ (ecase n (0 #\x) (1 #\y) (2 #\z) (3 #\u) (4 #\v) (5 #\w)))) + (t + (princ #\v) + (princ n)))))) + :if-constant (cond + ((numberp term) + (princ term)) + (t + (princ #\c) + (princ (string-downcase (string term))))) + :if-compound (progn + (princ (string-downcase (string (function-name (head term))))) + (princ "(") + (let ((first t)) + (dolist (arg (args term)) + (if first (setf first nil) (princ ",")) + (print-term-for-otter arg ground))) + (princ ")"))) + term) + +(defun comb (n m) + (/ (let ((v 1)) + (dotimes (i m) + (setf v (* v (- n i)))) + v) + (let ((v 1)) + (dotimes (i (- m 1)) + (setf v (* v (+ i 2)))) + v))) + +(defun shorten-proof (proof &rest options + &key (drop 3) (shorten-by 1) (naxioms 1) (targets '(-1)) all-proofs skip from to min max + (variables '(x y z u v w v0 + x1 y1 z1 u1 v1 w1 v6 v7 v8 v9 v10 v11 + x2 y2 z2 u2 v2 w2 v12 v13 v14 v15 v16 v17 + x3 y3 z3 u3 v3 w3 v18 v19 v20 v21 v22 v23 + x4 y4 z4 u4 v4 w4 v24 v25 v26 v27 v28 v29 + x5 y5 z5 u5 v5 w5 v30 v31 v32 v33 v34 v35))) + ;; attempt to find a shorter proof than argument proof (a list of formulas) + ;; default is to assume there is a single axiom (first in proof) and single target (last in proof) + ;; to try to find a shorter proof, + ;; omit drop steps and search for a proof with fewer than drop steps to replace them + ;; + ;; :drop 0 :shorten-by 0 options can be used to reproduce proof + (print (cons 'shorten-proof (mapcar (lambda (x) (kwote x t)) (list* proof options)))) + (when skip + (cl:assert (null from)) + (setf from (+ skip 1))) + (let* ((l proof) + (proof-length (length proof)) + (nsteps (- proof-length naxioms)) + (target nil) + (source nil) + (found nil) + (count 0)) + (dolist (i (reverse targets)) ;collect targets into target + (push (nth (if (> 0 i) (+ proof-length i) i) proof) target)) + (dotimes (i naxioms) ;collect axioms into source + (declare (ignorable i)) + (push (pop l) source)) + (when (eql 1 naxioms) ;if there is only one axiom, first step is forced, + (unless (or (member 2 targets) (member (- 1 proof-length) targets)) + (setf l (rest l)))) ;so omit it from candidates to be replaced + (setf l (set-difference l target)) ;l is now list of potentially replaceable nontarget steps + (prog-> + (length l -> len) + (comb len drop -> ncombs) + (choose l (- len drop) ->* kept-steps) ;shorten l by drop steps in all ways + (incf count) + (when (and to (< to count)) + (return-from prog->)) + (when (implies from (<= from count)) + (format t "~2%Shorten proof attempt ~D of ~D" count ncombs) + (when (coder source + (cons 'together (append target kept-steps)) + :min (or min (- nsteps drop)) + :max (or max (- nsteps shorten-by)) + :all-proofs all-proofs + :variables variables) + (setf found t) + (unless all-proofs + (return-from prog->))))) + found)) + +(defun strip-ors (wff) + (cond + ((and (consp wff) (eq 'or (first wff))) + (reduce #'append (mapcar #'strip-ors (rest wff)))) + (t + (list wff)))) + +(defun condensed-detachment-rule-p (wff) + ;; recognizer for (or (not (p (i ?x ?y))) (or (not (p ?x)) (p ?y))) + (let ((l (strip-ors wff))) + (and (= 3 (length l)) + (let ((subst (some (lambda (x) + (let ((subst (pattern-match '(not (?pred (?fun ?var1 ?var2))) x))) + (and subst + (let ((var1 (sublis subst '?var1)) + (var2 (sublis subst '?var2))) + (and (neq var1 var2) + (can-be-free-variable-name var1) + (can-be-free-variable-name var2))) + subst))) + l))) + (and (member (sublis subst '(not (?pred ?var1))) l :test #'equal) + (member (sublis subst '(?pred ?var2)) l :test #'equal) + subst))))) + +(defun condensed-detachment-problem-p (assertions) + (and (every (lambda (x) (and (consp x) (eq 'assertion (first x)))) assertions) + (multiple-value-bind + (cd-rule subst) + (dolist (x assertions) + (let ((x (second x))) + (let ((subst (condensed-detachment-rule-p x))) + (when subst + (return (values x subst)))))) + (and cd-rule + (let ((axioms nil) + (target nil) + (axiom-pattern (sublis subst '((?pred ?x)))) + (target-pattern (sublis subst '(not (?pred ?x))))) + (dolist (x assertions (and axioms target (values (reverse axioms) target (sublis subst '?fun) (sublis subst '?pred)))) + (let ((x (second x))) + (unless (eq cd-rule x) + (let ((x (strip-ors x))) + (cond + ((pattern-match axiom-pattern x) + (push (second (first x)) axioms)) + ((and (null target) (every (lambda (x) (pattern-match target-pattern x)) x)) + (setf target (if (null (rest x)) + (second (second (first x))) + (cons 'together (mapcar (lambda (x) (second (second x))) x))))) + (t + (return nil)))))))))))) + +;;; coder.lisp EOF diff --git a/snark-20120808r02/src/collectors.abcl b/snark-20120808r02/src/collectors.abcl new file mode 100644 index 0000000000000000000000000000000000000000..56210613d3ff5b6a91d9391357aac61348fbe4ff GIT binary patch literal 21604 zcmb5VWmKGN)2*8joW|YV-Ge*9-3f%o-Q9yU?he7--7V0#ySqzp5*!X|t+V(3_B+OT z$65WW|JSUVbze0fCD~7q7$0C^VL#L+2T6bUA3wnRebYw%wekZG=_L zcV9wQCd*gPV$O$5=br<8V(#^~prQ^>$xhGK2{AUf&iVZz}PsY3sG4rzo9twwYfGPbun!-gngcu`*!Zk_~uT}3hEzY~&XWxF8P3wIl zP^)oqP~BFK-wqg9ybUMSHC6j+lr_{VXw2XbePWUG`S3@-2@?`zRVphHa~T6u(iJtF z7Zbdxs_}0E$23X;o<5O56g?MjF^~R<0TQM<(M_>VU(I0&=nFWSAHql01e+4u))1Yy zLV0gdka@{w}AHV|lnZK}gD<1i^XbhlH2#BJE2 z)JjW}V^K}Zd*L*zIGQek)N~gH9f1YmPw&Av%!R@GFhxdxSTdf8P^R#q0-^bsu70z?p`OQCzu=`=1G@W>^5%^_K*LP2(PmF<(a+ z*2kBvE|{(St0fqFpU%6jHwYzJ7}yaF=u?ePA3j9DfB2yE|Jjcy|5rbLV`Vb3b_$ML zl>rN*fZlAZW(QWx1&GVZX5jHUY*A&DXa<_JP&?u&^hPX^>f|LhWjd8Hygv}j{AdUd z5Vgj(*v>^GH;;R^CyB%ZxnlL! z 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 z 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. + +(in-package :snark-lisp) + +(defun make-collector () + (cons nil nil)) + +(defun collector-value (collector) + (car collector)) + +(defun collect-item (x collector) + ;; as in Interlisp TCONC, + ;; add single element x to the end of the list in (car collector) + ;; and update (cdr collector) to point to the end of the list + (setf x (cons x nil)) + (cond + ((null collector) + (cons x x)) + ((null (car collector)) + (rplacd collector (setf (car collector) x))) + (t + (rplacd collector (setf (cddr collector) x))))) + +(defun collect-list (l collector) + ;; as in Interlisp LCONC, + ;; add list l to the end of the list in (car collector) + ;; and update (cdr collector) to point to the end of the list + (cond + ((null l) + collector) + ((null collector) + (cons l (last l))) + ((null (car collector)) + (rplacd collector (last (setf (car collector) l)))) + (t + (rplacd collector (last (setf (cddr collector) l)))))) + +(defstruct (queue + (:constructor make-queue ()) + (:copier nil)) + (list nil :type list) + (last nil :type list)) + +(defun queue-empty-p (queue) + (null (queue-list queue))) + +(defun enqueue (item queue) + (let ((l (cons item nil))) + (setf (queue-last queue) (if (queue-list queue) (setf (rest (queue-last queue)) l) (setf (queue-list queue) l))) + item)) + +(defun dequeue (queue) + (let ((l (queue-list queue))) + (if l + (prog1 (first l) (setf (queue-list queue) (or (rest l) (setf (queue-last queue) nil)))) + nil))) + +(defmacro collect (item place) + ;; like (setf place (nconc place (list item))) + ;; except last cell of list is remembered in place-last + ;; so that operation is O(1) + ;; it can be used instead of (push item place) + (nreverse place) loop idiom + ;; user must declare place-last variable or slot + (let* ((args (if (atom place) + nil + (mapcar (lambda (arg) (list (gensym) arg)) (rest place)))) + (place (if (atom place) + place + (cons (first place) (mapcar #'first args)))) + (place-last (if (atom place) + (intern (concatenate + 'string + (symbol-name place) + (symbol-name :-last))) + (cons (intern (concatenate + 'string + (symbol-name (first place)) + (symbol-name :-last))) + (rest place)))) + (v (gensym)) + (l (gensym))) + `(let* ((,v (cons ,item nil)) ,@args (,l ,place)) + (cond + ((null ,l) + (setf ,place (setf ,place-last ,v))) + (t + (rplacd ,place-last (setf ,place-last ,v)) + ,l))))) + +(defmacro ncollect (list place) + ;; like (setf place (nconc place list)) + ;; except last cell of list is remembered in place-last + (let* ((args (if (atom place) + nil + (mapcar (lambda (arg) (list (gensym) arg)) (rest place)))) + (place (if (atom place) + place + (cons (first place) (mapcar #'first args)))) + (place-last (if (atom place) + (intern (concatenate + 'string + (symbol-name place) + (symbol-name :-last))) + (cons (intern (concatenate + 'string + (symbol-name (first place)) + (symbol-name :-last))) + (rest place)))) + (v (gensym)) + (l (gensym)) + (e (gensym))) + `(let* ((,v ,list) ,@args (,l ,place)) + (if (null ,v) + ,l + (let ((,e (rest ,v))) + (setf ,e (if (null ,e) ,v (last ,e))) + (cond + ((null ,l) + (setf ,place-last ,e) + (setf ,place ,v)) + (t + (rplacd ,place-last ,v) + (setf ,place-last ,e) + ,l))))))) + +;;; collectors.lisp EOF diff --git a/snark-20120808r02/src/connectives.abcl b/snark-20120808r02/src/connectives.abcl new file mode 100644 index 0000000000000000000000000000000000000000..f64bdca116d5d84b38f83c281f4c94b4119b12a3 GIT binary patch literal 81516 zcmb5VWmlYSx1}87~2`E-Nm^@S;$>oy$XH`6=4=M#&yduI82o86E4ISOlw61koPefl7xnX_)&jMePt zWFI_+9Om=fpYG;Wi{%Zi-5w7O+U2f-3lk%!joo*rzbofvBGa4PbZlW-PiHorA8H6} zG+M_dPG_t*-Im)30Lw4UUhB_K0$!GY~j= z0~srJ@`4yH_Pef2eX}M=euv7gir{d-3ZYGIH1kgJ8};CRJ$Zb9m(FFM76GB7Pa4+7 z;#}csjAl>dLr{!<^((Zf_jLey4HYUGDjF&pb23rruljXE_gWge)ixuKWDi#PcC+l4 z8j0%W;Z-!6Sc>>+0T&qgI(6LcDkl7yH4GPhL1?8ygs)70u&P}rZkd#QxgfXMgu1#Z z^f5Ky0RSzCm2g@pI5j#%qBBgpD7P8R5r1N8!+|=S`TcHx1K&pw1sPP#UN%laDwq`m zSD1nbgxj~PeS6XYLoQ_-UGzayzC$u!bU8h!1J`|s6lbirDQKJQs-Ke8I%60E+80kK zFfi6KxUT(!P!Z*naGZePZ*Br1<#IS)EWl-v#Oj1PtIWCdPxv45AyPsmmXolmlQ=nP zDNWQIT^A_dQFhO%lycQ>e)txK5opjckKgXe5Oo`W?3w66_~H1+BBqVi@KtP>LW!4=ltacRPdQ|9_wIHq&jkTNlht-w zaaF;EF2RyQ=fIeapwDO74G?xIAqdI_L~wbKQ*^;=$|b&5jhj@5>0xn^Qwi$Ur6;{* z3uZS}V-_<-VVTrl7^viURM&kY#SRj;3%4ms@UqmNSMUTe{JT11TPBO~W5nccNfBpN z7<7xv>j;xI?@`kR$3s$Ra!1gmgyKR{kf-O%=GB)REonO&wZmOXO2_?Q$-%64(Yn&) z`x{| zOA!;))9|a|$EMh>rqrxwM{L_5^ZeP{N8^fMt;4Y%Kf`ba<%}!)PkKM0|nPg41 zp~3_`F%&5Zvb>NRxBalEJuK3#giWpqcNEx?Vu{^ET?=yOv<(${^6+g7;ToWbbk^gz zbl>nD8u^gQfH-bm_Ue_&K`j%G{LwV|1NSIh9sf)VcJnM!w1oBO5%CHWKKYHlrF;5T zQt?ufW`My^(_HlSm7C6{+>CnnzLus@HnGuSST&|TJ(?iru1-MCS8K!JFOF)T;xy*a z!gc)t_*#Z74f*={kSPT(4l`yn@_JJYYOu62H{TJ(<3y?02{Gy#l~3t$8%2-pP`>Zc zaQC6L8~1V)=Rqe|4q4MZ_AfGBIFOcO-mTN&235^__4lpNf3y{oNS?e2c5E@>i0moL zpG)Bcj+wI5i5>avm8_TnLHxeu&1{xQ9p)qv^c;BIfcU4_^Ge7GL=*Rx#UkTa;F5B- zuqwF5uX%=3*(I7APTEu{jM|+xuQ|+Yy}l9BE17;ryBm$93>$aaB?pM8_dvn{6vJg* z!NeuE@5C10Zao36krXMtIlk>OAASEe_>&kigWKitcb0ZoSw$wLEVV3#esahcL!*(w zmBScZY$M1^obq@;RXDovVq6+l@f(Dq3=C|fCmX}?#}6Oqh(CN#{C^Gs)c@}gFkogd zv2iR{vs9V+4D!(r&6{=e&2dx4sLv08*B84e3f7iGP7U2=mdBaLkwd4D!+zQRI?WPF zn!9l;!QHWXj14!rwNH z>leQ)rY^!#E&>XDVLhS9*fW4&SXBzVNl3CAjrvgQiK0cn4xbxg;+rw;h&=-mya?MI zR0GASNJ(h^MQPZ*S{x%XNqu7~)eM9gbHBu@n)dyax$<$P6m z2$M26JL%7=CbM$Gma2+vI8yQuECmyJdxFgLG251=A~Z{U%Q<$zhLXC&Cv)-!N9cM! zgW>Q*gdJ^l#=vN^BM$+U7X1E?JxC*4s$5!y7DP*ZXn0wlt4$bQd z6pEXsBh&-!E&R0^1+T%?d4>^L!HGRK_hI|ahAJ=K`%c_QWLGPFOp(W^y1j@!9JO2S zJ(nw7a1zG2R*hnsygzl6pE!(;YxYxe^e5crc)DTFnma$NGvl8ZRFVXFfl2i@WtcDx zHouIfxa>ooraLBT51pCi>v(agDX0TliIY_7c=K8{5BBX>cZO%^BzAG@LobHK`^=b7 z*KFMin(T(g#tnGB3NLqmP{H1cRDkWRNw~MvRCl+=w>}kFWg=gN5Zc#EySs8N3W+V1 ztS~WlxR}L}uiSp#yxAOu(beypYotdt?jyAN2yS-z(Y&s3Fol-wd_%{9s_$Pi!r8nV z$tibY6V7kFSQvCqC72)?!I>|}J#SxU>*Y&Zw94!g5H6!yUHuEjqIuU7SpNl`Z~Xer zii9oxAl)M}Rmvmisjb8Eht6(uq=sSeK1|!6%`MlzDjO8?SD}RZ@Zl%Szfl>>|5ceH zkUx=xnw?=YkXB7eN4sb<&`(Be)~aPu6`1HSeNiAj1C~-2@4Qc~3)>z%aD7pVxT|-@ zg_^@=WpsCUcjdlY^)%@4dbxn>f+j!}*R4!oZfnsjgYO+#Oz4bDuGj0_3W<){!gfZ5 zRe(VK1D3RURzx9I45%_dh@LcIa9+Iu;O)=`*Zqu!PXo_pJ@%V!pL?rq%U%EnbutsaRc=1R23+NX^&rZ0a zGsL7R?*fulB)}@TidVG7a0&j;(C4Iz7p~7-Xqdq|1~oR-_oP`O;E9kRqrWn{d6$_) zP0QDM?$80IuwHQcF+2^I^dg%E1J(#lgj9>TeHsd~5|iG5(QCQsmSD1K)aJ=C!b5R! zEhVLDnDiW(vaY^SN7-Wx{Y_VGT8bZYPlU!&)7}6+XE3hA36bYSUSWa1N*Uyvg@w@eHNE{Bv9}n5X7y%i&eZ?4QxO{?K zF9eAi_P25}V9m=`ZB!)&J;R1OQja>-FNpjIa-tg9M^`ceFE29aD>^23G=Gjz*J;8E zrcLAy6(ZE|EO7}p;Y*yt42*Wr)Qs6~3A6=XkjUxRpd%f<4CKTpRN78#AsDL>F*cZJ9cEq#x4dg^Z z6c|AK8klpPMCy2Dk5`P4xNkpI=+j%#tz3W@?UF8 z&H%jKoK~Ytd{+Ru5%?^+;}pFN#?;}F7tFomsVB-LNI1=d~)AZOZaZ`E~-ul&wIiwcn*0tOoy&b4>7rR+%6BpLu~2GZ z!5bFF?%+06(DZFiF~)*Zyuv`QNWKnQnPjoJp*$l%uM^jKw)$g;Dped$1D8}}aGp(t zd>5@euMbqev`{QdORQ>9o>y_D>mM%OR<=0>w4nz`Uh2>T85+N{hl;6Vw$&;#&Sjv? zGQ3CjP6B^N^8JFNz5fo82;bn%pGcFK8R1f?@vYA#)vCts^a(0Z+@ZjXO=gflZh9!{ z#YW6?1)q!W4T9{5#%`(qoGf82qhi!~Kj-n4cw5P^S=;inyW#i&+%wF#P+g{&gjBE0F&p@Xo}_Ou6yL$zD+6pV=2zapKMvNkosoOqW#csl zhIiF}(9QJQ+3$Z$5AX;oQplg~bUX5tOs~-x*!+GoVQg>9J-rsX2#1K}JNS9yEE$pY z!1-5?7bGZXO7D8q|5tis`;Q*aRnU}x{2Fl|dw?w8zXZl%Q%MGrt zC+s1X)3=V-Fx?{GF4@x*AiqGoD9O2YW2eIHi9BtcdVZZ~-d}e-KdIah^nuhAOW346 zIWrx8Fedidgg_OS4j4VwAZUVBDNvK4QrAu-wnnQ!F;$=tl`dq>WLo;J=7VZIdt5GGu)oMJl`|Ie-nj|o7z!anecGu{N?^ww7 z;B~8bv}Vc|#vJ>A@s99E(J2hh%=CX<=QruDj+nE4OB3Q1Tk>zk0>=>|@b`H4tdgrG zZ1ASXT=)`&L<-w3^I=N79WQkyh*$55K#xGvJfXTyJDKz`GclqILp>l@A2Gde3v&gg zaJ^?3!mttyYUe^p?Sak`{CytL2gJM$`A7RZENSeeCtZJtU_QkUx)9U@+o^F@_g$fm zmwHqf&40m#4W$snk9mk`n&#&?GIYc&)u~3$r1jn#K-Fyj67t2x+coG#LB_aCb)6Z{ zx>)(hNI;6%gDx<}+~W>uyDA{U<;KXh`r{n%)1YPHmx>RB^JPS~Om{W|&B3|hGcSeb zIj6OkSBXRs$fgM=Z)O`)q414!7b4gn=`4!0w7mNmXXIE0jtCT~E_V+W* zJDasv#x#16A3iKY|C@!3{eRC2l^I18ewl1bYgFxMWK@LEMaX;-12sjeZY%b@uyU>l zWZ9JU;%+vh>AKwSgXVO(ECTmX&q@)g3D{}XlQ7rzj$gmIOf1!=K0m(fQ2L4uf_=Cv zJKV~L`*ii?&OUwyclf2a-?DrlH2UR2Lp@d;`c2A0ewfWlf;s>T&KnHT`z^p^uZ&;r zElUlW7+nLYJ}`lWy)=fVDZ)r?{>?i^k>?A&S4o16BR>G{2g);SO~iew4F_r$Mo$!J z-M0=WDksk4#W@#}9%Y!0h$a59Q+u<60kudYU#2w(nw2@yUf>@8KoL&G6bc#%^jn}2 z_F1fYNaFta6;Cx`KRX}*rO&x%F+l!ZDEBN!NJh`fo&ENt!AfE16uezdD>X?8BSrXS zl1W6+@LyeL4(ImjnT+)h=w;CYGX=*^$Q%RmV!kKDvP#DYt+uIxh`G8L>qxWb`h zscLzhJ4^TQ`;iI2x1U{U;yqWI>*=I)*}yuCq85R~r(+KXAaRR+1BJ`1pS|fkP?7IF zCyygY=^FK5jc9y`J#l-cMl>%MHIf-K7R?7ZoUUzjJxp6ik!+kDvvfji_Ju@Pk8}FH zeHQ975c!a5NHCeQKnaS+b20Xz+CyLHv;Fj3oub*>dN<$k+}slaVo=Hr%4lH zxc$@oM3(h|DH95B-?AOL%C+3+sCVx(pLgGHb4j_ph*V7;J7$~9qpzm&7b%t@>#tCM z`7{fA@G*MlbM0U8$?+dPH&oD!{)=}eU{eK~Ac-Z$(}{2Jt$Uc_Ise9c|o{snd47sH0zEA(SnI}isp>>K3m9-HyoXc zg7cBQ@M~LBR<=ebBTE^2KNz(@v02X{JBz5wH0Uqjzi3LrqPAJC&882OqcKiw>^a*o z23v#RiNcP-)d=ZPOu`4$XK4M5_0|B+XHXxPQ4N%At!%7Tb7<~M92m||!M(kfcYDT*gOn0frxxek^ukM2kMhfjcayzcS!lSI@n z&un(QjL?_2`Z8+?lO#lL7v^(Xt1bN)vqN&CjXqr!R1Xj2+7{?M)Kc9S3_J92o zC}B=_)6I9%&UtsTwD#_w_YbGMzG610k9BJ~6}ILw+QgX*!$iWB(GwkR47sUH+a79j zH%B?jm<5INC%GbO=A_w)lV5o|F7U>vQ|5JQX<(P~d<+Rvt;U>6O13;3RP>(i)U}f5pI(wb17$aywVM5&~Lhy4N%wNJ# zjI+-y^;nybHQ-`xljs&4k^*OVmM0`Zq=WsXYjbn)qa;Qr!bSrQq@l-2L;%5+Apt3C zacxGvz4>Fyf<>AGmV(zw`aXx!JtjGjU}3>@Y8E4!og?{ndKHcUa`)>S&204#sXXH* ze=W%P?Ih&sFe15wacdr;ffD8dI!{xqA37*A`AP536#XuH*AL<`;UWm zukv~K_rpla(WS9fJE4iYjdGx|l-h9i{;KW#Ck;lbn3kEm6FTv)2<7^(geFE(l#5y9 z`I11wFAIz8i4a-0!ClsQC2YcHh*zosxzJoz%tu3l zKkKQUe@@PpwBwKMmRS@cW@xY>UI6|Drw$A1CpC6$bH{1KiHeaoD*U#GF8t;06_yLNZyi!4 z_?q>1;Uy-fxhO>9D8flsl5I4=7?KKRK&x(Le2K*B1$@Pf1v)dGYw$w!+C=lIJnAR= zwMeExrWuHqQ?>}Xp9{kkOHBONaR|Z8;CZ=~8xB9T%HQYT(pMw5KLwITp_m6lAMLyD zmP4WDIw9pHs)^;QuYO57`fSG4ASWBQG-M>+#pPdwe`3Z`nrs?)Nn4-ZmCj^m5@WP0 zCeTPqn^KmLp>n5|Ow}M=5_~A=M60xF%{$5@tE;TO7ruc5afc248i6Yp`Fr!?yV%ik zFLVqlUl$%!sc7`o3_!^2fS!h?_lw3G8^I&NPXLtojC1p8J%Uk^ye>{VBJsIt+5Hru zQk&?vOrQ>D+0TcA6&I_#E;G)LE%B1y2r`b;V>2g#ZD-mFn8!xL2h`s2C6?F5wMu(- zVwKvfgfxYRIBkZHLD}!HcJB*?;m}Qe&4w}Y>9pkhjSOGj4om9K&cs(R!$$l}$q+8p zIF9-Nrar8g#X2z){G<^k{>16!w~Ad}&0S3SS!&7=;N2&Qi<65f(Ck~09of~j%dPIJ zlO$cw#QXN~n)(kmE+J7}mHm9rv=+)1_L5>(o2Uz`B;OsvUppn@(g)c6>vfd-zrre$ zEoF_0^Pv38@7+#|gT3G&^BYo_fpx(<_g#61={U0J6nSB<#F^C*!}puW7ZTid%6RGj zY@=Ue{y{bNKW?gJgVu6ApwMQ<>=H^a*kJgG)wmMIvIN&?`qW6y16SE5E(8`Jzf zWhA~MCXAImP{+TuT+*J4`}Owys2sce!>7!gZmq&hI>UN-F8=#QUL9sx{#|{IN%=1# zp$L*N*o9~>EvmdPx+FKv!j(3O$lxsu-NJb?lF|CXg_yO}^u1oAPpB-qQa0LYFVsvnMY|EBh-KQjcp0xi{sF1}_0b@EopV;htxN)yVPL^f#$nDI$A z%F`OkDM3ZE-C=DymKd$M4sSVzU$N#82FYZkw!>{5aIfCg)~;uNv5LgdVJ~Afar&JG zPg^x5|HFm8ChcjUMGZ^h#Bag&NvqomOzSb2nQOM3qgfdr&{~>Ezm+;%+!{!g^eS?0 z@F)4w9c3Sa_L=aYD@yQd2kupPk0&fDoe?V7)Cb1|{QZ_zWVl{MRM1GZx!CEGD>|V+ zsjS^Wn> z8H$w>ag`U2rR*99DQVw*4Hkal74k2kC>48xf9-VSf3#Dy|9?-!^j{Gjkw~4tni@UPnWwB zivMh+5Z2)J+xE6cVcN3_+I(A68A#NY`mxnNj&SKc^+AW$CfgUrIurka;+^l=c#eaerlcuw7m1m03%5yFv=ER z3?o8799RYnp>Yte{O}p1-|cKAN77^b(~W-VB`x&~FB_)a2Q1L@1;Jvy7(XSU$fntB z>}J#iRXhzvo5OZS2TuBZ=8rjBaR!cnf`$8uvK=ey=#7%zA=Q}8>E~|}PO|7W=4u!N zrcF=1_IQDEp`|?QqsPpCvx27()bM+6VJnD*KpqVlo;g5vF?xRb-;O0cKx=Zfo?nD5 zHUQ34q*!pZBmA=a4kvk-4!FvVGOT3)z3Q#=s_s-Dt(eNrB;_+N^XQ{xU{+OJs#tuK z#c^hT+j;fp1LmU&TANBOSnCWvP7m~+^`GzTb`D&|6zi$mELDwDI-6C6zJ*B@DHZ?I_zQS1!Q@_z7A z3V{b~L?9d!POYNc&anPM%H;8F&h#D9v402YKW%2d>i>>SQ6GCy-cL>ie`AvcdBJ;Z z;w|rjHkrBUq8s6?YdGOK-kuelt=&?U|34?EVl!cP3&M_J%2$+GrZy20IRpS8p^84^jH>7V~r_q|k7$L|(A=1l1Z3UaOI` zU{sx=TjSIB*tFh|vi2D~N8rJq+sf^FSjGe{tq@LPT7XKaO$lltJ|frodKBS9M&$d<{JBryBL@`#GL{C=@f_|X!k}@Mi<1iK)y;Y ztEXtXSH40GcLy8e##oooYohdGF!9*H77;*XtVyOw4$ez0K$d}45K@Po@qQSQYz@PB zC8$fVMVL9n?5XHyP(2q;@+L&qy$veE`gvY!lA7Wmz_6aCW)9Qv#64Ll+ED9JhC}Zl zn&dvym?6i9WG|lfS#wHG$%5Uwr=p16-w`gMJfS?K?TjGsEhUPa6NzMXlj;rslUqsC zMjNgxOu#t-bX5cZHu9dW5B4s!&fywZJH@MXj_p^N^fv1*%eVJEi(sAEiI`_nNKC{W z^cp(Fz}9oR!WC4}Jz{A12(b3F9i>=KGI;hA^%F2TCe7nernD`~Z~`{C-#U}D-q=tc zrvH!(tq5UlIQCi!!6`;YAog9j$d zHa-$_w^W~CFBM(H765j=YCUe~B&A0!qdi*qrxRl`APUiN4ILSop9qfNErbC4?psiW zQQYL4jf!`UMPSZ;=C@<#0P6Ycw7z@7mIr7%4m=82(*0RgH}o5^9(q5rb-2>s*C_8p zUzi>@Nth>MC5c3l_(w9)7%WiOQ+@_6m;Qyd3Ei#ASWkWI8hp$NZ#1T|FaGuOq9=r_ z|G^!XK27^TXu0P2lD(6Ss!UmzHtk34_`z>ygsJj!c&PpQjb-N8w9MlNsNZ8+PD6Fe zm4W)*bUY+UC01j#qVq^d{NKkWY`Xl(I5mG0ir{|o_qn!X0s-|`PM3ri7{21R?-O1wg1 zAoC~dw;7lDLH7fZ2%}NSN2i%mg2f1`^Lv-MiX{nQ;TROHdcD>L%mz1(@2LxiYtRf? zf=Jjtt-aIy5kbQ8|W0i`^vI)l<6V$tx#m5~vdpISYG$vqKU z-vGHFN`Sz!G9gt;_CY|9O?w4XpSVz@@fGKqF{DN+gbKL&`;Dp>{yoVSju6_{0JX|X zl#`cAVOvC5V*CN;QIw*jE?q@4X!vZ_%0uvF!zK1AED0tozxvu;fQ~gsPfFoy^4}Ge z4%7dnk;{OleI&G8d;HMe$=1VE-LO3!@>Kf^_g#c+Ap;T|dgbz;TE97vhEwF<#4pyN zPY>5=k${IP8?SLkA6@G&vO##wN_asu^l9YT`k>2xlk+^#Uuesd(pa+}4c7IZZ76sX zCn{)9hBEm3FR+)`8NBNZVb9;hk08*$_3LgoY!&sLR=CFw!zwtrngCaYY?%XNCMF-h zl@&zUQFbQ&C+u3s8#wE8Vs@tQt6gI|OugRvq{Owu#~zwZkLZ7=e;)-a`ri<>{_m#$ ze+nlRJq2_n6n>HHl?0MH5;0Wx&}B$dv7#*Uet31<#D;3b{`=1jE2%9_gu5;)2gq0W z%ruwXgqx8p;|)nkng{+*Os;ol$*ipVt54SpcZ472qe!8z>#y_+&>&I8OY)ybu!x~y z;WRkZ^p*j;%AG<4B)fwPFX2bfyIuaIZ1PJqhm3s1k9=W=Lz(9?tiZxP_vb*Ai#I^J0#Bq#% z`=LrEdCe23HHTBu8MN?FHrp9iUSXlI+a(VC8P8e#OXF9F&Y34A-Tp7o4!Xp${NGbH z#(<^R<eE_?-=a9T}$ee&3QH3f9}w9wlW zsMT}AO+UZ>$U-ZL2E5b<*+%m7-*5bYd93!uMIGItAXcQY0`GQ(=``V+!JMNMVTvsi z(glD1?eyTg&Uct zWe$_R=Q;Jqj4cuF?})QHzMxMdf;!4&<*rbNj(TNx3c?3>AU}RNyJ+f`~1|Z>4&i0gwtXHop zGLA{_`?Wq5fOwI@7tqr9&98Z{Qd2jZagk5xh!hwxK&dHkroOlhI$=5g=GAqKLh$W&^AB;&3UEGG*au_O6(d zgwX2#j}1;Ln%j`ox2OJZJ(c5&6Y*hWDiY?;MS{bZCk%3F)I%x2-zK-z>or^pS0p4Kk=03bR~MuxT_}Ors|X*JuC{=^S|VyC z#_lrZb&26-B38I5`X)(m=8bXqiH~+2YsX+&>flYLT8lvASy9sc7!d&MAAO@yYK?d8P4|u=)!k5L+>tz7BP<7YZ z>Ae`Ns4bBWx~5G$RMBQ8I;Ev^{$L8wE8r`D=QZC-szbZ}4K|^6u>aunL&X+;&w)He zJrF%lQ(YHzy4XgRX3y@Y79j;TpRz!G$B_tltFAzWsU-_5ZkRN`fFMES|MHaPj zlij>Qnvs{Uc7E}(Q|WTV@^V_n`*~GNY-(&`VvO8vGzlxI3o-Dg1Tf%v@&p6voZ0@! zq<-2`Wib`1^n926_p0i36LuFKCg_>IUQhK1zrN38>UYNk3J)485@Aw0)i9s3nG50e zAERMMzJ!xFR=~4|*=a>pM#xaUaDNa+3XQT<3@bMwSR~e+ptJ#wJ)4*QH#vd(O0`>& zbL>D$dHwjs+8cNuBa1SXYmNU=+g1(f4z^T!E^8T%x0QY?_Jcrwpk*$I?`-910=6lR z?zizrLIFYFFRz~>YY?RZj6~@sFEDmx%ZSWWj{S76g!pIE_mpa#30cxgoB$$oD=vrl zxGCkr*|uBnLo(gSZN)-;R-M*#RvR$9>Fx+w^;AKbe&T*$@rmln){mS|D=!a|_V)F7 zSDv#}J(btp0W!1YtK+~CWFYN0@#&_FVE1K`nY{YUoL8ZeI-(Z!0(Fw_>&~ly3)V0y8nZHW+ zfx!A&pAFWb9v#d%v|!DjW(N4yC_iZfeMEtS@0Nl(1+&jEXI2+eQBWMKokmo+4lkkE z%2*xz7coIx%?Akb7xmuIt)SEGF@D{IoHKz9dUQd2 z3YWgK-<-l`MJ@@7zc2Ux_T$`^iu$7<8C8dK6_Y5)boRRb?FOnphnNwLZANK&dkIM* zQ>;)w0Z1S6aY19gompGM;w9w(rQ_kBlKN3nngi?IQcB?dr;_@=tzZANfaPjW3Nwnp z*E4-nQ`q1uASIVGW0FX~B?=xD&*>+gS-SoxyVm4BJMuMgvR4%zba67!_c_5~w-!Y5 zzJ~i|)Q6v*hKlPOrFnDZ&M-XA4KP|*4E7Obs5?}Duq4nK11F3of z?LK+Z5Hq`tU3>}(KS7#Mqmo7*$5!&d7GI&H$jZ#NHgTk_jt-60Nw_flfVIjM`4dpd zTU|qBc*#8_Yc(iom1Hytovy43kt#NL zZP&zR!hB|-akZw?x_{P`76cgd=(5Ytoim&dsl=e+rql&AGSy4Gb6h?X5Se6r=})ux zYHW2Q0?jEVOFGP?7`JgHm}feulRqz2q#lk5mB71?Y4@|v@r)_V6%3zbf^yHBQK}xi z)_}oFt49|yW+EgC_-U?aE8nHZL;EaOtszRcqyOa9uzsLBj-Y9JFr?<3o=78yE_T(p zHwQ+kd~zc)Mmz?rwYDVe?0wT^jKltN?d=vAQ>P14Ht%@>3m2Vo$&7Cz!(H#3#xq~X zM~&7P_EpU>P+yArQnfy5?=c}wZKyP9zQiMhBzu*Ndc5Ix}iT$ysbj#i!Qmc3ojoBbAqlLqA8-Lp=EgFZoF%$Sny#xEZp` z7sx0A?Ufv5QV@ZA7?#WIz(G-r(_^reUc+gKfYf@8!b%z;G8%ZoO1v-%ks!cUvz9d_ zrm#sKo_bTab*S)n{+>g$)*imk-{}AGOQZiLlz-~Tdi7&hbTQzYT&&qlO`9L&M|b#X zjRPona#b>0m0+9L7{oZg2AkM==;=J0SV;IH3^6YffuGw@`M2~1njX7@+!;Gq_uGP- znOo+Uhh71$V;nqL*f zMEI6cId0VGQ?i|psn?>qK$yFesuod(CWc0VebPvXx0>&AOo^Mz`^ z>P0mIQdpXHhG@xW=KERb81t4jyQ@fow8@es5297e6wXhJmZ`RkK2eHk=;-LQ>-Ssv zoRwa{_Qp`dvw3w*))#?|KS>FeNK8}1x00HlI@}uW3ki=TU%;(!!^tfsDuvbv$7Q7% zE$KO%o6vXSVKk%LKUGT=<&YlEY+LH}^Vn&I-va*FTO>||AOZq@J2Yc-E^mw4a%dfw zd~p-4;a~;Ixf7rfm?q8T7yfeMgvn_NJs-bkwxR!p=|2Nh3)NP;&&I9Lej!R72K$m`5r2VqMI>syhn z)#Ad*uQP{O9Bfap6fSuQF-Xz$1bt8;%-S|;ilL4NB>y__*o3^7dwF%3)>08r0;cM` zQ4;A_;d|q0x!28gmmNjE`Y}BD8Pb)WjxN=Nu*I%8wX(0)BJ9rVDpr z=m4vWkqJokTE!?D9wh&6&*KGF*o6V(BfE{{MLd`Ay|Pn*E(Ze+Mrdkch4{Jl`${axP$h9`}!dA)WQ@p?8&y$8D+M?_s@>z35PQS+*At1_c6ui1+vl4o%F~gN# z^f`IE*tT5B8l9GnM?uuGB`QHz)KXhHtPW<-ma-sCYRR42i!r89B?Lq5C%R zgjR2?0VK8$FBr8aFMnPkP8c~2U?`y6@WdieZ_*_Y6NC8Bu1_6SeHfv4KHrG z$~Pn&z8%aXb{9;0aa|P)t!(UqcuTLAH}1r&V3yx2)VmHo01Kn%U1O{|liF|99aQvIxCQ#zJiPBt!F9zBqHl_}U z;OeID`G@$PFaG(0RN?rBHR=6v67TyX)c^P6r2ppY|GUIrQGQ>5^n!%Ztx#~3>`1;T zDQBrd*J+AM+t#B=+rrCdrqzwj8m2H2o8I(YT6^`g_=h3;_!90l#cmFU(Z9D&`!Qwp z3rn7rv6-D6Zy&0lla1J3JQ%6Xf96{d(^LLjTGLgfKD9X=p5jC9pUmBj39u!A2qYe< z=u>U2P#a0H8UVZ;Fj35OWd~&&aN>_~)SBs+w`o}8h$zP(&zi8C6`9c&a5dP?qrG*6 z4ASS&5FVS3NWyM*1)+#CiZsRziMi>Tfa=)mTXX~_Y2^DGj(qR}_b|WF`?pH`IV775 zIgN26lu7yoX=lg;jmn8FzKrSD zi&E?nt_#Iuhp0k+TD$KJn{~_Uq z*F&=nD5Kg8(J3H81N_iUINKMMcvZ1!3Nr_I#|PS47wllg;1SiU-4XwiHy)8=6!TF2 zlF8Gc&&+VLmR?g5_sgsh$w@l8jrh1A!FqNiMNf6)(?>*V_1+2#?6oz3Zp~iKh3 z8R%FIBnk0>KF%v~fTUD7<5-rbBcjca5SrwxW}LFCwz>4}rSNviFrHW}mn%16WS`)L zj!V3g>MEaANlT@_fHAl9u~fKLM8RGeiCx8%22w_57pi621Q_N zi+4_##BJG(lorZWS}v3{9OmQ7Ke=n?!vvWCDDfLjJnh!$Q|4J~?O4B{9W^wY6yO%< zDB$8xI2@0>eUDXzslwS{FD>t{fkkTbb@(+H`AeK3an~VjtIj;NUf6l1frqf#<@pLniOqoQYo;@{FW*~%!C!djl!l)w@*d6m9MZ>6iGKAy1SQ3q zqMq;6eSkCnw9mQnZ3SDBiUp!;XOqn^MPukO9`N0CVErVK&c-@sgB!u-&(u=G5KIX7p6p2r zmWK6^{Gz^aZPSSU=wRVMsv*YLV8E%mkW~x&!vcqqzb{JuEdf#l# zDr<`*Cy(e7#`l=e-*nW}FmJ1FTlqyDclW1ZT}y`PKHhhSBZFGg`F)|ZE260Z|6Xt= z<}}4K-lr>lvUthi=r**Wq0bQ{pU@S$6!X;}NH4x?9k#JGz-%EF{BWrcO6HW5 zF%VB^RTh|59SW|ixpB_3?LZ0!$t`{#q&#F2XAz(eho+KR?JYLA6oL(((W@dkkg>X8 zjuAXDvZlX1hkVU^^?hRu%Xi<-XX?v)Y+7T(|?d%ZU@^eoXz_~hNgcN zFIfKb?Sq=F2Cf*;rvT2TrT}w#-Y>qvaPET^DQFhsZ}9GVM^Dn9d@?=v?*x5bF}eU9Uz(J)ryTcI zA8Q((4e4Vi;%S$~IZES63<2IA%(WhZekhmCIngYlu?yC#DAX%fwuM)9R0k$ahTH^L z^5fLlzZ0f50m-7T(bXn-Hoca4P70dxCR^^qZUUc6J66h?{|E!%NoXEX$pz7NXWXC} znRU@tiz;Uc9A-w~8<&)R+0%CEXSp0YN~F=H4UA0pd<;y5D3h^sT&ZzyCo3!1)8f_b zCK7qe+0$IN75r6ud)Gu@5V=LdP#nC&(rXa~)v#iP;Ir`U2pH){3ovO9bE!ir1@)8y zNX=Pj-NK3E4uW-6nEj65=#^ik&Gfsedix598*Xgvv;)_iEBctCVHx%OD9Ky z-3QGUXd%$5E?c-i-3Y3<6P1LYQI5EYO#cyOmko>>|AEf6YU|!syoq091#5JYa`vY} zb{4M8g?}MiDC-Ua`juc!j*rP^v00)^pi)uce1} zZIg$Iv9Zs6naPVwQBaKTCsh7Pm*V1T9FVxmGj}RKfjzyG@mcZKQJlLOHMmm6v}F4y z)r0XQZ*(J`z740fZd`bZTt`vM3MR#b_Lcdj=%<1_0)X;)-(fM2gmbof-b|E@>9R=h zwu&xPulWt9G~QJ!p2DwQ3B^pqBhYcYhz(!&iOE~&5cYy8A+dw_)28Ti+5}-FzR@O1 zrIRKMoK~i*)*ULbBE$xvQ7y{rN0InRX8IEpjoWQz@xgvX623Atq0+z-kE;(~$Ae-$ zla_l=zPjlkJSbm#6SJ@huDXI(VquzEqrWI9t@K_+CY7D+n9#GeM)n}z04IwdfdS^< z31fP19J=Aq-3>~2cXv0^4bt!) z^qKk2JM;c9{tx@U?rX2lT5CuAIFwP!&@*U9G!ggpRwftztu zkDy0)>L6>Q*S*olm5LgUZrdQ2}w(PMo7Gn^i*0%9UoE&blvx}m&7}Jq5 zvc(2}7`br_U(d0_ly#00b~l}O2Wd&ymme3fiE-5$CuT80cXGwqNlAT+JvQBSb%1zA zwse$N*B6tsDKH!G9}>fIgM#||<=8#^g9Ud@5E)BKy5me;DUyC~Li=&Y1eY`4VHjH$ zh{`8fsej3^a|G4F^a=Y5ehd62`1zZKe2)^2Vrb@L!ujaR&-$cz){Zx4y?P8dNTYcs zX0NZem%JL9vr_`XiK9sP;vJDpphAsPGB0XdQ0mBa>^rn0vn9xkg6me4!!YC7D4_El z7^z#IYyT+5B3yeVGB%B!S!d!4-0-f*JD@kkL@AtrzBbStVB&M&u^a_HacierL>?iE8*nb zh1+w*mq^zaXggb9^J1M5E!6FOmSHUP=`*Yf&D;MO0=6EZRxZBh z%=;TEeiOfZLh(>v-@rgVp%wUlSzy`!X4=)XA>IJ&r!qt)D*7HcJ@i_7>`WzYY&}^z zAPQZQPB+TrC932i_Txx)j%TE{t9I`(aFcL-%$?_dr)22Q|z*m z3N@`JCUeda-WIassSjO zYi5SjtIpx`67<&-=Gz@0yYjvnowobbxrGTV* zjd^?~)pn7~o0y*iT7;q<;4PYyP;V3XtK}62rGaPB@@sktx9&(LBER~7VWk!>R3jFQ z(JcBP=k0j{==2PMb2W?@dd7jLwM!+9YTeh*2@d?GwqIC-7})fB)Zy!U^u6Me!6Hnq zjM-Y$o)O6#SgOBA+w&cVUw;)OnsDdhj?ri)YsRnH_x+xjp^k5@PQJ3$(9=&&sG}Fl zN~*PV&Ir9qu$TLKo{7ya05_hpz^5D9wp`rvEq{DV`7bHmt^t2=Jk=5k%`S9+%uA?cAp$on z#c6m{ZdM*h6ptDtY~&&A3t^i|9{NbRkIBeCj1-PxPSVGui2B$5v<^5r)H%3FA_ z^fm|7-60I~MB^aBUDOKoI5F+xA2Y6`{Y9?;Rky9>W0Ci=u7^hUc%=?xmy0hAT(h3yIEJN^d>J}mu*7soh$x@&?Z>yOTlyc1E8fTjc0jZfff^kj;mAS_eZ-E&4sQcGYt19I8M^z9uOiB|Yy zjo)}WcHo%eWAb<4JZ(y!yF9)ApvjNV_$J?&BwprYsX+IN6H`zzpx6XxJNhXod<$ju z+K+HL1|ToJX5d!u}j)S$;(zbmxS4g0C6ql6Aq2ktU-eP2u6IKdDW=&KbTI|D5p50J@3{$kNX-g_2~rm2c!x zDae#f<>K4M5WC57o^|4|P-@M%;k9NZc!Z%JL(k^Y9qcBbqGR^zjB{Rt-ml|^1_v^2 z4W?vfrDxUs#;FyOFg;Mi!swSOA}D41`0&T9U|Mg{_6YUr)hy%y{r^`U*#FpMO4V#2 zR1x@f1lfg9%#fTm5YhK|pssN3RK;kry9}LQ29YiAK*7AyCf<(X@6mZf@K`21a04b| ztJDg8JIs5;J9-Z(XldG6ypAwyu|5q20qje_IKD4o za&8BR9D|8Lob~%_vXov{vC$$U{NXQvQ4?>(#a^uRBT-KV-;g?N$yeEcP7=#*RtY^< zimb!%P2|p4O>x&!yM!hu%z1TCc_nfArgyQ|@8^yucI_wKRHFC(Y(X|^_gzCC%q)U2 za(gLyw7A%Xv2qOcQqj5+pQtgq0AjU8(u(P@j((Y|6@3iFhPKvs45b73lxQev%5gM0 z5ftn6?ES2JP?NTUS?2^_n$C=kWW!ne5l4d%+gh5#|l4j3QUw;8J<1b4MiC*$kHvO|L|Bvj_vo zy@#(fV&?A5IyYpCHGU}+swP%g*Ak`fpj=z5;Smot2mmQhsP~M`DJ`R+ypRw@I$(6% zrM)R!(CQTJFFiP21E&y%T7`8SP`>)kU{LNs4R%<-ZZQ)C)2(AcFWSOpXNp}`v(5GN zLG`HNWl}~Lx)5TeUcZ_o?h)D0<~L8F67u=AE`E+aZ){C^y{$%gA!B4jTDwY|nx0)5 zV7|r_=AH!e`SMSm_DZ!Iu^J+`S^nF$^2ed$uVVCq(gp4PJ{<)61)&lJ_T??2BTI(C zXEB>5bgLlhgKzp>mIpoOs<%q1UXFcm5T@`;;=8Aj9V=}4FyPB-qu_PZ{fPVD_yXY~ z-~uJveT?&cJEhB;fU96fFdX+v_%Hh2B z3d{hK5r;Y6b%l4t+LrkH2}ZQt@2(%73LV_9rGr}#yYMw5O{9;I6=4;#qi8OkcigH= zjZocje%8r)Ob@XA0NYsUnP`O>IeCs!5D?g$-aU!I!GWr-_Sep0N)aM}!B}xRU10!R zB~vY;*Qymmk;LK$HAf)RiHk~ZyXL5+ zv{gjH+Bnv^+LK%~b#p*-$N+k$!siQxVbC1Na{-RNhZj84y7s#l!g`JA$#35&=clyI zu)M6ez{bz^SCC2B`)`x-Zwg!0_T|ugWo9|h2yO}lfUuM!&vbz73G#jH0osRrqWMVa z;IhV%jhW~PjK_`i(}-R0tMRTEM`4<4mnG3qS6+So^>5x$-fP|+&*!sk!f&4r*}mK6 z(;q0LY7XeRZ6&#TkTX;v8UmWF6^s%z%G$99dY2sBC@-^EzLQ*X47q+YKfDXl-i(9k zElDnO?}0-E_{3Tz9y5#a&G@$tp7?8GilR%vvbC{-)tzorl98fygGE>LGOlFw38dHS5#6D!=9paxE7PBpoDZeA+pQ@mDCcJUK9Hl%x+e zRHMYP;}~-JhF@c*+~D#!sUkqOhAO7SKVVNY`!)uk%FQ0YhS9-8jW0UzBsYCA4`$si z6bf$y#LV)&u9M;#!9GXerTU^Zkk1j|kEv`bU_`le9hlE{!4NO5($VQ!rM=3nvTc_v zyLo)@2$ImODD}M>k3xppmG+k_x z%G}Eh)w|fYybFGTzkMPAYc*nVi+7ztTqKq}sI^PKuk5gkQ8F`-KDvw47Lw3qyK=qp z!fzA}2GHeoPfIorrDlC78xJa&N9kR=&#T3MV#-yINW61QF^A?%#rjY_Hv3&ucNOHd zD7Pon4i9v-Y#dOM&>vT@Mz`l{`~jj1gCpK6L+y6(OkX% z?1AB-Pa`iW?6QCI9kTz8VXORiKnV{tdI#YV#iEAUENd-A!t670hK$T*rGEH#DdyPN zgXQi-8^UjdU#1%H{Y%Job5AmqH1FO}IAzj##5tX2r~bNkw0srnFr%k}=)2%Bvf!~x zJ&twRZn_OT98xHm(OVSIr%jdwjqA|GaXVZjN{)mMPBBS3`xCrD{(EZz%ueGzCJR`8 z08BZtf5!=%fLbWWLC1vN;E7fCuQEPmDj03*I6?rSNyb$hKOVDNxY&A-w4MVJ2cS@J zJ!F^4uS|X|omE5eM?z;)sP-0c<_QU0@or^ap-)ML`lR}MGCOXiz!Uqv&uYAq;hYKt z%B{sI9JgeAq0?Z1jNvKHD}~Lp`Ol?pNlZWW3!~3!rQHBA#5Y28(Oi#{2#S;?Y&p6J z_GvR#-C&XgF7YF5AGwT(zwO@}Cbjzw`QatvY@|kD5s#^Rz>4 zVn*ZFn9U7eLWR#9Mw8GRdafLMOhDk(F$8~j+bP?G_DHom{V_v66}n1c*1_kSB)f4FJ2x~?XnI`)$S66N>yj?0c*jdzO# zvXc&b{>jpaSbVJYZLpCVxnzkGKBm56&=OVF2ajc5ze#U0jF1=`FZ*e{V+Xy=^WN)2 z8!>UlaIL2Nyq>>bjCUSM_kO(N|Hdp}Y}uC>;**m&J@Hy+0$_SM9rsO?g&Qa)p{4=U ziS=?Zel4d%FZ?D0y3CqLjH)Nk9eZV4|q(_U~H}vL@}{i9(7CVy<)_mW9!3Y`J{_`DumVQF=|AtWITght^V4Q0bkt zzK1;B1WCu_IQl3E!9MmuAB)xgzHwNoG!oU`BT2tvGTOLKKfJs2 z`CD#}_DZH8aUO?4_&`d*w?@~mmo%P@d{+F-i=G^S3n{@5Xd**vT~1#Ns54V4_j_~! zr6Yxh-q9wlIHF39cZmdMS5^T1s`S^c0Gkg91(keR?#hFUC|TCG{Oi6VJJutCiP?Nd zn{N%=i|kD%Lr|JJ9iE?;uLAlPywa+#Q5|hA>(8KUKc#z33SMqN3FS<_QD=QW+_xC8 z;B&S}zjbNi*^&BH)}2J&Eamka&Ok1m_wjADXM+?kY>N z#*DEEqg41j-CHUr8 zZb0S%2SwhU(yhh)>LO0n{oCZkz60bvh#0hG*CcEs!~AFpcgNIRT=I%^ z{GPwVx2H{3QesW)s|LM;9mzJw8Dqtx?j3CgH;Y?M56TWd-1*#SDxgTiJ zV?avA>`Y;$Jwj1?mpQ13ukrK54IYrZ#pTGwv4qNKgK9JFcIAnU*_qXQWrwbHrPsLkC2!J%mTsZ&Yi2R{_;PB^ zfrWH{(2o)8gb8%THU={*#KE)zsX(>8`vn&tX_&CgO+4v6tfVY@9-z0g+RGM^6Uv(d zWH)IW9(C=lrd%>lDC8v2NxsC7=WJ6JbaUVaNiedNg!$l?ZKAW`IDP%04~{ene7jhk z>Qvc;)f*hB-y;Z0khBh&)O1|J8(}nwBje9Znvq%${LTd*!ex&ttIWxmU37n`LtSYZRL)>PZB< zcx>K!tJ?2N978sFod;fxoz38t%0N}S2CvaIb=8m2&p6FgSyALBJG;b+WK5oU>N+k^ z!x$d;5?k%NVKCaFfh=6_?l9*KlomASn#7OqPZN-)CC32%>`7RJFhk7Z8IvWCF(kig?m$$7k^e!; zh58-mUE`B-Pc3#(P`7cF)v<@$=>5|DS<~b1$4$If+5$!iH4;qOL44&Jb=2&6;~z~m z-Z#$UdU~j0>7>@yL9C&Y0+H+}5NJ~}^j8MC3by@~1(893`jMg#83a?W*iOy0enkh% zRo@n=vxtqcXItM^aWElCeXuUM{ySc=bGePe5XPlsAnyRWS}=R(_wsJuOa2xBYiJrt z%XgrdrO8jdC8cxm!C+;;x+rjmZD{PLv6ke4Q0K)BX~*xguARDsx!?_QW(o8*+Rh3D z9X5HS_|!n!#?878)@__9eS08vd78Lu+`5ft@4?-wb^3j4MXNmcIVw535Ruw3Ogt%t zuCH4~xj+8(Pgx_u6E($D84zpdSSkIjg`!wp`|{#?*H_U9}xZH*4Xhw2V=k7GBXpC#m-M<(-h3MeE^E-2tm~hYO3qYE^%1pMjOHs_2FDiBYetfX zn+mw_Iqh-MGNr-`vA+IRE?N8Von5Y(Ae5$tc8{UKeW^*m*!8O5_gBWRw?>gSHf6QC zT{A3%xS9)B$arS8>=@H_uT#tMM~q+O58l7>N5GJDA0^BkGI^)~$;1eSPMFd&zoPx2 z2jkbkO9azZQd=H)VUY+7@;xZI_EE$>ea_g4c16UGZs@`OXydc(h6of0Kvm-J(ek+# z{0R=LF!GI|eqBF3hIphrMUnzy3dOc$_q+rmCy7l}+x@+k+}&KfeR@ced}=w%#);bQ z{v3AMZ|Xy(ki%~HPx1%Hf4uX5V2zz46kb;;vIH$09{T?o)|9v0FjS5F53J$htGN{6 zw;HMEU33F~Y4Lh~z?&Fc-Do$d^5bB0MMUM(m6TM?UL5E5XhoOjzatG z;dIV1AGn$C@j5=!T>5f0&bV4$Vh)B^Qetkv1e$zzwMdCsVx94&4Hu%PLG_DHEYS>cx(cT9TOY%uN`<_5wYug$!5+KFL1o z4B~F3^DWVGjXp$R@c6{A5%tp1yZCEruS#Op{+tgb-G(tuTk+JLxu8)0Kp0Ix36Yi#@WmI$qJZ?x;Gv-p~=-%{-+C-5d(utym2G(28B;n8sY42(g5(epmgmY??vhc+2ls@1^xJ+ilY}vFme9 zn53YM&IbfbZ{H`c54c@d?s2Du^t-+pKYhcI7g#LI75R7XN+6Y}X=7H2cIDT)v2Fv6 z+?6L-sQpr~++%HhG@<=gj%hJFaQS`QaQXdmzLVShzKz%8ZvC`lqpZ!?V2mRf&M}Em z_?&lEX!^)vw9OK=5k1RY6xBXrC;&h?MN3fTwHE$w1(eXB2m{s@d3r*g*6_Vgdd-A= zzeE!;`@X+>4d?OhILZ@dFz4LomDed0-rn*yjF*&s%6$#9w0F56$Q;9@v<_@t<9Nu2r4M zuShyU&|h6v6cN#r03d-1#%J)~=4JL0pf=JhAz6|Ksrgcafyk;EDBceAdMo_V#&4h< zdvJ2_jS)Jq+BcQXJ)fSNnB7#gL?pY}%cAFG9mAWuWr=3--{!OOwd`OJ_Y=0PEUHJE z1tyn&5b#u6Tr}$&{`3)r8%s+f+{l(%zMW6Z33$w3!=F`=HuB(n5VqxN@1fw$+v>AO zZ)X%^;({-`jq2{S2J!#m5`2vqHB0O> zRl4Cn4uuxY|FrIC!nx~YHLoAfSF{(A)2VChsr5twN@YWnXq4@T4%IkMbXBHQ5=rD+ zbQvJ`J&PGy>SNS<_Za$+U(s%P$xSOI7CPfXg@vTNQ+JLt%k0BYu<-<|^`?f+U>}<5 zk?8h_rS5`_axs(OwTzI`v}M>@JIl+_X`fhjzW--h!|@08{lC`~HOQLMPb3BxKTI;-7Ay(}oliqkEcchar~E`4$A`^*{>Gh_uu!po8OgJpqX;E?ZUM!b5T zZJnI>=8kPmij);f3p?W``G5%(0BwS-TMkI~+yQDYH3r+*5GpFUsuExqaOBnzcM||p3^J=a zW)nbrCOafayPRW|q!&r)^?xOhUd^;-IRonAYYlFxpHM?<^wUCotzZ_@^!{yekrD8qJ5>||ove^1v&Q+p=Tv|@ z=&O3akk>}%Cy-Gmd3i}zb>?1q6`w_4gXL*#k-&@xtg=)T8wejS!A=)9Zgy^a7;mrY zJ8ZxFvYx>Q8Kzu6X}&l;NPbj~rXc%aVvhtV1dvH>U&yb=&G|D6Nvt>tyM0EO_J><7 z)4KU9t0iOL#GGHZCPKPI$BYy0noq6xdyPWw6 zw~?APxg=OJ&Y@kmxP3WxzfQgQ)86+E1_iVY(`=<}Ym)!T5_klj-m4k5uwn(dPg;_+ zN>lVJ0Za{kZhyNbvXdLe>QsH7pJA9r#_|v;*SbkMf2`X$il3zZ*d_FnYxMVh629#E z_4QNf)Fn{k;;{{>shJ2nM?ELfNSc5+)rbOBFl~K|cim2!SbK|os5($zD1FfbLRBQ zF910hV0AG)*bAu>?aQ8!&((0G@WY7(YUFodmvEQ{j6)C-1^eFZ6rrv?W$l-=GJ_9HrQ&eW(~Hr-HTcVD=YWGt-dM-*WICkZc1dC=_GH zPVLvR>ga}z$yfe5oiN*{GuMotL|u&oC=*W_cxHZvM(ElrV7iCQi_AKZ!%-UDmk~~& zUSp*x4!y~uTlXQM@!K7~O?nn|_RMMqCKubltp^!K=7{4q1DM4}Zmzu_z1m7pm`1>;tR0Pxc2 zl^EcsV21Wj_ag4kM{N_y4W;SMP|%&HWp=y2NyMmE0$N8;{3(Pz(Iq~!b+9JJvu`^o zD45FqNErmbmf|&A4N(S>NsJJ+T#~n;kD(;%O1ASTRo7alHp-+F>{$QEB)G~k)@@K; zy}dWh)TAG{H=q6(iM*MBF5}+_s3c(><^;&bmw9W**do^TuBnHI=q?uTeFF8B4w1>< zqIYrnDGszo6Q{?LVn|)RIp&aG-DO;Zn^C&A8HGRjTpCjrxoi*&@A3X|}4aRfdN zm^m*;^e$WeEVHj0Ibx3MIGVi$i)gZjMPG^1OdFr21wV`vUId1G_JsrOqKusrh7@x_ z$pN6fd#l0kr%0cEGTd>!Uv0wD!l(@05?142GK>RJtsHg5268FMNL7Q)96OIcoM==w zpd%;s{k|Zl_8k2+RR8teaj)#v*RjWqA#9?PYn#7|G}9yn>svaPglw_G!-F| zgf!-&z}qZppsHZ2Pv}${FyRHl{twp(LjBF9EKLAFOM2_tLK$?M90cul8(m?XWhARU;H z#)$yB)4C1C2H6IoWf28tk&vB}@@S&&Eq3oIXn@n5vbV_eO>mA=gpmcj+SM|{;`&T- zo9oe7%P(kLph|CzMF0zak_y0EUi;Xh^1B&ENFUqBM=VA|e{%~RC^4Df6C0Fki4tS4 z-|T9ugh;fkhcY@BS9`_gm3rPHFTlpObpD|F(yKcAfT`MT#{Lt7I>7_XL~6U~U7A!d zXVSRD=DRjru?A<4r^AY`4hh|^Rh?3_!E>Q}^3qP}`@MP2+-*7gx+&`$-a9~53rGyx zE?jIvXX0bTfr(q2UmBYOErsi&qv3fCG2Eax=OyKaNH~F3PWo^K#+6tt>|+vfES+km zWtgW6`)z|2MAL>M%6&SXW`lutmwW z%Bb3=$L#nHPmN^=EnPejDZlrQy`9X5d;x-MzG@5Ip?Qu~z=HMfwqk?_wuLxURpZ}j zy{0O;{gv|5;>6zjOS<#Z%|-m`E0+yj&|OMBP(DeUsX2pc*ih0yA8Fvy!H-RiRyi?K zd!?7Ur6MQy{1KXd?R*1Bk3Vu`L@;8ec^L{$W4$U#o1Nw4UIM7YG-U1|;EO)7KMgY0 z4kMm+?D!!}1EzPRa{3B#q*cc&5V)|VQdO~3hWs`Gy`Lz`6D6k-r1QWrAxSu%boF3> zd32Al(r|J^<=pd0Voft`0pYyA9_UB8-){DyB5T#L5qJO}emtj2bEmOknWuYAdB<3= zIkj06I6|~rPlECxMUtX3D3C~&l9CENoFN!nLEM6J+K&SeSA>~FaJ}}i-!}f6`F$tu zgcxc!NJH(g~NWXpqM9+Tqd z#7#dn%uowHfQCO(X=-Xkt+D48h47jp@G8BgTvix8F0;%c)4LzJVXQaQ`C?9-m~nr2 z%?5evnav{Qw8Oc9bFDFZ$< z1PCSAqCX}_r)Z0Fi7bWj4vA(wS(R-+iBD#MYYD}t&)vx3{6?lzFu0{$7J5sc&ec}C z^3VuBhpaz6Hy)s6FL;$L_=znM2--Et=`P!^x4!qvwl*W-)1y~?g9P{Z ziu62#G-?EBp#m@Zn8779{rLR7B6#buHg5E0u2U7=y2G_5zn`c*#6-?YPA!BkJ*gve zC!xv2CAAg4YWJ`aZKrf$Z}&FVym`;?D_!wuYR4#r7=$dEtAkk%H@cbhuvw0>OkV37 zx86iovr~p^abz1${fLz4?&v2suVJNWu?vfqV6-J;_(eQ=5OL;Uhj3y~_85Z`dj`!X zz8?gnC~46W$9X(?R}r>f!26asdsSINcr8HRld%?WTus~t<5FVwt%u3cp@pZ+PqFG1 zNR#%CwTt>#!@{mp6pDx$MmFr0KDC1?Ifaik)$7N4|-wi3{ayADPePjj{Bh*mOLTc1epUcD0@^_*{JL8JT-)-dDVGc zx?xm$SMwoI#8~UJZUqIpIL(IJYt+R9U?#yo&EhgWk(x$81bHCEeKXQ*qq)1{ExgCt zf<<08$QHAP84Vcsnq+&_1mI9ndiQ-=*N1kN?oW_NBIAc&dN6gN=R;N16 zej^5vNhWr`khnc$2*_s3Q=+^Pzr&UgX^?3+CY&jFpNF=@Oy}e@X@^vAkuWJAFnjMB z@P(<_1S5aR+CMXg?*^SZU~G@(`_6#0ogV5v}shMpRsPvPi)`wC30DEk-Je1hN_qBq>{zHai9 zcoXL_Oah7XZbdgQ)=67#{+uWk^jJ#Ff5$a{2;l$8wFFj>zZk$1xN-QU&DB!tRX)SWx6DPd02iaWV(Kqi{=;WU1t}O5&BkE7wfi- zBdT9Gix^-tKY)dN0G-h`E`*BrMF?p}Wd80zk`3@8Y$&XS_-7&>AuUFVp5Y;9vaooL zbda46Us7=Fhh1RZp}6>bY8MU&zdW!+QWbL7p!`t`Ffif&F#D`=KlJSXX!heFVu@(@ zJ6o6ya3%JsPgQ+U}l4oKS$ntLS5O52hbr zNiD;u974A}tC`qJDkH#|o|!HZ!8m;I!+dN!q_*>~^i>Bzm6|LreQbmPo60}Hrrc<` zvZZruwTdaMR!6&W#aO9X{WFM!H!u8tUaG>U(P)72st7$qlXj0V$#JPkkhj=X?TavO z>jP`x1J^8{tubM&OUz)ZWZWVI*cf&1&k?Zfju`La5i{}#0I5&%_WlDlnCPOoXqG!< zr9B1DsrkYlf&~2H`!L{@|9}lT#II@t@vG*L5WH3Gpn9-l(COUQF$UC2ww3x|AMo>$!l znV;Z+sb??cn~Ko~UAbfbk95uN#|zC@7VY?V)+4e54n<9R8=#mXt*hx+*>XgnSU_F@ zz;B|8YzW@Yz}|?&DH>aIYY8FuhQ^Y z!qmDeG*$j&YqlWS8r}9W15LSVWOYOCEugv~T4yD$wfS%j5`FFm0}|2@LsBs{gQWDj zScP;mo~qm(p-VRtVN~?<@97fkt!vx4G+8{@cQSH7M9v6SqPZy}SSfsueIWx*dKB5` zySytFflqbHcB!}akHXIeRdYv}aOd<{?nToi^CEz}^mCZLoco|U+Yez1ZY}y`aJyqNA*oH4GS4DyaPfFnEmN|#pwCE4@3{Oi}<&LAa zL)6YFalP^2;4=B*dN9a;%t2I?jkRe91?4E6*u2xR?g(B?^uW+^azE&R>IK(Kf02Ie zW?3h_l0Ouz6~6ehnjL~`cA?ZiKyVFL5!EraZ(8rAPAA)K$u_Zvx3*|@8rM=tsb$lo9@TnmCsJWr-Matm~vc>-Py= zmwU@46akfFp1H2IK7tKG;Ma(4jFYLZgqs_d=nC z{E$BX#27Vz0DakxpqJ$qk9JAi{61?@>FLjt$dIdl%}ct*_n*==oPS`czsivvrUJYeCEdCip5>O8xkEX+lO_S8>OB> zT&%Ef_nRw;jXP=e&Le+cW1uerFf?8@FTBpyFKjIluzEWbtnIC5!=3a?3@6m6#cU=` zSRKQx@AHpxU8lA$`gStQ7@cCv87~4Pm0r4B?fS9qZ{6Zid~1o#HohM&y-xQYgYg|l z_K&)B_*h!H5Lh!hFDvR(Ly<=A(ehs)q8Y8xMpe0&a zjDLyNbm8OxjTa%&8b61v`G@CQ{e8;H?^Pg)6tlj#*OOIDvFa%nTIugBzLd%7aW0-- zr55=D{1!Z}4p$y^YfsosEe5K6LmU|?9owG0iBk?lf#+>Hs( zs1%hr!=n~&d>Kf^e!LH^jNF2eNOgkc_WpBp;@&w$Vn|xVj9cOrVbg;GA~PB2HXh$@s#Mlz#0i-<4OpuabEauNg1s@fo#1A zy<#Bz$)a5B;*nyUGA%lNo3|>(4f7v$J<78vTzoE&e_&PiAw8Wwn>C$<`If)Zr{XjEuUT+YcUFSt`ia4Suk?p*j%`FT4)WUIV>!45;WH3whMZkAz*o<9x=JXDi=-emp^ zc*yeOO-AtBTE<=;2%VB=&tQRqGIfm5IG$WZ)QA2(N!WrJPW0vs>f!_q@1tLO2G@;@ z$2&>LEq6+y(?j$Ic2xu6$zko47csz<^+!ZybXcUxnfMPsnVsd{&`us{fnupp=PsHt z0iqC6LwCW-fJT)pzuUUVmCj+efSn!7!%Y0oawci!q$Cf2P)#GU4_OstRWbV~Zwcq$ zFrw;97!i_^_=t@h*dA( z11E!nlmpz5RJG6w6OAypoWEZ}Dxe6H59a#?l*Je$ZuNenx3V0Q#RBcv_Yy%|gg|Y` zoZNfJZz^+T?;|TWCb7WBwchsTVw#QS>8-#O*}O@UBI2A}yE@WEMh3`SOkaGtwqL0q zR7#sR=uOr2_lBZbVRR`^4q5!x6ixc6}TFvK=B zs`Z48yBmLpLa&0Aol?4OLbi`+(PF#~n;=F!+uMd&8Fs_oTd*so_2Jof5HcuHf`eWL zWtbCy`|F=Ux$dT)^b)OU|F=Q;Usw0vLvy@>OzaGU1LUD;;GOGn2yK4j{JMQOBbN~- z>|R{9-k7FJP80WWqxICAR<1?@%ljLo-c+YAD+&cG`B&P?;*P-1(oV|7A1NGMIgHLa zs;D}@w<3l(alG$IF>oWMyizKSf?=BlMtIb@y5n{jhhP^-t_L(bJ#GpYX8E;U*L1g6|XxooW2Uw#8*Qv76Iqwe#|3IlR-mJhqkZ#!3iKqT61l zOJgpX23~$E1eK|lxm<6`(o?Oy^(%H!nv!&m6 z9S?@>=?xR9sTQm{aWG_ZfIU-SE2rgsy%U{EK6K;;&?o*~_-PYWTbFzj zT8k;^C`Xye`Xy_PdTos&6g~_&$w9T-GIM+CuX0xX=6PQ)C*OUO$Jxafyb4i-B~CC~_lHshve& z<~30oYM&gkWMc-UMD1n(b0l~H5oaMGdNDz;^FfrVqJ2D zF9X)25q!6fQbtT^b58Aw!LB zPA34vGb}?w_A+moDXrC63$BA|w*YRhfh5Q2Juor05d5?2Lym9r9XY9JCL_Zt!GQ!wDTbGa0k%=X1xOr<5aneOzvQAcRjC zAQ<>Lk^*M(vIHMYE_@lELGu&D{)t|VNh!QV{^>WKsc`0{qgM2Uy|hobct+tqmC7w= zds!rDyHj1nmstp>QB+AQ_Uf7Vxy8-c+AI#?G#$%mVv=FT)_s?0SqkpZe>qK0_(}W> zWN5km+tB*M@Ba5#%^X;+^ji&AY#x+oy)KfGC;~NJ!mC_$E9Oa;H;HSJ?=VUiJX#IF z5l=9roQytZ@j|y-5l;0x6M4)&6}Ylm7sI??Mpsr_QZIH4TAxre5LVeZx35B3GIwHK zRAhErN*ZeRV|LeJO$veoF~yQyzA13lm*gN*5EZQzbR(&8q^wGDC5)C9X;TqTPN(Q7 z&En9c0JyS?@^H)8U@8Gk3IQ?mMiszNRr3l}qM7du-vArlhb4xrkiuDRv z7dGW#yhr|GTUfptGznmKXA|I=;^%C0_^mYf-m)6DCDyJN9#QR`aP>ac0`q6Idiqp?N{S*!Dw*WJ+ z{R86{qK&mm0atcT4`xXd_||VzLZp$uzANB002TIR$!(_@a(0}-H1N;L%g@=1O?Adf zrx^abH&bhot&Pdq=B_|&5Bw40Q?G|Ik&YlC_jJuTDuQ9Rrm52 z8n-)Hf8j;cuoeRxC)R(X1c@7IxUPH5m#25eZo4J<#F&UGQ8p*%>HIIw-m>sv}nQam!RY^S<5}#%^itl5yg| zYu4RrF6jveQ;lv|2Wf^nMHCjTz1eUlE)tPj(mJD7sk*Dpq{{Q8VNkbe>E~BNEaOuZ0Vt4Z{c>(N=zjEi z@&d_|w;@vP^~0PR#$5G>A9HukWdb)FE`#_MzM%W+ynZDKhnD^=Qljri=+y8-t>T-M zG*Ff3CUE!`2cUkUc8m6SS_9JInE?JFap^P)BYq7c7lH4c2L+KxV)YgtYyBMt>|Hhf zO>Ie4X{jX4s zXc3W?8Cn4}gM?C%K3+X7R>&u@Vz$(z0X3tnAtw*z;ITk}N-oQ5;9CwAT5c%GrWD@Y z;Z094w^6S^#__V}xUOZ^hOf^vm8+vXlk z+m0r>4f~iXK2nAJV}vaJW^pEXr^z5BHlEsGH(=2|Bn9CE|N43?*qO?;(r^_%qxQki z7_BXUA7CFjhh4-Ezlt@%Xb?!o0}j=|fU%!qe@7L?(es zAXg0tDU84lHfT{scJA8`qKxEmj)>2^6U~oS!pu+4KkhV$T>kpleHuqTxOkcr;~Df} z+{vxO*0p(Yh9BF0M84@9uiYX{{wOP#M}l+a>j`7W4&B#)$@-BH=IjrmEJldXtR6cb zqfobHQDRy?p3x-yrs8IfdE*u^5p6)@l+B6Q+kJdD{qPeDJvjwM-~4L#5Uvn4eN$FP zqyh(a2q|XcJ}Ou*_)vyZGT6Lxs#)+EWcrW(aUkXl`R_wDoPW9Bf4fzo|8J;fm@peT zm;?i&D38L1?2rDT^QT*6Me+va@@*>h-SolvqZHnTG9@*3_;g{*@tWYdd&O0lm6XUX^Gvy#~HflI`9t-^t zvQEktj7v$Sr=N21Kje?(f8>vc+&Bu&B$WS_Kd9E`v|RE2Oa2&q_Vry zM1xd8bWI`U9%4Lhx4gBZ06mHon?I1|HX-3wl(1dXofopi9>F2k+RZu2SyK4O zY}=_ZG$b9@D5G_p+W+9h7m%RS`9<3lS6Br7SF+3KP>K;8k9*nNCYaEqmrl)xiGYhS z{Q(_XRuDYjQwHUOgesVzc(kH~F)eq+En!6$@EDgDn(#abdS~3~QZX8+{g0S?R5*vw zoaaV`0;pEul}$>N3Z$Ll<2v*4q<*Y4SOHNi&-=F%NnldD_B7ihtX`nkc4gXhw{lNZ zsWobsMR&?tJ8F*5|Kyaf`2EHQb{5#p>FOX~i9xKm&#C%P{ zR+d369szztt+^3xDIpC}W!8i~Zp3+6#2;d#!*Cf!2l4nO0!cTy#l+TiZHql(&Bi}0eT8@Kk#0rv0T{> z`-$Y(n&T~x!-?fM+)fpP3R2=OHecbV*w9c$KJMc(8@q{oKq{QnTU!wu(^|*IZDoMO zsqQ1a;1SSaoSN2~_~l-+_gJ-kR8B&%*H6L7!C4qyI2P^qF5_Zjpg6w5iAR4tu*qNEz`|!i@ngB z!z70MnXxXFUlfav=Rj94;ys@%Gj{&Ufug78^ zGV>+u;Fu=NsO#F6949i*`IE<^v$8rNQo6Z8b`wJZm=vR~%GzwAX=xjXOqMNP)0-gp ze#P4MZX}3^oLNbgT#;}7epGlKR0K#5*4&A+dlGYbIcT5Z07!_XmDt#Lj~zfpN${Vy z_f(Q74VSPcq>oj<$ks5V$i=<&qi))?p@+Hg!H2ArZ!R$E0OeDcaV03z;XHXz275qgf@?KV9qhA39sMPdGa!dCPJu+g#NayCin z__|U0Vq9$zKEl?zH}DRIPJYYHj)^$*LA!ZEk!7%#;Fx(;-wf#NP$hK}5a(0zl~?R1 z!zulfjI_#)oHR3TX=bW$8;53tjBW36;Uk_gZoQK1zSEDZ;~POW3OI;PH_48ny5%jeWzF2jQX$QksFr~7!(0Qq4n>nMTqcQ_VKJy& z6-Eg!f)vSn4_-fqcJVNu3OnCj>>L#vvyl4@+Q{6&tkteh%a;ZO)~mJT{1|N^Dyy^j zq0AsOR~1)!t-+SQEvfv;e6_q=ds_M$IR9+MKd)s}$h8bV`|hQX@PM5mPEE%I<%{D~ z8j+KNfCxGu{pMGZ?7SC@04Ot-;$Db+H?_FDP!KUw!V>FMpN@@PkUIh-!Gyxd-;h7qf8p$oQ@qgMF@~AS9+QeCE$hq*R z2lV)Ekz7#hEaIEsOU|7?<`GVw6*dA^pkS7kTK3mHCj=+mJMPYXeV#D73C}pj_-rU_ zTbXpL9A?LPDt^0kPB|^>Bu^&EFIrt9yGpPIsgT9tBaxE>%6nN00;O?<8%sYsN=RbX z*u$aX8I~nkJ6E!1$RmA-T~A;`{?v;b#VUT2JHSdreZHhvDzw>voI}{phVqLSbO<8C zVCz9;No44ctBliBOSr^dCzgUdXI&*SnTLBXSsm`DQY27BjrTc7`dCe+&wLUMVG(oP zm=|X+WOlhRt^GAi%oOicW)0cjmn@axt?DNOj3p;S$h0SVAsdKPmD@%qddC}PcxpZ} zJxq;r#NMmhZnYME16)g4_uGGI6JR0ZsV~HNEkA3s8yRJ}6q$(QIwLlEBcP0qrI=(X0K&+&&|^kK!MhiB>r$#;k|o8a+Ztr%!Z!9^wJaT^JF_1j zE!^~Q2-}#pIp{m5OnCLxV=64s5t`3THyiLNr+&8-og&r>d}8J~-U{_)?xRZRK=mEAGbyG=gYh3CxzubD8|vyRT(nIPTt3$NnV{IC z4v@0cS^VWfbKzk21=*0^2yw%$$X11~QKx8N#d_Yl9&ha8_<#zqA-h<7&3?A66)Lku z+<{VZLk%3ZsQBQf74TiYg8+P*N#s6 z;snK_lQv9B=bG%0Ur@Yx)Ue@2!^i7FnazL;yF`VE4uX<%twvmyp+g^yKIaBNz%^n zDp#+`50PxS-IJU?3Sd3-pL z%bZl-^epY*oZ}TOAI@-21O$xPny81ppjB>m?-xdPp?ldB{u549MFRpzzc5y|(8a@22)2Xqj(*g2a z#p=PG2r#3c3khMZh5==u=jM1Xn)5A`M$j70qLQ-rEy%5$=os^6;nz`gP#NLJ1<(;1 zg%kq=4TR)2u5%W=x+95m2nXR&eo=y!@Z;=iaRULxrJkc6yaTP50` zhk~UJDT65CATIe5G)uNzY97jajFw|JzU3SgZXlj95oLb4un{o9@toO81oI}!uKuRg z;EPv2oJ%T+Lpf&TN7kyVR)1{Y-a~3`;eKtRTVip`yZ)8ee0leqPQ!8QWySg);8()c zN8e%`#x)z9`b^8^(|H{A8KdJH>wL=6Y)+79NZQsE+*&ha<`* zv=rx5Ou@2%VG1&FaEVOrxMz=(Y}4cJgDCx6*}g?v2vsQZsV6|x=o-6!_vQTs6<)!+ zX9T7s%Ljsn(zH;cMDl}RrYIETdX~|9)~QZxpGt#hwta5nHPo zD&(9nvBKMuT~b3`os@@fK!Ma-CaX_on~p&{k{iw~Yls?AOe0Ei##TGBws+PtgHgx0 z?JG=er_BDuJ_IlC2k&ON%)27m?qzb7o24ej=sP5UwI&*QMH0olOmCtoUyYT$4$_q5 z(#u{x$G0JMnA@L|J3LnQEXvzD98D$K4X;GvU72UDt3%Z3Hq4kU@Z0$4;orJf3X`CEQfBtzfNvO~@VrmE2(wV5t%Q5Xzrb~TkNLYg!#5%oLd|TKX~0JuJi0K5e#LgAVSBEQ z?-R0eYk%CO<+JuZqRv~@^L~@TP4{~w?)-V1>S$p!_g+}>3F%hF?4KVmKjQA7CwO!> z{@v*Q#orBT?ti+r-ULZgKc#5mCcBi=Iu|5JBUV_?S|Fiva#Ie0W3}kPU-Rj{*v09a z>l`h#oW!r72dd21+~{*R0KdPRMxxOMM9R0dw#`d6 zbcscBx&(=l`I=Hz&u-uzTm_T+NjpV`Xa;crbYufy?+z}#nquX(_;8mQQk0e0TnEu< zevR7Ut9NE>^&*u2Sh|sBFQD;={K}WA5OoB3gqN`rm-_V;VfHC-Qtzwh_-FW{9RSbQ zjN$6mIEWIfO8o<(VY%vo+Fa&@XkjD?wy3GgkaOM6E9fG8gk$ z*F2k3hL!;rn(3s+%bxz+lqBF*7KzkU-e;n(gHP9SQqqzxT)|PL189xD*2^}p)~3W& z@L|HqG{;@@Zy6PHg-_E)?A}7XCy1E}W$xTB5?!k>MyC_JU`seIw3Quv z#i52gZj8>!!08XDi9bbAG;}(L*=&S_cg{XWd z4j^BHs>Mr5*(o>-f#??dbcHVea+b}4ei>kQ$16D^lr>(os=WRIG16m*nk<=p7R!TumeSlJ% zNH>m++%;@(ty>T4jofS!&=i%fG!MBpYHlpQ_Omk` z#0qI1**(w{c_^%?6!0*jRxY>*ge*aA*3BD1?gZ4<#Y@$bLCGsqM!gozc7*%ixA--Q zM6vE|yH+WAk~cH^_}tSYt&^(~E#(-=H>`~8-J2qjaAMQ@irdxKO)Jl7x4S9N60>UV zvXb>0YCu=~+`lWIJ0rb0BM%SQygr2bXQjfhzT!7TT98uU^*oxijO->CpdUqTF@`r} z9^H6`Hyq(uU^PIYBwti4D$#faCQcujKhkmyR?9>#*kz;^=SA?17Au1LBsA6cF3^`h z7ILE-lS*Rt9uOeYGgti-1)P6WB9suvtT9Gdq(gSW6!rvT zR)*Zgg61fr?0|H+PH*DyzDYaB)aLEXUZ$jwVKVwN_&IF0F`|j6oudZo2g3;g3j_>@ zVA0og*;bd!yxy;4&KSH;P;EW%^*HtyS^^&p>MF;Msq+H{FFXDE=4Eh%Cs#bQ*Ye`0q3`54I?I8A*v$4Ka(>v5EWh?qZr|EQqH|ODP@sw%! z$l8II52p`qodQ}_6XlbK6jojNAyB?57Qnn|_^p?jP5b0#ObrJT66+D0ikF7Hf~4<}7?|=8U7vFF$1!yzQ-?k!$cZ&XjxEt2Cg2iXt?9EzUD zorxi$5~a@x&!knFtVGsYU?)2K2!qFtX#ApNYq21^!QlE5mI(U-Wegq^LT?1=LQaDE zdh6)$AD5+q9*5yMxd=hFC+7{Y3+E1I0+=7Vr4(4}!lSeF=@L%bs{(ACO;WS0)g?VV z(0pJat>N=Kx_aY(Pg7uA3I!L{BO2i3zMz~MWutDbs#O%9+>48^_s3WhEDySyCi}FK za+%^x;$6Va4ERPX5b9H4EQwJGzG9x6(zL6v*?dnAd!QsSenImcex6eaIDN4Cio+2% z`DF>@6(9(Dzrt>)@Jpy`r;XBaVfS4q5yF=o)EJEd2puE5v6qy{&!cic?W1 z4JYV#a1e%jY|r($*Rro0Y(w5}@68%_60BRCV0S;d2ck@TaVHSs4Hk73x;MJ$alJ>S z%mKk}Bu01VjBis^GsAO}G+rFt+|0r~i%-Ht5+A(%Z9uN4k&+b!Gi;B4#jv^l8nr5b z)+*rBw-58~k5fd;hQ2VSFf2H8GYBnRaZx#|<#Cu=i2R0a>ZPE9VHh3)EAO1nTNbB6 z;qEJ}SvGbbyMe0L_iv$DxRY!0pZJlcQqxjTTJFvqv%sCmXDv^6>m=+z49oK?C2hC#D;VO;SstuW!;?W(>M}~-_u&e@ToIo>j6y{@P z5BwHNMj^=3$47j`4X6wE3Z$m-&eOENl36uGfVy4+B;gI6pJNr@}i z>%jQH(tlJP;D1kBbaZszjAM%DH6n8~(sy5g0#00OCJD9g41Q=IMHN8Z>-Plc06p9D zlPsLbO;8dT+6F8i(SLc6yobmbBo#Z)QDhONG}Gmxd+^IM2Q{O1vy#ujgi3r!k}v$l z8p@WO)O#(YZS{$ROn>f^&&eighE+Q$QOB|llU^O|!@Rm6gA}zrGzNtB0432>j)taM z@$cEE*yt#@6npZw5IzQDSZ_%B!&C3$NI zV)}GxpCtG5d8?ks)znlUv_7k4shlm1k<;Bm_nbblF;ZcD-~YX3L@CbgKa;}GmO)KjVGho;9v!qFQ zNIaS|IFGilYECN(<#|r$3xAj|PZyrnS<^h?XyY5~K5<{K%~i zkMG(+f?by1f8>W9k=)Ehq0*RS?)*G|St$4RN&SGO{T5Ek`38lD6*J8Vb`2>)&Lij; z7sUfV1>dA=3-&h&74-mNQjA-h`F6O5kqriC{qV7|en<=B4lQteRgTXHw_9l}ZJ|^D#&=Y)P zQl6e|KUdeE7L$HUd3acTddt~Y_{x8A?fa*?!-Ds{0xkGE0|Ec9PCEaw{{1)YwfIA+ zRR7RkXb2J15;%M~Ybt1wzqB_GOnWQxYzx3qJlnThb1%sM58CVX_HfAnro9}1y>Tm5 zE=Mn#aUe&jW#HPu_e_=qIiVC)d9K0mKeU&Rkkj}t?G4M3askucy%~3JNpV4Zd@${u zVlBhdw2#VRQS3K#6BDNZ)7~vee+K4ZfX^S=Oa2mP8n#;iKc19~9duR)roBcNlyP)) zXwlO(a_IJG$@p6!;~>*{#rb!NVvIm(XN`P5yk(;Loiyg`6>`z7qaLgv2paN-)yl%_ z9~%LWxSi0AKUTA3_Qtw^Pow(t*g!+4c|_qyI{EPQ*k1vdC?0l^Il7^P3u*$*6H~c( zyX!F#`DyM2CLhEYNxM|_%9M1tYLyDiEF@j_ZYJ#J={x+sB_Ell(gNt1ilTy#MLGIaJgOby z^?O9e)1{?zi1B6o6A`ZmVJj(DhUl|^v$^HRTv!f(E`I{r7v(tORY4d&rfps50|7C| zB%H)}{m1tW9czQ%f1N^z*#bBJ?imO&m670kyiOIET-1I8YNy{)Nb3spv5Tn`eob4Y zRnt(5Trz->7}97c-vQTNb7XA=ijIw88YKTjYeVIB=3gr~gK}e4X(*+iSJ{#G#2k&}NLLMbi)OR|+Y-DtVbu=a7rV`^( zZ{{SyVz25c(gbT~DK-IvOi6MLPs@X%T}I3rHhz0M(J`a<`{&r@N34&uMf;6xS%WbZ zGD;RjK66^|_nh~XY9LR=T|2z#7)!=oVg{oOm$L-470@=Z+WOKIx4Bg|-o3~U_PDd# z4Lz7}@`6YpCisGX< zGB6~cX@lZ+By7N|HGXiXp(8;O0vLy<7?#Y2Y#k5VxoL7CBIS#NyQg@ojx6l`ayC@@ zd(+XUp^_1u%}nh2a?wHGesqSCWv*|flDnJtP|eCRh)q89LDh5c?u35jBu1RAVWbC} zCOCT{!KR7QoKlGFAYM(fdGoj-kGxXQjfwk!-DT>M=PH}Cn-bU;Pv=d;`5Ohxvp zL`G9M&wL_d1$gtYOr&86vH3bjQ`dH2*$uV;b14Z6C_7S{!O%xMxGwn#jjGyS9(reG@f;m{8-$ylS=n28vlSNTQw$hLi;56M9Vj4UI6Xs<<^ z=eLl<>Hzx?VA}fyk?=fW+N6UB_8^IfGVI~mPan@a z@$Q{iB50)qHHcT9R%gvQHY`rXnlZ zHL)g}u#xGUi(3zWTOoS~rkVfH-o}4tn)t_O2j)dH8kjzx;gKTmmAxd?+vZCZKi1o{ zRa5|zB>ICe5hadCdHvSGS#dsyj5U@g$LCdJ(=a2cu49y|yd8LR*P|3{B4hTuJ%{y7 z@L|_R$jjpzxf@G>GGghoUE@;KZd}3TkaY%7Y`jqL>;`rd)e#E$|lgj51ch(MBe-hJ*YB|A3C zG;o7n^<1C?`x*IwQD=lM)QLwbL!JeIO8INn6khMsPl~P!Jub)J`=#EdHIL!#_%EgU zP{>!U@dVF~^JIXW7xm@@8ZVJWL!+=pzzV>L{7fa@&Gp z>{IQsnKjpIa?`CPh48N>ZlN1!?0{RTFOjU;LyWu1EuNzfGLqxwORH{hDgpXcAIaow z{nJ{#s3I(hi@&@k=)`V`z`1 z5riVxzM-0J{SA-%uwr*&3r%QE_EJ4eyYNqz)`Mtjqo5X30zs@s-ET*lIB-u3gl*Jm z;}I&h=uU5!FEE>0l{+sdAPsRP1LoD8Cr<1tR{1@Py#*acV&qfYT-i!4Z~_(1H|Ad1=@7gFX!XmsU^gXQ9#k)TmgE=E z3sGc*1ateqy|1*CPxRQ$`rhklXb4i{JPAc#JOI<*mMxnaG96drkaSL>IU&Y{kP;gw zZe<%8`8Lx?M_d*H+Z_BoE%l#WpY8v`GQ)bEU5homCoQsm9!;Yw#z4ta-FHb{AHZoZ zFC$T)uE-~CtM9P3qFlv_o7jk4$(y37;KJGz`jD8=CSJhIuJfD<_t|Rm%!8%osU7(W z*=zS!q)L||>#x_Z4Ph6T1w3w}|8Cs=DIWn^+s>+i$8Be>1b!;$5*^pc7&?xc+7g$j zK&Oc@AN8nRG590w>~6k#YEKOVjmU+uaPXuKHJ6#0m#MJDvi)i<`Kk#V`LXUsMiV%% zmT~O+`f`l)&HY&}#d%e2z;4B`jtszKl=`DWZry=TP<>1dY0)ga(#{xl%jsL;KzIbI zpGAP9=C`2N+%>!M0@_~OtZz`MtesZNCa!^YWcDEvwZ#2Un9xSNqHu}f_y&B^8z4n< z0km;usSjaBx(Pc0b+9zlMq#KWs+RpS9|mnoaQorC*!*xmqx*aS%)`B-=#vmGnblP` zg)4%rA1$QXDNlw=J|^s>)CS1(ncJo&{q#zng6>`E%geqX;dDH_F7^IeBN_gT?_Hpe z&k=B8@p%>z%}ZYK#=*v0em=~D>$_~gPT}~wlUyCHG=<0{(p~grjGffj8bDj(bX%o) zQ_trCWn1_fWt)m@Y~sC!CyyFkMTTQXG)B9cAgr*> z0e;n`2U?rQ;-v3VyyriO@HRLmA>F%B{5DcZFv~Xw4Jw4qvAt}C-Pf-Iu3>2xeH;U8 z=<+_s^gB+UIJanY`5GQ54N1CebDz;_NW|LJFFEQMxO!&<|DIMiIOa0TbPl!qI_jL3 zJ3HJ`f!qT}y!i&wr=3CfvIy_&eoq&_z>T>m@B33!@q-saZX1435gHx?tv48 zzkdGJireJ@YwuN@`nQgi{e9!}prW`{b8nJOU{wslzCjAY*5rMZjOvn+P`G$z0 zJzWRQnUTYN20m$Ju!d@;Y{9(H#M9(EoEK@8G5<#!%3z8>cVE_Ik3a{y4u9vUWTvA0 z6Zub(vMf0_u}eL-*1jrwh62o|!~*sjYoG6Gp79w7N}Ku$AROMW$^_Q&H@6AOoj_FW zw0r6q^@0pKxL^OapE#MmFJ%SK+xWklH}1clz<#wuSFoAsO>o&H&Z!kT06C-{ZaHu& zumQqvst{Frb|ydYyJpd_2IQ9`O7oJo+~#nG?_so%SnAT*6_}WJj?d9I?>#ogrWE1j zC%5b}P|iE=_BuV!+q&A?g{yQPAwIr;)n{#US!!x%>)Jhjpzt=wjJ8Ik?d9gm@wxI0n~lJ+yn2f{Xv7L8!00l+)CyU`--!g`8W($Cxl}f> zoOaMF$jjF>c{HL8uN;5GC39e3-sOG zUOU2*skjdv<}k?$^2~_#Odb8PRtuSiE{wj+;XN?Wg5gXGNy4&hb|;U4Y4m5KW}kzO zCy`j@;;Df~f{NjLd?u(DgmLQl!C!0J8}x=;$#n>p?7fR2W;22OxH3O}XtgfW61I@M zxS0Cm9dndhN?1*O;fed<|Lj7Zp{?+Nn}e}E@Y8FDKt6OmE8GYKRg7GW3iF1E-P-g< z%cVs>HiP!hktxr%FYNDiR+=kMp^S>kDmqrEa^-`k(|Za(i3dlGBL@|omphso)<&nF zbU7;?ltZ>2B3ype6HR;%A0+>wPPphu=b*-r#zn>2%+~x6^^#Pf;)h#Ejv~W_g#&30 z6y8r8v<|lbnozlZ-zq|+AgnuQWSM$;T?a!6=~spC|Dmn!Q|=FZ#GVOEKK`miNUcc`?%+>R$S)DE>sAK|Et_Nw{dr%F)IZ z%~ngwGr7r_PSE1BDX)4M?(~PQ?D1lmO2r-3q^`N0D~2N}l_;LHOZmMUdbEwhqRH`W zBW?ug%RO1V*nvPiLNioWi+~<|T{qp<6ym`;kC>KtJvK!vQZ|j|pUHV(?@!EDY%zuGZ^LR9FOp2) zR3mw<--89!)4j0*%ZB(&P|H-$gdfZmS-{=KR;FNJjel%~^7E?Uwh(i9_CRi{h7-N< zE^;leF*~Kb$5vAS&MYsdA6r^v5u1~)%7mLDJ`5A(d%Wpd z{1wL2e0f5tL)^Wia^r+z;iK}ppdm|RanC{fC8Zc&=wE{F7@Uj*AV_e=uy;mjPUgXs zv`|rD7ER+uFgT`HCO8!ZTS((UkrpezItnHIq#=&3>Jl=o;904;0MZ4m>&8uT%RYrB zm5(aN1ykp-QG#7IN$CWyA4EBr8;<>;m>^0rpI|S*_r2@zBTgE+n$h;p^~BXa4bjLv^>Z@%5a$c%R|0+Eg!f&lM12dU`zYc=IbS8qzTE%Q zGac$z{z>-_^+f(RS|Im7R$JA7wl1EvR;zN65TT(*OX7r^nEjroX4a#mKCXhK}eaVF_r!C-(pqcv_`|IbzLf+7<{=tAxqc*$1 zw&7#0%4K)4jg|2#+=Wcb>)jv=u$$6O3taPZBQo;0<|UDg?1_}#HjQhPRtAoYPy&@) ztT{iuwQh_x?PwEhutk+%40_j!3*+@I%qHZ(1T}%{i)b{?8-fQO^)v04ah6DxZMU&&D_@r66CmfoI^Sn zJR|(n#)OVO)(|;H#lcVW*nfYL*@Ig|6uC+n+Y9pVJwYoJGCW%|$EU&v-9X2id3{uS zH!A%1*0MSifMo_wD78ZWtM~LDQ|W)br|Yeed6}oJWP)3S&)g^6&%ldEu6f>FgP)A2 zLQ<_JtzCB~EOEYJ!Kbk}y`r&y$GBfPZFMi{-2kd1xQ+GL3dbSF{0IkvzU%8B4Efm zL4?sJab(8BT&L1xL?nXkp5bbF6h|b217HSYY-5FQEa9EU$qUjHT~^_fQB#kQY&6vR z++4;noEetVx5i3m7-ld6U6>Zs1JpXcSg;YI*(4ULu2s?09@%#!KjUAE+VN{UH_n7a z?<>qZu$J+fVWN^6&}tA|j+#l6pbwy&0qiV(EURLwoP!=?gM0o~W}Ob%<%o41IP~Vc z)G(85CfMhN3*K+~I1jEF0-eodBT!e~o{0`Up%L@1yU(bTx5!s$DBaenoG_$0Z+AT< zKl=`TQ>6vxgjUA!n@VNmiv&Sfb=DR&2E};@O$2! zxwq^KOnxxEe$o?ug(MAP!IiW$p(;%S>M}dbM;vK-bF^kJ9?8c?@2RR(T*2_HfsG{K z5+5f=P=7Z9V1E`Fe`Lp^rf^dFKZNYlhfwFS%|{DxA5tEPtuOn%oI zqT-@#Dy|Fy6cN=M%e(GmNC#~4MK9tq^HV98*;w$gkWf3tZZ&m_742kEIPSdxpOW>R zah7l&I&gcag6fE{*4%zr(EW(9#W|C1CcnV%CjcZ9GRkm)NFnQ)boJVVwj{sZtE;iA z%<>q{qKo!&hp+`965TVDr)x8{p&8g+TkBeI^McZhatJ%{zw4BJ2(tw57ahY3%5Svh zEVGegy|FIwh?jMfRlTIFpA)J1JD0mCz4M<3Ii{Cn^j zBAw&SfxQIEpO}#~1M_0poMv2eUMSL_m#p}#m?{R-U=>?X$X7i8Ej|X_pDd&ep!X)V ztSfYAF5(enFl9JwWy9^3S~&L}{>yHkTbmT1vP|;Je#v_z{8)(T4+se44^R2Ap)Azo zh)Z(Jo_d|mRJ%RwSYhOY*WtwF0y}1+y<+Kkcb|yk>Y$ZhHdDQndxIOb8#HaIZ7w?~ z>7xuPDbidf3CXtDn{lYT`YwKr7VOdftU^5D3Nk7vG<&l_|J5)9iqs*V@GQ=Q_(iuE&-4J15#Ps@dn z9INLw|D|4<_fUP@SO%IL&8y|uEngJF`Ji`z7V>p{@o7IZ?g#Zd>7VsO;&5|>X}oc< zjinSoxdIi59zQkrm!D!9S`RFhq#yuD%kr~Dz-Mx%_7?wY+hv}*XjfO(^R|X)etwOc zj(t!4jxV2lEFKDG z0JSOO#K57p=kMO9TeYWNAr@szE;foTy${M}RwR_2KRpx6;bODXR8|jt>qJ)DA*-oTwg{n}2r*MV7iql(! zi{SmU?H@XuJuwOK3f2oA{uQ0&{_8_)P}}(90(oWrw1nEIZ0I|+kW?=rFKreu11W0x zo|=i24fv(<-+OWqCL5`X@{E}iFqYU4;5D^)*wgX zIQLd~I9ArcEyHy&Q6DvimA(29jDs@~R7kPA2m`!ven7I3lvy81=z$1t1oI6$RK9km z!IW&~pdw?{v1WXGMjyedED0zOgn=ZipYAO&ZzgjE&0xk?MXB-7N-Lfz7LxB^^pE8Wb@8jaB)27=Z#I=GlgC7(w}1BXjO zFX7QZ+B{KEpaQXbl?6hb3OHN?)EjvnOD^Xi;H2mWAFe*{vJZiGz0FZdwz#zeh4ZEG z%{_L8Vq99SA?fX5gZAMfa-$A~`4L}b3JmE2K7E(bO-hs_3%J931cW!&IV|Ls3IfX# z?m54TJTXKxoq$EU<1KJb0 zvP4|9m-w58Xd| z_~kT#;$};EZV}{52Fb%Tc6Ux8*qRG9u~a5cWv4$r{|7A-<**j}a zGb&F@z9~Lht`CdslzySPQABQzNNbiLvR=iSwRk=L_y3{nt%BlO+i2b31R8gDcXtRL z+}+*X-5ZDC4#C~s-5r9v1PSgI;PhJmKIiP))m5{qullOLr{;LS@s5EVbd?eJb{g#o z$0ob^E20i(deg@U`uJSBRO9{r{YO4a%Q_BDvfM8rY?xR=@ZhK_CI`)qUll2Cl1h`5 zP-v+asfDLnAx!e`CUg47?sE!KfQ3;BWQeZqlbtVD!!vi6+um(=fVp3-`GNWJmFV51 zFIU=lSN0@08BwxV`ymWd5`vq<-3;_%f>HdJ=T*KND5ga{wYp*v_~0)6d2=ZWkp5yT z&UpC*5v)5jxuFM-F!DqI33(9!KwfZ0R(UP+UAM)XJ zMa2}sCL7P^;#5fp9UhBl=bT%;Kh>}}|K|>K$@?0$`p-4lf8)Zx?yzPxJr`UxY=3!T zEs++=e*dCsJ4-waaP+LBO3G!_&{XrFUA{rF+?ZB!V zgI|c!&18(+PyEUZ>P9;x2Rd`BG4WV8ZbjL7jsR?xZw5y1Jun^>d&Dd^PmTH9x z_L{n^otJ}xO!Dzt+W%u@bF(Qzss>LyW^VxHZwi;KT>01U%&_Y%CGP9EgB>>cUH%+m z0+l?GPr+?bHkZt%4|a`<$c{Pr0WvJSnGrbp!;9%=$SMulG%08q%H^7HhPgiz>703z zkaqomMqA{UQ`zkWW%0?p6iHFvvnEm#+0h$wlQ%%=>R9?)P6#jJ(M168~CPM)C*}IzKNmG`F3rQL35!unp?Jue#K2d z+2&!L;D3q7k+?1YElZkakl=iZPUHqwrCdA~rfS6#I3bgGB+l>p{q_C?(QyFn8iz+2 zBWs<0KWE}tF<4VFrN5SzLq}|S?WZ?izPqgs+lIUafz1pGiHn=9qp7P%iIq;pvUTyf zceJomo^P%2M9^tjT2F)|b8x6)h@p;ZYzR`iklm7Z_d)R$6h>^ygFd_pr_q(6Z4>lY zSW-XD1-a@uD^-rpDpdqHN@^Vfouvj|gP6Z|*LuI*nWd#-7DspDS!Q^Zd&QMD|Ln2l+@m;Y&p%w0UY=ucvL`?J}KZ*VZk4?Z+QnXNx!Uee{m1eV4Y?g!EsNbk+jY15ddZEBiaAR4gRWR zLhI6U0G7H{S(=%HLWcTwID4vJ$T zR2ylD1=g3hE}L6Gg+>GvXXkXXc(`c~p|2p24LE)ve@LIT)Tl!ZVMF@KfFk>IjHa6v zx4Uo$K<^B3mHxW@O?&_=lgU3Iq09`huP~Rya>~)T;h18LkP=UbDo$6WKZ+KdLQ$30 zqLI=f5;Vo;px>XF(1cR+DO#q^F#W!*$hFi~uHD?W(1K9O`S}`WGsdLj3r6%({$k$) z&PB4H3SpnPXZpQ^2?nkI$Do!YMUMJ_5s@;0iW|fRt4<}4E|#e_$R#3BP?&@cXn4TMmF+m~n|XBBE34^u&qv17HiOfwSZJ zCF{TJ^FL_(z?R}URI$4$O z^lVtlF43+L#@4t9E=!sAQDlWkRH;@m*Uuh6bcg~W9fUv|L zm80$~wqZ2v!Rvhr*5Z|F^7o{j;+NWAS&n z78f1c;6Q^w=mkb=b_>e21isvafUVQRWme#7hsWY+MX2ZPYaa!_F*aAVw{8orb#=vr zy6%ehw5K+g4uK3oUK&Gtev6t6=mp|(Afr?~Fg!>NTmH8mcTsq3MY%%s$!H&O7cw@q zIlHKhfeAMn?>ACkjUnQ{{`W=^{VG$xaYiQ4%-mo<6nRX~+ z&dki3h>Ie8Y{LES#mGvn9> zzm_@MEkRLskoZdzM{~39?}|X=JthWB%2G7bjS;p1ovCxHwRD6q=W!tGsAS5f{>h(n^*0y z#WgT5^J?8-JO|ZjOUgcK&yw1Oibxh(6w$mt%vK#P-0wRZ{@$tEz>K!}VExDsSEmY( zW!5ogF8f=MvXHYUXNnrT=|>*112TP3*nSF}cp-WR8I4Jd|6$*-jxG5mfI=~KcjF$8 zteX&wturgff1RdRtj1OO9TzE)wM10x6U1mNeUu=c7+F^zK%rix! z35~V-LDpXH^gX;Tk_2@G%WKVzaWWSBJKk?Q2cg=lbE@;waD8S1)xJ83PVVm5mn&ba zT6<#LbU0augK2~*XnWg(W#}Vt2bjyXs>?mszjmTSKS+e9& z5c7-$^>XC?BflLSA7lXHYpu`EEWsenF`R8;i#8m_IFTpx;)mx!B=i!CnD$*d|IM$X zIfASH>pLA^fr2H$Pbxpa{434H>-E~dMUSrii0LmNaM1jxtrX6G?RmrMTmL^eT88}p z&pcv5lNue;Ml`dDW*lg4lAt~`ZH^$r)#;Q({BU=5-H)^LS|J>CW8=GYGY*<&+GA>i z<`HgHCgxA}m+i-I9y4q27qeFZ(2ig8*kUx@8Om4Ps8V?k zSF|%30$H*h_ofy}`$qdF0Ht?~__rb6!>s0@(3M&ukn-?r1SyXi*6dh(Vw7&O0-}Cm zZ|1(;Bxf(65tsj^XnjLTIYWapER!Q$IF9@UQF@>-@S9V9Hk~w$GDvyo56%0BI>s2i z5ZChK|D!yFb9RLhSnxgeQe8#+Xb548&)D^ixvwxI)ErKL>VEihS|H`|v^gaNbu@Kn z_7*-4QXbCeh{o8**z%W?)VttI%7SED)H~=mtg|by`bONxr1{zj~JbNrzdRY03N;0jN6r%+kSl5iBCf8R!HVa1TKYqm$ z{Y9iN9A0_T+rw#s&j!b|9goX1es*i$UKiz`iA0nRz~Dn>^}}cG z4*wo}@EaCI=a!|FTBfpxIC_2G=!Tt$qZ&&kFm>bLCkoD94q4$;NI>+F8wp3AR8jQ8 zLpIw9Dvgx>lp+hga{rie1v^pS0$Npx_@+ypx5cM~V;A~0`*b<52+5>8kiZ!BH%HHTFM(%OoHm>BA;2=q}-A3k`v-xOHhO_4P4#XrGolw8Q z7S-xC*)>q|-@f2RUjL2Wk`j{_3Q->->a!^Wb0uzPt!2P^g?nj8S{H~Njy0~~=%+{^ zb_Bt^|HF>CyN+_H3vcnpN$Fu?i{OT(7Bz;-yXl19*vDvHBxsrlqt~t*lZb!VvA?zB zr@yfk@17^%NJ;-~Jc&~ia3s2D15$S2k%ib8m#l?cv(G!xDm5$U+(6LcWAFya< zO5Q`ID;5XX1LAL z0%cVnvVax;vD%*#9`9c|XqKpa>YryXa745beB;Iig2zQ6m1fYgg4IgM?8m<=ZQ>B7 zsP7v7K7cH7!w+gP2zUU!@BaIfXWi*J%+*3p+)us55@ zELmYBle1orLx6%5zIp%hE0R=jJ&H7SsMyVfm>c6rryu57OmV0+f+_SR$4B0!zj*pN zNa%6$HOFV>(O7{@kH-S<|-?2soXWdgk9k0)5D*6R})e}_SMzg?+CF)4@>=) zyu3e=&aB|E2lv6hGriaUOb!yqPW6H(9tel_R*9^polsJWWYxr`Z5d9w*}KD0|1~{O zUm_z;QKg>zGb;br)eUPEedsYKr1#TVz0m?I%#!Y;F0h!5&%B=>ngTh-6WpIF(u@$} zuKp(~E+*@F&U6JSG`iL!Y$>KoX(}^4ZQ$c58YcbkIK{S9Bc8zuk+>pg=!37_OjmPo zz_+tUbmahT*4Cb;IxOs}eHl`TX7ztUB$gR1#tv-nI?jcmj+v9g-)H6!p^jOnVyVUh zi>Pp7Mi?U>&j2&LS05)qmL{Z`=MDg*(u47j>eAV&jAnU*NM1U%Ib2{Pe4lZ-X(B6* z&`+cXTl;211`Or4jg^J<4*w81J_T)vWtMCXQ4+Do;s?t-s52b;S78B8R$22W^r|*C zrpjPM0S6s+lMoEK)v=#IT|Pbmk~Dz@0#}+<*$q%APF$NWoc3)Gdjb>U-lRJ8M$BHr zE{>);U`X1H}7?8G*e~~O?(3|KXJzDKtEP|_)Ipwm)vVkezrvzn4Z}hAOO|R?O zon`6BxNfaBbtp)-{jMr zjht|n>OGt=3+rh>9h@s#yOwzGx64A*KP#Zo-!DfEb{3IzHMiV-qxE( z2ROuZ>nt^VbZaCQdO&*@&<=Y2?6&Nd=k8+3H|#Ceq+dvT;~qo#4J)-{0D)&9cvbo|jb zv0rA2zqXvK#&{P8{%1&0DdM7i6_H!ZTsyR43*9=uOv-Xesqs7(lH~ji$U~Q3aRSK} z@pM(Ycdmc1OJlaqzAnbKlg-v=_)fsZF(H3`sD>t*yG6zPr1BIi?#121xIV*GhH4c& z>nk(mn`It@S+L(JvhXA;g&qhKS_Csr;7@x0{TvDEQIaw>b66Do&2evX3GscdxST!5 zPKY9fVCH+N!tgB5=6L3+F|XiHbSUpB=1sis zfVO4phYb1o4q)kT5p!p5)aP|U7v`*DSX<6EbA2wWR+gH#nWMV;Kpi&I zWrKb1^zt52ge3JESo9?2U0XCtk(05yD?7UGR@98oTDlD4Jgu^JRAP+OhL3fNU*SORUM1Zf(`L z*QS+mC0&_uCGAetIL5_oYDo=ijq!O7oGzhgJho>=OfD;;l*U$5=G5Wpb&KCm7we&^ zEE1AUQarpBTQrg$Hcw;ok$|4m;c-Au-Y^pDvlFJ!_->jOe`dc!gQv*bJNifVaMHRE z#mDIjz<5mhxY0R3mIic<#MS{b=1BY{jF)sy-yNS~ySaE&aUmy&^()7eg)hP)8_qB6 zUh$;5FiX&uM=2_E;!jgzs7Y$m@*F3Z_?NO)gaG7|b z>F|6eK*QEgFYjvI9d7Lsi;;Qh2DlrZ2`ewa5^8yji9K|}U@32DozGv@KFuoZaOoq;U&z_&AOo%+>Pas~qngA2cJF>1>lGaGj_ z#+fq~erh-)WSv6=qq6tib2tG6k~eK|ojvi0)~Rl0q`EAECwrU#lkluba?raaEV|;A zt*Zo4V9F)Ja6$N(BppCQk9kbTKi3Cy&HH3#2S{)oIk`{YO zGsL_mtuXcQ;fVVji6R&1k-B|#qu~ptS`0~v`ryUFLd~Jmt-`XS`yuMu@Z!eMmqY9h z^ZG6I+}3EMF;-mvMMYcx0E=}^R9b&D^7vOsj!4P&L@HKK*6?11!!y>9QWwuBTS7>TFI(eE;L=SBG8ZnD2KOZE5aF=&~i%IJ~C{Y zriH3)k^PbFZ-4Ne?R}1Dj%ew0EsZh`VF-t{(dTlq{aEmrXLjxH`)pnSm}Z~gU~zB( zWpqY1rp)gKFST)6Z6%rrkhjB?L2DJ6Wx{dI{g2b2)vb0Io_v=P;rXbV_gC&g$L%KV z&3ab#?Xn*BKiMQWN>4GOWZTSD-ntGvC29umpVF!X$Z7#gRjaXTU%`i%M^KEhql=o$ zBI2y3Rlb?nm5v}0vkwDI(Dm~lN#L)ZQ$XtZjX z5@j?@H1eHpnp$4b2U3j^H4tp2I)Y&h{&0%i)Ag2-@e&`a#ObEq2PJC+eo@_?in_)H#JnQoNM1Fd}%CQ}=D1_1xe(AZ$0HG64_M64d9 z7eqLK7BqotrFSK5hs<{QAv8Fz}y-t`-65SEiH$cyc!TozppQ}<%62~?y6Cy^!9h8 z$y6Pse*H-|@w)Gc+)D<^%!N)=IJ%g>U4ZoW8AW%QsW|^7kydKmC6N-fr@~;<8+U2c zbIDaZDanD4pc8!038t=qex!dUIJ-3hsjkCnwO!%-ky%BbttmI3mn|?sbnpED9yRJ? z8FMg}LFpt89X%Ku^t5&mdq@l;VhGmPkXk?B7QT!C~ZYcgCHn+!moBko`UFcPtX)D3= zqC7OET}s*?oSGXy@}LX1cDfadV)UPJI^q&?x)|a;^&5T-4-q}DdgPEZ^up>Ihz?<| zX=62?`@*ao#W^;HXu`njZ89XhU?{j-9ta8`ol4ER)j5TpBl7$?eA`}l%T2G_qn*kUyu6+AO+ ze?i1?N?Qh79e8nDrK)cY2vo)B+IR!Xq*+_+olptdQ$|u)i3p5e83@<$nBE~izFbrT zQE-^DZnA4)$C<`OW$W9?pVNX9@bK^;um@*{rpf61|nxhC(wz zlXYojSDL{fmL?l%{>HKVls)TV#*qg1HR{8dDgwHU4IP#YLE$DgUH0kTj^UTnq< ziI$&7oH4#`+cn7oYJdYOO@5``gJvpuPR3n?(GhWA5Zcd3X|G9ooUkUl)aiM(EFeHRz*Nf5>du zBozwZGdr$JTU(o&+GgiJO?5r)S0mTt$LAlbY9g_J|^^z6CQA{-=S9&j{!_KfiMRZj)-L?HaNBV<7m+V7aFzvyU8W>_k# zyv)mVd@ohVZ2F_7koX1xM>1JLLT06pwNg37JFj@WMqC_kvp` zF=MwZFgp8?`L1M%9v?|fEpk=D`(xv;6}xvA0CwVq9W!JHdD6gli%A zgd9VXUi3cud2_io&vdjm$wPaK(9SWVCP*(h5Q|<_Jf&X*ON|Mx-n7(GirYvThkr{h zWTzAE{Q%uoS)=m{jLa81va1b?-a~3}2;4&ta=^{Xgh@EftkAC`W5_fg%PKDkt#+|f zBJ05+>YxJ?CTyf7f ztDAN-X}02@t;Zvc?jTMf4*vH>>WKST`%NGy})A_h4V?J|9yuJZT7T`xu{hNhhv~-*c>y@X2mHWDRG+P5^T_RfOcL+(g z&OzVQMja&d?YP!+F~og7M({2_pb+9h?31_8omShUtFs(AR^ktK?B&6r-;~%I)3bGP z+?!B=OU8Cl#P`TaN4{kCfKid0>%97lmST22 z|NC~3nIA8V4a(Y}`cKy`T>mRkRe$@Ro9pZ0d@+9$!zuiF0VOi7v{$m^JaSMCc~-Jq zy{643{Ysr{WB)XCIntlP>Vtqirnuf^)6h5qf`BEVi5pu^s2oN)f~>W*PLHehWB(nV z9iA+q&)45vU(&7_L<7d@htM0xR&I4!OghxJV<_&G+l@h2SH`sB_D+j1BaQ>ZtWsP= z`~dn%N7_?kk{yO4nb)R3^(Ls@u=spC2{v|{)IHm09zIe!aBx`Y`Cu{tp_DA^eaG4c z_QDH7jkc>aU)*}BD|0q~b~-55=fjnfuB4c|-K-!`I8??I zp`UF6O91KIz&r|M_s>26SQE_?2j+hzat8&d9|)BU7TxJ&y0~ z)hmHPJZ{56uQv7EJ5)mjDf8`eujwA*bupf%%e@r1Ran3xbK#CZ4^pV+yvF;K<`V zx!dz?X;}1F;8>_c7iW8%!s>Ro*xCq-;#z!vR7inoQK@m2QFL4^MP=~@R77}`_g_5M zPdH9N#i`h}2De2%U63_Qf?7zK2cfuBKh^Q_-@fqRjfJa5mOn4}&d^ALc}W`n5&UyA z3Emd+N`^`rY2>ekT6ei>1>>$7<$=$avu9b@#db5K?3+Nl>3A*!^JoGt=zcB-bZ<7! z+^ox1E{^(2lxZ*;O08M8`m#j|mt`*X`?vEZ{f`EWC;wOQ1?#pr_6;UOJdcpjzbdbN zVPte-))Gs2M3N2#P3mciY)sSWvRkyR#U~i@*{_+Ruc!u4)c6KTxk;J*#nLRZ(^ZKp z?bXl9!>TXA<_f%@^9oGs{&V80-ly?lL;~*eC*`9vW`2jU36Ls8jj=o!-hSCuQ!sxD z!`WY;1YuHyro}QhdMnkslti1NPI1jEJvaE22b(WdJziN3an*BokF1}3eA@Ivl!vtu z!e}|IsnzSXL|;lf;A!{$TCKqU6tnETV=#;h&!RO|sqgKC5N|jr&zCw>oKzW%J|QOx zG?60!B*H7W4|ILFueh%Y^qp$={*v6(Wne>u#NSBKc0|vfM4&{@Nrt<#u>QW-{OT1j zT4sTz(Id&#ormC6+13(WOf)aNm_nQUBdtWGTIrFk2j@NxIf`gb-X=_u?!{9~VOWuF zYqCX#)laq5Gw;%lJ=jn335MOKf3Wx84GM<+HyvpZi5~tNiT;l({pFuM)DQivY9ne_ zF=FD%pH>S$T5R=@VM&IAOi?qN6kB-ZMv=#qsidI9(49m#zc`7aWA*6)w7I?S@dJJd zO&s{KEtU{2l;E?Bk9S{f`Ru%3KAL~LzNPJeHSJLW)w~#fYcy5y@)yx&3MDbdJcnfX z<`v# zRDAF6B6CVn~p&RdA6 z0NIqhr||S)eR)M|{`9WaIcmCuiNm9PImB9JSV!*tCW6R6wHq@Tw5``uhaS&UmuV!= zEBWD~%veGmPfL?RvWrNhB!LkiF<$)lrXY2uxZ`TuDz`Sf;hPf5IxNKLSxcloot8qWjgzu5d<}Q1_tx8s3KZ}{>T!6ddCR`Y| z-F^mlBh`y}(zAvj$4D6ODUy>@d48*x{&og+j|(^UIBWbFDty2-7Vm znGQWgH_^I%p}UrI1nk_!nCX#?-IIKPI&7a122uTsJ1jQ)7eQe}xFjF%v*Z^pZyRVD zT#>}qzsy^oQsQXWC5j1gt{hzC_Y&2$Z zX{-u`$6qDPatljo4a?}@q0>p1I?`}8{vf=dLa=1cDX~T(4WZ>nK#bB-+CXJ9%jV8A z0pNwy`e=Hd=yNNnYtS6m6@7!KtkM(j3lfUbEG5RQEmRW;Jd2Hm8QhlZJY#3%Xg3et z1`iQ{Uio$C38ozazONJ_IB^b6yVX$wYJa z4BOs*)cpN!s4+HLO0iDmV6b)BCyAD6R}C)6$u4A+o1osXpH%-O$A{)Y4fR8av5f!DxuAP zB4SpO_xhCtv(OiB*MIa3J|QH>5m8_4xyq-=tdXe6P>bTE2u0sfFqA(Qy%=8>mG0yE zBW6-3o81G~BEq^ThZqjkew}(H<#L=_CFL?(^%qIX@menECtb3iVkWt#|0-Sd_I7*5 zH3-_n)7C3^qW|Ebt3f4dhnQt}9*(74p|D5gI@A4@EXzoL$=M$2Id+JC6ESWkK7A;? zzqs#|!>2WJ*Xk(YyOf-bw!_&Tz5hn(q19#VtP${QZ_bVv?B)ypeFxZ3Rc}7ydG#lT z8-y9Ry=a6FLlPz?s-*VFu-Vj7z@5V&MlDss`Ay67gr@Oddz0e5^2m`hok27{NIt)Q zZ~kq*XVL{$Ak(-(=XrAz==YZ&8EtSrSgM}%!l%vJt>|@AZ`9IAoN?cdps~1Gl2NYP zt4vm%l2+?x&Gw=#;ooqIIG@%-5v0&OWL|CJs z3@;gD9%=W;a1%H-X}Ebh!O=*?r~j;lmd2d3Q$iWqIEMn8HJLx)Kv3$X;dx z6v~-EdJ8$#?Xf(eGs(<1yAQVK?!!LP_=npNAa2jpQR|9}3Z&vp74t!@&d(J`m}z;XAS^AXvw|6uS;)iq@bjv^EAS5d(ono*iNF*V{~$`htT$N^?7 z=@}(cz7R~Bf*~2&lZo+x8pLzXF2ZIBRZvAi1$#C8v6Suow281e{s~Wl6?{Uen7`E>R3}z_?Mcz#4#qb< z=FXz~8qmKTu1U&|872%XL00cbjjFuQ|8v#zo1G2heL7hA64S0BW0uEHk6Yf%OZ?SA z=8z8gnIm{@PT^+Vy)_Ly6QRfUI;^*^g&LGG&Sf&|+gEP;hENB*U=WleRO6EV#ySpJ zO_1h3a%3_g->++k3N*fnutD+ z=r-^(?RZPKe+Qxa`#uEPg<6MtGw+R*xJ!4Sg52~hwmD@KFy8{+yi(3-r{YgnN3(e|GbR2UEA!Wy* zS-w2QX5zXJHcu|fO3Uv1&Ox|@^k{tYqa$r4-SE^;`=RFkrWu3L_JV}DP8DAki-Bk- z4j~vh^a-z6Te>DpHyfVpKgUyZqCsZ=g|c6zpl z=ZgSzuyP9$Y<|9qX;bz+r*Q#OYH6!$+t}aVN5d?Q3};{@!^PA< z&qIk%X-A{zazrZ~UZEe?x*>?>WAe9j!Wx#r^mr*{#g`x+B_<3^>fsJdfA{zm=J(K> zU(*YD%m7<4%V}gp=2T=Rt2>Z=%XWpiX)O?mURx_pYgGTTIRFQ;wZyJ?lu#`z7# z=5Ty2*+3WC;=WHp9^nrR~ zBy_WuDlR1xR#L>q$Cfrreg=c&T|)=1DTt5&eYoU0XjI4|xP`GGz5u%r0S zseRi>JiT*ur6pAg8v2XXZEtvtJ_#8U7mrwQW470%7?#_{WH|C@LN?LxTZ(Af+>E%D z2(<^T0U^ZimYW>suU^4;5y5(;pQzP;9Pj?MTE=$Vgt~&5t@q!U{qLs6utua0nmGEW z9H_p^s67}QET2?OW!~)ll`;*}pD-(F4u@PAg_{cxSQ~YFu3|a1_$y zOgwNj7dN*1i`K?k0hcR}-9({H($%1G3c>++5YcR)f243(r%z|Y=@Q(zqpE1|)UIaI zMA5Ac&e2M&NxfxKuyvbm*#J4T4mq}Q8BO@Hpjcg8Z%8j=lio%- zM{%>PLQ*D|<>b=wEIn@PGv1z?l9s+kt^#Y;_>cJV9B=!xC^J?}6}O7W>x$uNIxM>D z8)?fCROs1soiWW3=3>d&=sik?ErndBGP<)REuty7Dpw;Ob(U2RXF90L7b?|g4)(=M zq;m9l8vwntR41~K zs;h;hcQ0puo8lOCX;1M#B%yk3UlZyH&=hf4tiMT3E6(*7y0NJOPcL#3IFtBT>|%kQ zu)NV-8Z@i)o;w3ST_No+0q&4pH)1gZUUbdhIPymzjHv91IJCsedqmT1ITmS}#mOpy z83jv8v>-X@=Af<_f!$cxCDF*kcKlH^ga!6+^N1(~?1PaqXY0jOse3~W0QkX=^cA9b zpqc~o{?_L9<%1-r=SIPvrYeFbAGoyz_2tkO8O|+(ehD!ZYqCWdqEflyw))(;{D&RK z0U^+eg22>+vG!?VRZer7xoKVS87uq5P}ZOa>5uOQf1|~}VDwLdU&Ap7`}I4t#H~o6$oRr- zBS&!IFv5oh?-_=w-^8)&xaFWZVC^;S3WEit8Tk#HID$j&9776G2khBQnme;1DtS~O zwXE>nD9xi-Kjgtm3Yw)S(+Nb3xXUzsd~JK+>DfL0mBxsF1k?5@q5yNpd(B}`%^W1^ z6&B-A*1z<%Q5Y-E*b>})(#-d4z$q>#`js@P{KC`#jqV3%M5G#tk-niP3Q?UZz$7)8@TGv}5 zXVw#$igJ7A?N5rGy2HuTO^0zRhK$A{`*A+{_O(PjhW715L6!9~WB(CiZ2$au;f~k4 z0HzMCcD%TJt1mKJXY|!e-Thnk*1}JeGBRxrE)FcseDEiP-{Lpww(mRh>YDs6j~Olk z-za2!mfkyxyMOzSE^NC5*jnWw99SB|jzV9rGRGxx@(1b}WW}-Q@1{1=aF=I6=-^W+ zVOZB86w)dMy1+)Q6Q>}aQ$R%4?Tw(=f-O$%Op$o1;&n&;;$ruPPp9%1ZIia;%fX$k zHQuNYP_#5rJ$*n=yBdfMd8RQHid=_e(9W`~djUFDXa1N98pIdFB{zuvW%$&*3a`l< zfmu8Kgis>{2$$ql{&uFt_DB{B1v%`AJTKvnZZS408o{v~y@nY+$`aujE!!6=DG1M= zc652q4R?Yw^f-;bA~P3n_%ue?DS0bxye8Nq6#&-RBN@A5?!B{Lw-#?yJL&{L@*!{F z#Ij3(ysl>nd{p`=K21gd47Yv!Y9R2Kz>wFR?)(h`3~}yL1IiMz!4J}|hFW%t<6^+n zfCufAKS_Nuw9~22S(LUzxY5C@2z4}S{@~^3$`!)?;J#^i^WBS#+>c=%M8pH;lx+)D zE(0euY?o=W423u3IDpZ&zj5gtpD+Rh8E!vE%r;S*$$k3W)%a7BomknN z%)k0V6{qy8MF&xA-ON+nKJCZ&xuB$iHBb;t9vJp0^q`^eY?!IQY@-$98HpOrWfq=@o(%UQApU#J#hP>zu;W`h_3;V! z)*gVT9)6dnx5VqV5y{!4!o^w)k=RU_4kbQGs~snHDwYgRgAHfF+&kTDY)e@Yij6F5I6gqknRjx~D4jt7je#`Cz}zsopDJ zFh@)vgntb4y)Ig&ceM)-opCbn2$E-sZo$Bnte=BV^o+B5fS${O=;Z#EXw5i1MYTycEwSzV`%l;PYdhAJhjK zh!U`(Qo58$ol^qGQ%^Zp*>CTo$0}bAG%c{{t-{KRFuVjODHtloes7%=DAQ`N3#O;C zmyfyCd<7*uW2TZKfS&_wL-KW+>c+Yl%w;C3u;kg>_5wjc=~R^sg0pjYRR<{R_X7y= zFr1r)Cw0uS<57VU&_1*@-t)FY4kGY_ff&WgP8#Z-A2FF#M_)OH*}h9v)dBr!MP{41Zq_vxl~z#4s>$&kxVn zQvceNsk*3q8LPSrxcS*eb|IxCt_(jPQ-hPh81Qw80VsIyQ-%!=0E2JTl~VJPPkZw8 z^0AigBY@U0w=wgk=Onz_uOYc7zSMftFQO*?Zu>}HEYkN@MT~>dmARF_gHmM_x&><# zntu$p7`uX-b_*^+W8#~4Ov?-9Z=p4MO!~QEGAV2DlLP34R1kq9hsv4hn3$Lt5uHJS zMab-FZ7n%u3j7uD%(sH3Kb78|Yj$lwQyM4;xH@fc}%f&Tk$# z1zBHe6;&b|CR9?4Q*H2+)%SqV#ZjpTU)NTfvTXvD$Pl%qLODAc?EX0sYH9N@>>K3| zc?USyiB0f7!fu-0?BBcX zbY;{XY>vo}(vAGUMT{4#u;kb=aZP8@DIe0$9!CF~nshXdMy@;<-o|l298c0aNXREf ze(u2?^8$;8^7yr!_Ods;G^(A99zPVx`dR&-#Pjpy5!cwq^?y&q_O`;=0_a3E{kIeG ze^x=PKvxLZ{`P$1MMj#q7`VvN_12kThJlP$P$IG{iPafR6vov_rT`kyFp6du{PL~G z_rCD88E7(z^3a)k&^y<=chk*ALlfRq4#Pc@;j-g%Ecn!Ob=T#QA@uR`!u3UA7Z2DU zmHI@hEj4YXDt?Cvza;KZr&+$t;l`YADJ@l9o(VfrSBk(Y5*A?(ooc*_Wfk(HHkmbL zzYP*?N&r;ynN9`wTjTy?EBOasvLI5AU*{uO$8k+QDL81l@c-&ZULy>2+G|yFvjdp%EQSaU4T*>6U z6L(cpAP^gRy{{p~IRjNoQ@QevtdLZVlza-O?--|MyIA(=+b~vJ6kHm$B&r!g zq%)v*b7$^Ss2+=_o}WQl+Th!)V}42)%2%vddUTwgcY|{KFqsUO@}^$BkQ8UNAsN6% zc2GJ$p0xKsl019`Lj%ar4ZTJoqP9XrQ_5LnZ+pfd=7FQ}9C^pOC7k2Rj(DL_J$Iey zkGzxP_-ecIY+K7_JG;yw$FLI9#w9?X^^3eKvbC+wA&E9xo1#*^5{yA%faZc}oFTNO zM7#6`b$i%HePZmb=?-6%Ex9Vvw*F<543duLz2FbKOzGj=exAX8B&9qIU-&(Z;28;z zV5tt9GIeFWH%*~64TXy8OSg8pjh0(OA71D3mSgw}{|N={`+cjWFp+_c>e&IFY^#eL z-(u5EiNIP@q1@TL9oO%BGGAC=e0fSq0P%;IT}aEQeV-SB{>JylqgJ_9`IF{AhUF@` zHPekIeZG}GmlYNV9m~gL+h+5Nh4|Ox82svX8pU1kHJ-cLlc=^1hXT5-Kr@WQbJS%n z*)v>lqryuLTZqnkk0;u5XD+wlY{u5op!bo^C{f^s{`yQF`_>0SBtAp{uO7(6^Q$`; zX{?>;2-VlW-|Y59j8e!ti6-gD1C-|J7W_x+sn-1m9z zbIDf~BeOc!8B=)x3KEp`DhF3|s`X;8IF10okIijv6*pyoY zX#cucRloJ4>ExS!)+1po8Q2=th5e^*`u{75tvRR#EPW?e*l$^MGz4B*F~kez*b&fT zV|D;Zq)#|x;QUlTRQa{6@;^OU>_$1H#N6i;``O;lpQ4=8T2B&5wJ$fFW)SsWc zFD>PNn(rwEGR*!9vOs^%*r?==r77oTNRn5DVfBHMO4ZOAUN_)@*cJD!sKF~AK79~? zJ$A#3*(;PC8Df_5=^Mil!GX8pcK4~&(40GCD;MQ_(1)WfcQ%#AM1`w|Z)NGehmuXr z!xA}m?pllNN`bxf^yEPAbN2-j!mlQfo+=wwoGR0%(4~}LN9B+%D0g<-+3PmZS^gBb* zwew*tFZtn&cr|JE)I+k)NmLo#UHGv|GOOJ!Q#q2HC_a}5oFVw|bX`UqH31>2!d)VL zUh<8riuvO~?UFUM^%N=jn{;}+6!yW&!a+q{oZP0=vTb(JLa17EeBn88nBMSyd?hjk*D%K11U+~=pC2z=32On9$hzQ<@Duj>zBumPtN*i z>tZd}*vnVo_-XheX%bEJoePW-SMwZ_d81fu*>i`MTdNT@M0qKr4JBWMsAkNRi7&2P z%wdVsNVVi>>2i{|kkB{r^<{S*&1r&bO0(>}y%b-Ut(O`dtlbjkyPlAov7x@;b+}z` z`ICKJB2#AjP`Ku5Car8U^co#3jh)WV3`GOEd{lr@2`L1SNOdWdn! z-`>kLkIBH|M^3QB_cKGZ^XZ*;6WJWV%Q)5c)d$Et6Ee*wK7#aG;KQ*H1 zl%d?@r?cNFdEZ2!n{QXCsl79BNE2RaVq(<8t=}=+k?Q@^T_)uBxfM8!`&0oRov>d? z=S!E^nM~1O_fDTc{g?y|m2vk;*6*GXE)__N5cACkN-ODcSv{SG$a*=1bdGA0N-251 z{2+bf(DrL@WRs1yS(bn@!Q|BbfJPdRLg*eWgN^<2i|5|M?zJP1!*#}j--LfgOmEh) zHrYOmw?b_$>-Q43hIgb&p2y5zYN zJlb{`_Gl-&dBtWYe#tbzQ`(5WNIzh!n?`KhV_ufUaIUl8oG*)`EQ7ziKeU$6=r*vY zJ>xCbP&56R|5&0bQqWiUeSkh)QR_-zqIP+mR1e-P4-f9aq9FvtaX*N$d8>_bY-QvqtBR!8N z_!~`o`LsjP+Qj>KRbHvjJ{YRjukpjkc;io!xq~v5_w3p&ybFLhHygDvB@wQn#$a&bnxJjC)ap|M#3uARf3s2A7 zq~E%Sggq3q6%7>Prsty*@R!rNANK6N??t%@2S^=$d2nj_AaUMMJA;tpcTnmJ{fjpY z+ma}Q=Vi@*vhinkox)DOpXtc%#ME5; ztmlSdr|DMRn~p=6qLamVR<3sSuBwCmSGAh+DG|>O*QDLbYm8-M+4e;>_>}V7TI%dL zm~3<7N!fhg2o4Ocs@>hk5*HJ&J@@^`bWdM%ec)$d(= z8MjcZdFhiePh)rmOz>EH-i0N~1K+Jc&0G?(Ee7{&ZPj|1VpFpzuuh|ETg zXUFvs<+x9}LXlw8gM-N9R>)gT_*9;n&H1A-M67GKK~&RJwA8LHh<5sBET`Gb*HNvx z$CWp66^ls(e%Bm?9SdzYIqvA{G#v*JZeL@m>xwsFbVh`aX{1bE|KeBMBj^<@kWjo* zUy#t9^WAXXz*NbHfx$IYDrbo6+oz&C98dS^$b#=4r;o{V39FRMJjAcrMnn$m^M7$? zH-2mOQ?@o)kY~!Bd-0$~Bt&`ftR;i-{+FM9>9dusxZ z!CsMg;xe&c&D7LqG2#g&IkqD`vi=@bguzDR(zA!Hsk$SQPTh}3=!Cv1_$E!upN3`h z=?0k{9`dgHk8haXnv<%ZW}D878cv}#dly6cGo&is&Ai$mLc+1Qq?W2!f0ZpbjP&T- zFL}}Yl)#)t5uujDXH8j__2-s3aw^TocCPg8`&d{tz~8mn&T>euDojM64o}y?FYH!C zWaqvXF4)pkS0y51=~iw%-uX4^>L~d(Na9{8+a{IoIh?zfT(>fn{R6E!4|ue0)kt0$ z@N8us;VTa+yB1R$G)6#n8c0KA*&?nrxdji)bw>Q`TeKIj=oT`Nab(+`yva)@ZYDp* zXqPUxT-M%-b}_CNYY9xI`ZB zT9LWIel=&r)pm$flDb4(?wC-V#fxc1dS#Ei&ngSIdD~=vn3_(z)h&Ip;$PX$ZW;$x z{2Kph#V`7=oV0=Q-(*M)iB+}1=4zQIu6Qz&xr{;-?A&(;lO0$@;wr1Az6sH&sH8qu z*7-olzHk%~bjMUm#q2uQB#&u5Wz3HBqaEo$RF|5vk=l#;mZE$6Vjl0uZ3AX!P->eq zs2{|qOb^m6Z=1c?VxM@PN`L!ecYHTR?u|cA@3jVoO!?(?bBD4D!YyEH+_8-HVQ*|L zl;P@(gmMc5Lq1ZIY)Cj<;XDZq?FC!+lm$|Fu`{P+zZ6$Cskg+pz7{P8d^mNr(fmVL z|F-gV{T$PgIsEskg2>h{;o)}Hu~}vJ_-MBg#+1*?C^dyYKFOojD5lVVcFKVZk4R@t zET0Ir#?^;VGiXuJ2w9p4>4r%Zhb`sh3L0HM3hXn0OHXPTIv*v+WYJp zE>FHi)_*(vWg^ou2rCZ0MJnB!CBaWi9|oV|$8Vr<3J>G;*ZWuj>rSD=O(FbxSLIup zK&HUKglv3A)IvK)9lmDP8*6v+$1yYZ=4FYK{g!zg9{lTX17Gjd(OF9fW>dEMHZo1= zIZ@1JzMD2h-ShFe`_qCqn2wn45<%GjPaRP+mV*5XDzY{g_DmQN>MYiw4j1#X7EE%cm4=_D~W%+8WCq%G}T6ek_0#l=5 z_0X@(=>0`piE|`|QZ8pX7UacQbs`j$?F%=A!;&_9@D*uV|1cwmwa$AGkQQ`BD+!G= zG8(9>$3)d4QbT~}H-pl9Ew35_Re6($dfG-fyct@V=cxbE?^hyQBLLYCxx_^aY?&!K1uC{$H5sCan&Vy8gRGtERah;gX zob7m>TB>Q6k450z`gE-#^I9`LlIQxnQN_ zj$o^kbN`h+Z^%w^K`xGrC$_7V##8T|Cu1o>m_Cx+?#u31GP6bTcV-D+Uqy)!+4Jb? zuP!M26xM6#dkq@~gti#;+OFQvQT^cEG2Y-4L-iR&;Z=}h?@(elG#;UDotPCxyiGbf zXH@{V=g!a}#LW=aw$LgvS1*hWDC=;%!MmvY$cC*xBmP{duF)<7e6Ba|hhWplZq<(J zMR8%Iaom_w>E$k>DJK@j_qhYa*6t2DLf1Magg? z#uScwXv?1D#VTC#De&@}sk9%AP7!vQV9vc^aVN%Qt$oz%Uh~$~?$(tiyki!+UeO84 zzK54gqaQ~f{eF`dwCs{S>(*tWEUxi_`4d7w(UxxT>zldS+CUMP#fU}cX)~13gD$&< zPu&`_S@pPgt7o;T+=q|h_5B1n58LpQ-ri&CbFcMqs|%t$YH*?Nk-NbyFK+U3lc1V< z_Tjpax5MjPRL5Api=cKw8^Prg+(%@aX-KNd43P!0#&>5Pu2pTT2BR)`cQ5$b;+k%n zA=F}Yi(Um>2xiuByO1d+CjmUW0{wLFuU8yR_7ydC?@> zJo3*X>}8OQTP)`*%>u?6F5LBz?+w59f~_BG^vs}M6ncE;eMivr+VQN>P*tB-qK((V zCd0|3yLXB5(RCm%2K9H+J$;7a)cLBEZh;ult;(^&i-J0i;09x8^F!5 z@IK%)(eb~T^kBSV=PrjS@Oyd!_%gygcncCt{BKGp7`KV~%#3@s-9cLxEC zlazdsK8fCm6+QAYCjR$E9T?~Hbsx3{@NNJ<*~I(*7xxuRod56L3oySJ_GQWf;7^7g zlOJFL@sQq$$={811^AP($K>6wf_O;rKCudtpN!rN7SF^E;vvm5@ra@j2l%I0d>;ph zhg9#kl8P`Dz!m^k3Fh&uaD#YA_r9NQs8|K!BY+DBlh5P_@sRRquI&jX12cvMFkN8s z9YP=;(!OP`OFF!?NT5D%%}$SdVxC*Z=b#XA1SH$Xh3e_GieUc~|Y8Ww*| z29p_v&mv9GyOOY7}@6 z%=q=HARf}cAG)8;R{`U1hjsiv)j>R@f7A^=_kRHKKV!vT*8=g7{zXUq={cGEO0fKA z)CKX7{$=>xo)`n-Kg5dvQ6I!Z`gc|(oDu=V_5(^|VUFL#Z4eLXpK9s1UUK00J+Y3z z&;-Oo`lk}8-&G9o7Fgr|#|)Dfg!C`XnP^`c(w{X;5D)2J^T4zR3eq13YY-3VpBG1t zTMeW?uWdm*q<^JqMtAlg{Yi5G@sR#Sd)}IX_NUJY#6$WwH8l>0_Q&l$h==s=V@>~h z9Hc+tZXh1gKOK_iEM$=W7<+?wNdI_e*M5{j`cv!!;vxNO&Aw25GXDf&%|B^=n7k0A ze+laQS||SWV_kpL0U#dIzXpOQjFrIgTVwgJ`vk;8`Zxc;H1%ZuX~v4L7y{xU{i{G~ z^Oyti3$d=>M{p1i>0fK~_oNXZzBg9SJd+V6Uh8{HnV^>8Cj<1jn z;vxO3WK&d?1wMaYtj}Mz0K`N3=OB7klO5nsW3B&MN=zV=Ld5(7=9@0Pb&Wo6Q>IY2zUoT+r?+^5jc$mEC zXAlqRA9|NEOn$B%#6$Xr-lqtYkLm*Pkp7|fGr{CL`anFSf9O3AF!_Zc5D)1edO>td z{?8bQhx8A==BIN`Q&{N59uHJld+gQ6AHvb`iK6M7A8M->NLi!6A?)N(DUUn z`KWUs9@0Pb^kPh2mI%Z{`iGv3iOK7dfOts%(374pd24bI59uFzCI}{fgBrv``iH(Z zjmg_x!sP#DkAVF{-@?J. + +(in-package :snark) + +;;; wff = well-formed formula +;;; atom = atomic fomula + +(defun not-wff-error (x &optional subst) + (error "~A is not a formula." (term-to-lisp x subst))) + +(defun not-clause-error (x &optional subst) + (error "~A is not a clause." (term-to-lisp x subst))) + +(defun head-is-logical-symbol (wff) + (dereference + wff nil + :if-constant nil + :if-variable (not-wff-error wff) + :if-compound-cons (not-wff-error wff) + :if-compound-appl (function-logical-symbol-p (heada wff)))) + +(defun negation-p (wff) + (eq 'not (head-is-logical-symbol wff))) + +(defun conjunction-p (wff) + (eq 'and (head-is-logical-symbol wff))) + +(defun disjunction-p (wff) + (eq 'or (head-is-logical-symbol wff))) + +(defun implication-p (wff) + (eq 'implies (head-is-logical-symbol wff))) + +(defun reverse-implication-p (wff) + (eq 'implied-by (head-is-logical-symbol wff))) + +(defun equivalence-p (wff) + (eq 'iff (head-is-logical-symbol wff))) + +(defun exclusive-or-p (wff) + (eq 'xor (head-is-logical-symbol wff))) + +(defun conditional-p (wff) + (eq 'if (head-is-logical-symbol wff))) + +(defun universal-quantification-p (wff) + (eq 'forall (head-is-logical-symbol wff))) + +(defun existential-quantification-p (wff) + (eq 'exists (head-is-logical-symbol wff))) + +(defun atom-p (wff) + (not (head-is-logical-symbol wff))) + +(defun literal-p (wff &optional (polarity :pos) strict) + ;; returns (values atom polarity) + ;; only atomic formulas and negated atomic formulas are strict literals + ;; nonstrict literals can have nested negations + (let ((v (head-is-logical-symbol wff))) + (cond + ((null v) + (values wff polarity)) + ((eq 'not v) + (let ((wff1 (arg1a wff))) + (if strict + (and (atom-p wff1) (values wff1 (opposite-polarity polarity))) + (literal-p wff1 (opposite-polarity polarity))))) + (t + nil)))) + +(defun clause-p (wff &optional no-true-false strict neg) + ;; only atomic formulas, negated atomic formulas, their disjunctions, and (optionally) true and false are strict clauses + ;; nonstrict clauses are implications etc. interpretable as single clauses + (labels + ((clause-p (wff neg) + (case (head-is-logical-symbol wff) + ((nil) + (implies no-true-false (not (or (eq true wff) (eq false wff))))) + (not + (if strict + (atom-p (arg1a wff)) + (clause-p (arg1a wff) (not neg)))) + (and + (and (not strict) + neg + (dolist (arg (argsa wff) t) + (unless (clause-p arg t) + (return nil))))) + (or + (and (not neg) + (if strict + (dolist (arg (argsa wff) t) + (unless (literal-p arg :pos t) + (return nil))) + (dolist (arg (argsa wff) t) + (unless (clause-p arg nil) + (return nil)))))) + (implies + (and (not strict) + (not neg) + (let ((args (argsa wff))) + (and (clause-p (first args) t) + (clause-p (second args) nil))))) + (implied-by + (and (not strict) + (not neg) + (let ((args (argsa wff))) + (and (clause-p (first args) nil) + (clause-p (second args) t)))))))) + (clause-p wff neg))) + +(defun equality-relation-symbol-p (fn) + (eq '= (function-boolean-valued-p fn))) + +(defun equality-p (wff) + (dereference + wff nil + :if-constant nil + :if-variable (not-wff-error wff) + :if-compound-cons (not-wff-error wff) + :if-compound-appl (equality-relation-symbol-p (head wff)))) + +(defun positive-equality-wff-p (wff) + ;; nothing but strictly positive occurrences of equalities + (prog-> + (map-atoms-in-wff wff ->* atom polarity) + (unless (and (eq :pos polarity) (equality-p atom)) + (return-from positive-equality-wff-p nil))) + t) + +(declare-snark-option eliminate-negations nil nil) +(declare-snark-option flatten-connectives t t) ;e.g., replace (and a (and b c)) by (and a b c) +(declare-snark-option ex-join-negation t t) ;e.g., replace (equiv a false) by (not a) + +(defun conjoin* (wffs &optional subst) + (ao-join* wffs subst *and* true)) + +(defun disjoin* (wffs &optional subst) + (ao-join* wffs subst *or* false)) + +(defun conjoin (wff1 wff2 &optional subst) + (cond + ((or (eq wff1 wff2) (eq true wff1) (eq false wff2)) + wff2) + ((or (eq false wff1) (eq true wff2)) + wff1) + (t + (ao-join* (list wff1 wff2) subst *and* true)))) + +(defun disjoin (wff1 wff2 &optional subst) + (cond + ((or (eq wff1 wff2) (eq false wff1) (eq true wff2)) + wff2) + ((or (eq true wff1) (eq false wff2)) + wff1) + (t + (ao-join* (list wff1 wff2) subst *or* false)))) + +(defun ao-join* (wffs subst connective identity) + ;; create conjunction or disjunction of wffs + ;; handle true, false, equal and complementary wffs + (do ((not-identity (if (eq true identity) false true)) + (wffs* nil) wffs*-last + (poswffs* nil) + (negwffs* nil) + wff) + ((null wffs) + (cond + ((null wffs*) + identity) + ((null (rest wffs*)) + (first wffs*)) + ((flatten-connectives?) + (make-compound* connective wffs*)) + (t + (make-compound2 connective wffs*)))) + (setf wff (pop wffs)) + (when subst + (setf wff (instantiate wff subst))) + (cond + ((and (compound-p wff) (eq connective (head wff))) + (setf wffs (if wffs (append (argsa wff) wffs) (argsa wff)))) + (t + (mvlet (((values wff neg) (not-not-eliminate wff))) + (if neg + (cond + ((and poswffs* (hts-member-p neg poswffs*)) + (return not-identity)) + ((hts-adjoin-p neg (or negwffs* (setf negwffs* (make-hash-term-set)))) + (collect wff wffs*))) + (cond + ((eq identity wff) + ) + ((eq not-identity wff) + (return not-identity)) + ((and negwffs* (hts-member-p wff negwffs*)) + (return not-identity)) + ((hts-adjoin-p wff (or poswffs* (setf poswffs* (make-hash-term-set)))) + (collect wff wffs*))))))))) + +(defun not-not-eliminate (wff) + (let ((neg nil) -wff) + (loop + (dereference + wff nil + :if-variable (return-from not-not-eliminate + (if neg (values -wff wff) wff)) + :if-constant (return-from not-not-eliminate + (cond + ((eq true wff) + (if neg false true)) + ((eq false wff) + (if neg true false)) + (t + (if neg (values -wff wff) wff)))) + :if-compound (cond + ((eq *not* (head wff)) + (if neg (setf neg nil) (setf neg t -wff wff)) + (setf wff (arg1a wff))) + (t + (return-from not-not-eliminate + (if neg (values -wff wff) wff)))))))) + +(defun make-equivalence* (wffs &optional subst) + (ex-join* wffs subst *iff* true)) + +(defun make-exclusive-or* (wffs &optional subst) + (ex-join* wffs subst *xor* false)) + +(defun make-equivalence (wff1 wff2 &optional subst) + (cond + ((eq wff1 wff2) + true) + ((eq true wff1) + wff2) + ((eq true wff2) + wff1) + (t + (make-equivalence* (list wff1 wff2) subst)))) + +(defun make-exclusive-or (wff1 wff2 &optional subst) + (cond + ((eq wff1 wff2) + false) + ((eq false wff1) + wff2) + ((eq false wff2) + wff1) + (t + (make-exclusive-or* (list wff1 wff2) subst)))) + +(defun ex-join* (wffs subst connective identity) + ;; create equivalence or exclusive-or of wffs + ;; handle true, false, equal and complementary wffs + (let ((not-identity (if (eq true identity) false true)) + n n1 n2 negate) + (setf n (length (setf wffs (argument-list-a1 connective wffs subst identity)))) + (setf n1 (length (setf wffs (remove not-identity wffs)))) + (setf negate (oddp (- n n1))) + (setf n n1) + (do ((wffs* nil) wff) + ((null wffs) + (cond + ((null wffs*) + (if negate not-identity identity)) + (t + (when negate + (setf wffs* (if (ex-join-negation?) + (cons (negate (first wffs*)) (rest wffs*)) + (cons not-identity wffs*)))) + (cond + ((null (rest wffs*)) + (first wffs*)) + ((flatten-connectives?) + (make-compound* connective (nreverse wffs*))) + (t + (make-compound2 connective (nreverse wffs*))))))) + (setf wff (pop wffs)) + (setf n1 (length (setf wffs (remove wff wffs :test (lambda (x y) (equal-p x y subst)))))) + (setf n2 (length (setf wffs (remove wff wffs :test (lambda (x y) (complement-p x y subst)))))) + (psetq n1 (- n n1) ;count of wff in wffs + n2 (- n1 n2) ;count of ~wff in wffs + n n2) ;length of new value of wffs + (cond + ((evenp n1) + (when (oddp n2) + (push wff wffs*) + (setf negate (not negate)) ;was wrong (setf negate t); fixed 2011-05-13 + )) + ((evenp n2) + (push wff wffs*)) + (t + (setf negate (not negate)) ;was wrong (setf negate t); fixed 2011-05-13 + ))))) + +(defun negate0 (wffs &optional subst) + (declare (ignore subst)) + (cl:assert (eql 1 (length wffs))) + (make-compound* *not* wffs)) + +(defun negate* (wffs &optional subst) + (cl:assert (eql 1 (length wffs))) + (negate (first wffs) subst)) + +(defun make-implication* (wffs &optional subst) + (cl:assert (eql 2 (length wffs))) + (make-implication (first wffs) (second wffs) subst)) + +(defun make-reverse-implication* (wffs &optional subst) + (cl:assert (eql 2 (length wffs))) + (make-reverse-implication (first wffs) (second wffs) subst)) + +(defun make-conditional* (wffs &optional subst) + (cl:assert (eql 3 (length wffs))) + (make-conditional (first wffs) (second wffs) (third wffs) subst)) + +(defun make-conditional-answer* (wffs &optional subst) + (cl:assert (eql 3 (length wffs))) + (make-conditional-answer (first wffs) (second wffs) (third wffs) subst)) + +(defun negate (wff &optional subst) + (dereference + wff subst + :if-constant (cond + ((eq true wff) + false) + ((eq false wff) + true) + ((eliminate-negations?) + (proposition-complementer wff)) + (t + (make-compound *not* wff))) + :if-variable (not-wff-error wff) + :if-compound-cons (not-wff-error wff) + :if-compound-appl (let ((head (heada wff))) + (ecase (function-logical-symbol-p head) + ((nil) ;atomic + (cond + ((eliminate-negations?) + (make-compound* (relation-complementer head) (argsa wff))) + (t + (make-compound *not* wff)))) + (not + (arg1a wff)) + (and + (disjoin* (mapcar (lambda (arg) + (negate arg subst)) + (argsa wff)) + subst)) + (or + (conjoin* (mapcar (lambda (arg) + (negate arg subst)) + (argsa wff)) + subst)) + ((implies implied-by iff xor) + (make-compound *not* wff)) + (if + (let ((args (argsa wff))) + (make-compound head + (first args) + (negate (second args) subst) + (negate (third args) subst)))))))) + +(defun relation-complementer (fn) + ;; if complement has special properties + ;; such as associativity, rewrites, etc., + ;; these must be declared explicitly by the user + (or (function-complement fn) + (setf (function-complement fn) + (declare-relation (complement-name (function-name fn)) (function-arity fn))))) + +(defun proposition-complementer (const) + (or (constant-complement const) + (setf (constant-complement const) + (declare-proposition (complement-name (constant-name const)))))) + +(defun complement-name (nm &optional noninterned) + (let* ((s (symbol-name nm)) + (~s (if (eql #\~ (char s 0)) + (subseq s 1) + (to-string "~" s)))) + (if noninterned + (make-symbol ~s) + (intern ~s (symbol-package nm))))) + +(defun make-implication (wff1 wff2 &optional subst) + (cond + ((eq true wff1) + wff2) + ((eq true wff2) + wff2) + ((eq false wff1) + true) + ((eq false wff2) + (negate wff1 subst)) + ((equal-p wff1 wff2 subst) + true) + ((complement-p wff1 wff2 subst) + wff2) + ((and (compound-p wff2) (eq *implies* (head wff2))) + (let ((args2 (argsa wff2))) + (make-implication (conjoin wff1 (first args2) subst) (second args2) subst))) + ((eliminate-negations?) + (disjoin (negate wff1 subst) wff2 subst)) + (t + (make-compound *implies* wff1 wff2)))) + +(defun make-reverse-implication (wff2 wff1 &optional subst) + (cond + ((eq true wff1) + wff2) + ((eq true wff2) + wff2) + ((eq false wff1) + true) + ((eq false wff2) + (negate wff1 subst)) + ((equal-p wff1 wff2 subst) + true) + ((complement-p wff1 wff2 subst) + wff2) + ((and (compound-p wff2) (eq *implied-by* (head wff2))) + (let ((args2 (argsa wff2))) + (make-reverse-implication (first args2) (conjoin (second args2) wff1 subst) subst))) + ((eliminate-negations?) + (disjoin wff2 (negate wff1 subst) subst)) + (t + (make-compound *implied-by* wff2 wff1)))) + +(defun make-conditional (wff1 wff2 wff3 &optional subst) + (cond + ((eq true wff1) + wff2) + ((eq false wff1) + wff3) + ((negation-p wff1) + (make-conditional (arg1 wff1) wff3 wff2 subst)) + (t +;; (setf wff2 (substitute true wff1 wff2 subst)) +;; (setf wff3 (substitute false wff1 wff3 subst)) + (setf wff2 (prog-> + (map-atoms-in-wff-and-compose-result wff2 ->* atom polarity) + (declare (ignore polarity)) + (if (equal-p wff1 atom subst) true atom))) + (setf wff3 (prog-> + (map-atoms-in-wff-and-compose-result wff3 ->* atom polarity) + (declare (ignore polarity)) + (if (equal-p wff1 atom subst) false atom))) + (cond + ((eq true wff2) + (disjoin wff1 wff3 subst)) + ((eq false wff2) + (conjoin (negate wff1 subst) wff3 subst)) + ((eq true wff3) + (disjoin (negate wff1 subst) wff2 subst)) + ((eq false wff3) + (conjoin wff1 wff2 subst)) + ((equal-p wff2 wff3 subst) + wff2) + ((eliminate-negations?) + (disjoin + (conjoin wff1 wff2 subst) + (conjoin (negate wff1 subst) wff3 subst) + subst)) + (t + (make-compound *if* wff1 wff2 wff3)))))) + +(defun make-conditional-answer (wff1 wff2 wff3 &optional subst) + (cond + ((eq true wff1) + wff2) + ((eq false wff1) + wff3) + ((negation-p wff1) + (make-conditional-answer (arg1 wff1) wff3 wff2 subst)) + ((equal-p wff2 wff3 subst) + wff2) + (t + (make-compound *answer-if* wff1 wff2 wff3)))) + +(defun make-equality0 (term1 term2 &optional (relation *=*)) + (make-compound relation term1 term2)) + +(defun make-equality (term1 term2 &optional subst (relation *=*)) + (cond + ((equal-p term1 term2 subst) + true) + (t + (make-compound relation term1 term2)))) + +(defun complement-p (wff1 wff2 &optional subst) + (let ((appl nil) (neg nil)) + (loop + (dereference + wff1 nil + :if-constant (return) + :if-variable (not-wff-error wff1) + :if-compound-cons (not-wff-error wff1) + :if-compound-appl (if (eq *not* (heada wff1)) + (setf neg (not neg) wff1 (arg1a wff1)) + (return (setf appl t))))) + (loop + (dereference + wff2 nil + :if-constant (return (and neg (eql wff1 wff2))) + :if-variable (not-wff-error wff2) + :if-compound-cons (not-wff-error wff2) + :if-compound-appl (if (eq *not* (heada wff2)) + (setf neg (not neg) wff2 (arg1a wff2)) + (return (and appl neg (equal-p wff1 wff2 subst)))))))) + +(defun equal-or-complement-p (wff1 wff2 &optional subst) + (let ((appl nil) (neg nil)) + (loop + (dereference + wff1 nil + :if-constant (return) + :if-variable (not-wff-error wff1) + :if-compound-cons (not-wff-error wff1) + :if-compound-appl (if (eq *not* (heada wff1)) + (setf neg (not neg) wff1 (arg1a wff1)) + (return (setf appl t))))) + (loop + (dereference + wff2 nil + :if-constant (return (and (eql wff1 wff2) (if neg :complement :equal))) + :if-variable (not-wff-error wff2) + :if-compound-cons (not-wff-error wff2) + :if-compound-appl (if (eq *not* (heada wff2)) + (setf neg (not neg) wff2 (arg1a wff2)) + (return (and appl (equal-p wff1 wff2 subst) (if neg :complement :equal)))))))) + +;;; connectives.lisp EOF diff --git a/snark-20120808r02/src/constants.abcl b/snark-20120808r02/src/constants.abcl new file mode 100644 index 0000000000000000000000000000000000000000..f424e45a52f67263ec787a47cd1f758ffdee8eac GIT binary patch literal 149163 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 i{u0CqnE?F1uOA4Jg_?MHMabW5E. + +(in-package :snark) + +;;; Lisp symbols, strings, numbers, and characters are used directly as SNARK constants +;;; but SNARK needs to associate information with them +;;; it is stored in constant-info structures found in *constant-info-table* hash-array +;;; or *number-info-table* or *string-info-table* in the case of numbers and strings +;;; that only require sort information be stored + +(defstruct constant-info + (hash-code0 (make-atom-hash-code) :read-only t) + (boolean-valued-p0 nil) ;overloaded to be input name of the proposition + (constructor0 nil) + (magic t) ;nil means don't make magic-set goal for this proposition + (allowed-in-answer0 t) + (kbo-weight0 1) + (weight0 1) + (sort0 (top-sort)) + (plist nil)) ;property list for more properties + +(definline constant-number (const) + (funcall *standard-eql-numbering* :lookup const)) + +(defvar *constant-info-table*) + +(defmacro constant-info0 (const) + `(gethash ,const *constant-info-table*)) + +(definline constant-info (const &optional (action 'error)) + (or (constant-info0 const) + (init-constant-info const action))) + +(defun init-constant-info (const action) + (when action + (can-be-constant-name const action)) + (constant-number const) ;initialize it at first occurrence + (let ((info (make-constant-info))) + (setf (constant-info0 const) info))) + +(defmacro define-constant-slot-accessor (name &key read-only) + (let ((constant-slot (intern (to-string :constant- name) :snark)) + (constant-info-slot (intern (to-string :constant-info- name) :snark))) + `(progn + (#-(or allegro lispworks) definline #+(or allegro lispworks) defun ,constant-slot (const) + (,constant-info-slot (constant-info const))) + ,@(unless read-only + (list + `(defun (setf ,constant-slot) (value const) + (setf (,constant-info-slot (constant-info const)) value))))))) + +(define-constant-slot-accessor hash-code0 :read-only t) +(define-constant-slot-accessor boolean-valued-p0) +(define-constant-slot-accessor constructor0) +(define-constant-slot-accessor magic) +(define-constant-slot-accessor allowed-in-answer0) +(define-constant-slot-accessor kbo-weight0) +(define-constant-slot-accessor weight0) +(define-constant-slot-accessor sort0) +(define-constant-slot-accessor plist) + +(define-plist-slot-accessor constant :locked0) +(define-plist-slot-accessor constant :documentation) +(define-plist-slot-accessor constant :author) +(define-plist-slot-accessor constant :source) +(define-plist-slot-accessor constant :complement) ;complement of the symbol P is the symbol ~P +(define-plist-slot-accessor constant :skolem-p) +(define-plist-slot-accessor constant :created-p) +(define-plist-slot-accessor constant :do-not-resolve) + +(defvar *number-info-table*) ;number -> (sort) +(defvar *string-info-table*) ;string -> (sort canonical-string) + +(defstruct (number-info + (:type list) + (:copier nil)) + sort) + +(defstruct (string-info + (:type list) + (:copier nil)) + sort + (canonical nil :read-only t)) + +(defmacro number-info (number) + `(gethash ,number *number-info-table*)) + +(defmacro string-info (string) + `(gethash ,string *string-info-table*)) + +(defun number-canonical (x) + (cl:assert (numberp x)) + (cond + ((floatp x) + (rationalize x)) + ((and (complexp x) (float (realpart x))) + (complex (rationalize (realpart x)) (rationalize (imagpart x)))) + (t + x))) + +(defun declare-number (x) + (setf x (number-canonical x)) + (or (number-info x) + (progn + (constant-number x) ;initialize it at first occurrence + (setf (number-info x) (make-number-info :sort (the-sort (number-sort-name x)))))) + x) + +(defun declare-string (x) + (cl:assert (stringp x)) + ;; canonicalize strings so that (implies (string= str1 str2) (eq (declare-string str1) (declare-string str2))) + (string-info-canonical + (or (string-info x) + (progn + (constant-number x) ;initialize it at first occurrence + (setf (string-info x) (make-string-info :sort (the-sort (declare-string-sort?)) :canonical x)))))) + +(definline builtin-constant-p (x) + (or (numberp x) (stringp x))) + +(definline constant-builtin-p (const) + ;; equivalent to but faster than builtin-constant-p for known constants (can-be-constant-name is true) + (not (symbolp const))) + +(defun constant-hash-code (const) + (if (constant-builtin-p const) (+ 2 (mod (constant-number const) 1022)) (constant-hash-code0 const))) + +(definline constant-boolean-valued-p (const) + (if (constant-builtin-p const) nil (constant-boolean-valued-p0 const))) + +(definline constant-constructor (const) + (if (constant-builtin-p const) t (constant-constructor0 const))) + +(definline constant-allowed-in-answer (const) + (if (constant-builtin-p const) t (constant-allowed-in-answer0 const))) + +(definline constant-kbo-weight (const) + (if (constant-builtin-p const) + (let ((v (kbo-builtin-constant-weight?))) + (if (numberp v) v (funcall v const))) + (constant-kbo-weight0 const))) + +(definline constant-weight (const) + (if (constant-builtin-p const) + (let ((v (builtin-constant-weight?))) + (if (numberp v) v (funcall v const))) + (constant-weight0 const))) + +(defun constant-sort (const) + (cond + ((numberp const) + (number-info-sort (number-info const))) + ((stringp const) + (string-info-sort (string-info const))) + (t + (constant-sort0 const)))) + +(defun (setf constant-sort) (value const) + (cond + ((numberp const) + (setf (number-info-sort (number-info const)) value)) + ((stringp const) + (setf (string-info-sort (string-info const)) value)) + (t + (setf (constant-sort0 const) value)))) + +(definline constant-locked (const) + (if (constant-builtin-p const) t (constant-locked0 const))) + +(definline constant-name (const) + (or (constant-boolean-valued-p const) const)) + +(defun constant-name-lessp (x y) + (cond + ((complexp x) + (if (complexp y) (or (< (realpart x) (realpart y)) (and (= (realpart x) (realpart y)) (< (imagpart x) (imagpart y)))) t)) + ((complexp y) + nil) + ((realp x) + (if (realp y) (< x y) t)) + ((realp y) + nil) + ((stringp x) + (if (stringp y) (string< x y) t)) + ((stringp y) + nil) + (t + (string< x y)))) + +(defun initialize-constants () + (setf *constant-info-table* (make-hash-table)) + (setf *number-info-table* (make-hash-table)) + (setf *string-info-table* (make-hash-table :test #'equal)) + nil) + +(defmacro set-slot-if-supplied (type slot) + (let ((slot-supplied (intern (to-string slot :-supplied) :snark)) + (type-slot (intern (to-string type "-" slot) :snark))) + `(when ,slot-supplied + (setf (,type-slot symbol) ,slot)))) + +(defun declare-constant-symbol0 (symbol + &key + alias + ((:sort sort0) nil) + ((:locked locked0) nil) + (documentation nil documentation-supplied) + (author nil author-supplied) + (source nil source-supplied) + (complement nil complement-supplied) + (magic t magic-supplied) + (skolem-p nil skolem-p-supplied) + (created-p nil created-p-supplied) + ((:constructor constructor0) nil constructor0-supplied) + ((:allowed-in-answer allowed-in-answer0) nil allowed-in-answer0-supplied) + ((:kbo-weight kbo-weight0) nil kbo-weight0-supplied) + ((:weight weight0) nil weight0-supplied) + (do-not-resolve nil do-not-resolve-supplied) + ) + ;; doesn't do anything if no keywords are supplied + (when constructor0-supplied + (cl:assert (implies (constant-builtin-p symbol) constructor0) () "Builtin constant ~S cannot be a nonconstructor." symbol)) + (when alias + (create-aliases-for-symbol symbol alias)) + (when sort0 + (declare-constant-sort symbol sort0)) + (when locked0 + (setf (constant-locked0 symbol) locked0)) ;stays locked + (set-slot-if-supplied constant documentation) + (set-slot-if-supplied constant author) + (set-slot-if-supplied constant source) + (set-slot-if-supplied constant complement) + (set-slot-if-supplied constant magic) + (set-slot-if-supplied constant skolem-p) + (set-slot-if-supplied constant created-p) + (set-slot-if-supplied constant constructor0) + (set-slot-if-supplied constant allowed-in-answer0) + (set-slot-if-supplied constant kbo-weight0) + (set-slot-if-supplied constant weight0) + (set-slot-if-supplied constant do-not-resolve) + symbol) + +(defun changeable-keys-and-values0 (keys-and-values changeable) + (let ((keys-and-values1 nil) keys-and-values1-last + (keys-and-values2 nil) keys-and-values2-last) + (loop + (cond + ((endp keys-and-values) + (return (values keys-and-values1 keys-and-values2))) + ((member (first keys-and-values) changeable) + (collect (pop keys-and-values) keys-and-values1) + (collect (pop keys-and-values) keys-and-values1)) + (t + (collect (pop keys-and-values) keys-and-values2) + (collect (pop keys-and-values) keys-and-values2)))))) + +(defun changeable-keys-and-values (symbol keys-and-values changeable) + (let (keys-and-values2) + (setf (values keys-and-values keys-and-values2) (changeable-keys-and-values0 keys-and-values changeable)) + (when keys-and-values2 + (warn "Ignoring declaration of locked symbol ~S with arguments~{ ~S~}." symbol keys-and-values2)) + keys-and-values)) + +(defun declare-constant-symbol1 (symbol keys-and-values) + (cond + ((null keys-and-values) + symbol) + (t + (apply 'declare-constant-symbol0 + symbol + (cond + ((and (constant-locked symbol) (eq none (getf keys-and-values :locked none))) + (changeable-keys-and-values + symbol + keys-and-values + (if (constant-builtin-p symbol) '(:alias :sort) (changeable-properties-of-locked-constant?)))) + (t + keys-and-values)))))) + +(defun declare-constant (name &rest keys-and-values) + (declare (dynamic-extent keys-and-values)) + (declare-constant-symbol1 (input-constant-symbol name) keys-and-values)) + +(defun declare-proposition (name &rest keys-and-values) + (declare (dynamic-extent keys-and-values)) + (declare-constant-symbol1 (input-proposition-symbol name) keys-and-values)) + +;;; constants.lisp EOF diff --git a/snark-20120808r02/src/constraints.abcl b/snark-20120808r02/src/constraints.abcl new file mode 100644 index 0000000000000000000000000000000000000000..13c50146d898ef20416b2c100a95f235bd7a8940 GIT binary patch literal 68522 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�l%jzMwN&sCd2Bm=U|*YP|?h8i9v}( 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 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/constraints.lisp b/snark-20120808r02/src/constraints.lisp new file mode 100644 index 0000000..aaedf83 --- /dev/null +++ b/snark-20120808r02/src/constraints.lisp @@ -0,0 +1,335 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: constraints.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2010. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +(declaim (special *processing-row*)) + +(defgeneric checkpoint-theory (theory) + ;; create checkpoint + (:method (theory) + (error "No checkpoint method for theory ~S." theory))) + +(defgeneric uncheckpoint-theory (theory) + ;; eliminate checkpoint, keeping changes since then + (:method (theory) + (error "No uncheckpoint method for theory ~S." theory))) + +(defgeneric restore-theory (theory) + ;; undo changes since checkpoint, keeping checkpoint + (:method (theory) + (error "No restore method for theory ~S." theory))) + +(defgeneric theory-closure (theory) + ;; returns non-NIL value if theory is inconsistent + (:method (theory) + (error "No closure method for theory ~S." theory))) + +(defgeneric theory-assert (atom theory) + (:method (atom theory) + (declare (ignorable atom)) + (error "No assert method for theory ~S." theory))) + +(defgeneric theory-deny (atom theory) + (:method (atom theory) + (declare (ignorable atom)) + (error "No deny method for theory ~S." theory))) + +(defgeneric theory-simplify (wff theory) + ;; wff is disjunction of literals + (:method (wff theory) + (let ((row *processing-row*)) + (cond + ((or (eq true wff) (eq false wff)) + wff) + ((and row + (eq false (row-wff row)) + (not (row-nonassertion-p row)) + (eq theory (row-unit-constraint row)) + (ground-p wff)) + (mvlet (((values atom polarity) (literal-p wff))) + (if (eq :pos polarity) + (theory-assert2 atom theory) + (theory-deny2 atom theory))) + false) + (t + (checkpoint-theory theory) + (let ((wff* (prog-> + (map-atoms-in-wff-and-compose-result wff ->* atom polarity) + (cond + ((if (eq :pos polarity) + (theory-falsep atom theory) + (theory-truep atom theory)) +;; (when row +;; (pushnew theory (row-rewrites-used row))) + (if (eq :pos polarity) false true)) + ((progn + (if (eq :pos polarity) + (theory-deny atom theory) + (theory-assert atom theory)) + (theory-closure theory)) + (restore-theory theory) + (uncheckpoint-theory theory) + (return-from theory-simplify false)) + (t + atom))))) + (restore-theory theory) + (uncheckpoint-theory theory) + wff*))))) + (:method (wff (theory (eql 'assumption))) + (let ((row-wff (row-wff *processing-row*))) + (cond + ((and (clause-p row-wff) (clause-p wff nil nil t)) + (prog-> + (map-atoms-in-wff-and-compose-result wff ->* atom polarity) + (or (prog-> + (map-atoms-in-wff row-wff ->* atom2 polarity2) + (when (and (eq polarity polarity2) (equal-p atom atom2)) + (return-from prog-> (if (eq :pos polarity) true false)))) + atom))) + (t + wff))))) + +(defgeneric theory-rewrite (wff theory) + (:method (wff theory) + (declare (ignorable theory)) + (rewriter wff nil)) + (:method (wff (theory (eql 'assumption))) + wff)) + +(defun theory-assert2 (atom theory) + (checkpoint-theory theory) + (theory-assert atom theory) + (when (theory-closure theory) ;inconsistent? + (cerror "Continue without asserting it." + "Asserting ~A leads to a contradiction." + atom) + (restore-theory theory)) + (uncheckpoint-theory theory)) + +(defun theory-deny2 (atom theory) + (checkpoint-theory theory) + (theory-deny atom theory) + (when (theory-closure theory) ;inconsistent? + (cerror "Continue without denying it." + "Denying ~A leads to a contradiction." + atom) + (restore-theory theory)) + (uncheckpoint-theory theory)) + +(defun theory-truep (atom theory) + (let (inconsistent) + (checkpoint-theory theory) + (theory-deny atom theory) + (setf inconsistent (theory-closure theory)) + (restore-theory theory) + (uncheckpoint-theory theory) + inconsistent)) + +(defun theory-falsep (atom theory) + (let (inconsistent) + (checkpoint-theory theory) + (theory-assert atom theory) + (setf inconsistent (theory-closure theory)) + (restore-theory theory) + (uncheckpoint-theory theory) + inconsistent)) + +(defun simplify-constraint-alist (alist) + (and alist + (let* ((x (first alist)) + (x* (lcons (car x) (theory-simplify (cdr x) (car x)) x))) + (cond + ((eq false (cdr x*)) + (simplify-constraint-alist (rest alist))) + (t + (lcons x* (simplify-constraint-alist (rest alist)) alist)))))) + +(defun rewrite-constraint-alist (alist) + (and alist + (let* ((x (first alist)) + (x* (lcons (car x) (theory-rewrite (cdr x) (car x)) x))) + (cond + ((eq false (cdr x*)) + (rewrite-constraint-alist (rest alist))) + (t + (lcons x* (rewrite-constraint-alist (rest alist)) alist)))))) + +(defun assumptive-constraint-theory-p (theory) + ;; assumptive constraint theories can simply be assumed + ;; they don't require row coverage + (eq 'assumption theory)) + +(defun row-constrained-p (row) + (dolist (x (row-constraints row) nil) + (unless (eq false (cdr x)) + (return t)))) + +(defun row-constrained-p2 (row) + (dolist (x (row-constraints row) nil) + (unless (or (eq false (cdr x)) + (assumptive-constraint-theory-p (car x))) + (return t)))) + +(defun row-unit-constraint (row) + (let ((v nil)) + (dolist (x (row-constraints row)) + (cond + ((eq false (cdr x)) + ) + (v + (setf v nil) + (return)) + ((assumptive-constraint-theory-p (car x)) + (return)) + (t + (setf v x)))) + (when v + (mvlet* (((list* theory wff) v) + ((values atom polarity) (literal-p wff))) + (when atom + (values theory atom polarity)))))) + +(defun row-constraint-coverage (rows) + ;; returns t if row-constraint coverage is complete + ;; by doing matings search over constraint wffs + ;; but with NO INSTANTIATION + ;; cf. Bjorner, Stickel, Uribe CADE-14 paper + (let ((theories nil) (new-rows nil) new-rows-last) + (dolist (row rows) + (dolist (x (row-constraints row)) + (mvlet (((list* theory wff) x)) + (cl:assert (neq false wff)) + (unless (or (eq true wff) + (member theory theories) + (assumptive-constraint-theory-p theory) + (theory-closure theory)) + (checkpoint-theory theory) + (push theory theories))))) + (dolist (row rows) + (mvlet (((values theory atom polarity) (row-unit-constraint row))) + (cond + ((and theory (member theory theories)) + (if (eq :pos polarity) + (theory-assert atom theory) + (theory-deny atom theory))) + (t + (collect row new-rows))))) + (prog1 + (dolist (theory theories t) + (unless (theory-closure theory) + (return (row-constraint-coverage* new-rows theories)))) + (dolist (theory theories) + (restore-theory theory) + (uncheckpoint-theory theory))))) + +(defun row-constraint-coverage* (rows theories) + (and rows + (dolist (x (row-constraints (first rows)) t) ;return t if all paths closed + (mvlet (((list* theory wff) x)) ;constraint wff is conjunction of literals + (unless (or (eq true wff) + (not (member theory theories)) + (theory-closure theory)) + (prog-> + (map-atoms-in-wff wff ->* atom polarity) + (cond + ((prog2 + (checkpoint-theory theory) + (progn + (if (eq :pos polarity) ;trial value + (theory-assert atom theory) + (theory-deny atom theory)) + (or (theory-closure theory) ;inconsistent now? + (row-constraint-coverage* (rest rows) theories))) ;all paths closed? + (restore-theory theory) + (uncheckpoint-theory theory)) + #+ignore + (if (eq :pos polarity) ;assert negation and continue + (theory-deny atom theory) + (theory-assert atom theory))) + (t + (return-from row-constraint-coverage* nil))))))))) ;return nil if unclosed path + +(defmethod checkpoint-theory ((theory (eql 'equality))) + nil) + +(defmethod uncheckpoint-theory ((theory (eql 'equality))) + nil) + +(defmethod restore-theory ((theory (eql 'equality))) + nil) + +(defmethod theory-closure ((theory (eql 'equality))) + nil) + +(defmethod theory-assert (atom (theory (eql 'equality))) + (declare (ignorable atom)) + nil) + +(defmethod theory-deny (atom (theory (eql 'equality))) + (declare (ignorable atom)) + nil) + +(defmethod theory-simplify (wff (theory (eql 'equality))) + wff) + +(defmethod checkpoint-theory ((theory (eql 'test))) + nil) + +(defmethod uncheckpoint-theory ((theory (eql 'test))) + nil) + +(defmethod restore-theory ((theory (eql 'test))) + nil) + +(defmethod theory-closure ((theory (eql 'test))) + nil) + +(defmethod theory-assert (atom (theory (eql 'test))) + (declare (ignorable atom)) + nil) + +(defmethod theory-deny (atom (theory (eql 'test))) + (declare (ignorable atom)) + nil) + +(defmethod theory-simplify (wff (theory (eql 'test))) + wff) + +(defun assumption-test1 () + ;; answer 1 with assumption (b 1) + ;; answer 2 with assumption (a 2) + ;; answer ?x with assumption (and (a ?x) (b ?x)) + (initialize) + (use-resolution) + (use-subsumption-by-false) + (assert '(a 1)) + (assert '(b 2)) + (assert '(a ?x) :constraints '((assumption (a ?x)))) + (assert '(b ?x) :constraints '((assumption (b ?x)))) + (prove '(and (a ?x) (b ?x)) :answer '(values ?x))) + +(defun assumption-test2 () + (initialize) + (use-resolution) + (assert '(implies (bird ?x) (flies ?x)) :constraints '((assumption (normal-wrt-flies ?x)))) + (assert '(bird tweety)) + (prove '(flies tweety))) + +;;; constraints.lisp EOF diff --git a/snark-20120808r02/src/counters.abcl b/snark-20120808r02/src/counters.abcl new file mode 100644 index 0000000000000000000000000000000000000000..359662a89b924bcc1ec7f3bd1672a79443510754 GIT binary patch literal 28012 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 L{^eo%>)ZbWf@iyq literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/counters.lisp b/snark-20120808r02/src/counters.lisp new file mode 100644 index 0000000..85dad20 --- /dev/null +++ b/snark-20120808r02/src/counters.lisp @@ -0,0 +1,90 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-lisp -*- +;;; File: counters.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2010. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-lisp) + +(defstruct (counter + (:constructor make-counter (&optional (increments 0))) + (:copier nil)) + (increments 0 :type integer) + (decrements 0 :type integer) + (previous-peak-value 0 :type integer)) + +(defun increment-counter (counter &optional (n 1)) + (declare (type integer n)) +;;(cl:assert (<= 0 n)) + (incf (counter-increments counter) n) + nil) + +(defun decrement-counter (counter &optional (n 1)) + (declare (type integer n)) +;;(cl:assert (<= 0 n)) + (let* ((d (counter-decrements counter)) + (v (- (counter-increments counter) d))) + (when (> v (counter-previous-peak-value counter)) + (setf (counter-previous-peak-value counter) v)) + (setf (counter-decrements counter) (+ d n)) + nil)) + +(defun counter-value (counter) + (- (counter-increments counter) (counter-decrements counter))) + +(defun counter-values (counter) + ;; returns 4 values: current value, peak value, #increments, #decrements + (let* ((i (counter-increments counter)) + (d (counter-decrements counter)) + (v (- i d))) + (values v (max v (counter-previous-peak-value counter)) i d))) + +(definline show-count-p (n) + (dolist (v '(1000000 100000 10000 1000 100 10) t) + (when (>= n v) + (return (eql 0 (rem n v)))))) + +(defun show-count (n) + (princ #\Space) + (let (q r) + (cond + ((eql 0 n) + (princ 0)) + ((progn (setf (values q r) (truncate n 1000000)) (eql 0 r)) + (princ q) (princ #\M)) + ((progn (setf (values q r) (truncate n 1000)) (eql 0 r)) + (princ q) (princ #\K)) + (t + (princ n)))) + (princ #\Space) + (force-output) + n) + +(defun show-count0 (n) + (if (and (neql 0 n) (show-count-p n)) n (show-count n))) + +(defun show-count1 (n) + (if (show-count-p n) (show-count n) n)) + +(defmacro princf (place &optional (delta 1)) + ;; increment counter and maybe print it + ;; if delta is 0, print the counter unless the previous increment did + (cl:assert (member delta '(0 1))) + (if (eql 0 delta) + `(show-count0 ,place) + `(show-count1 (incf ,place)))) + +;;; counters.lisp EOF diff --git a/snark-20120808r02/src/date-reasoning2.abcl b/snark-20120808r02/src/date-reasoning2.abcl new file mode 100644 index 0000000000000000000000000000000000000000..ca06e4cc32708f8ce9f2f931d11678646bc4f507 GIT binary patch literal 30816 zcmb5VV|Qik8vR)nW5=#kl8SA+V%z49?WBULV8^J~wr%gAV%xUuuIKsp=e>%vl%=8WQ!K zQ@>+^F5a-rT~b3>@wEgnPj8L$tb6}xXh{y1A*)fytysXs-d;S=fh=Tg`WI=@+$NmY z-Q5i=e4(a^H|Y$AQt{LzmwSu%muV9?aUZl$C&z zV%sIK2pY3fHuap+%a7J-q$0$=Ve2|y-y0!XI_-?XiPl=Dzt(!-=+JVxDc2O(tt&qq zPi)eO3%fY-etPj7CK>ZXmn%rMDp9Yr0{-^&%KFVG6TY`?=2(&O*883&ZBoX+B;W|i zv8@D4V+0v3=TQ;?(4**^`DDRxb5h6FHMYM|%f?8XDK)ylURXjk@$T*5jb6JIsOMmT zkR^t(+a%%b-A{5Dp*bpr%jLVe)ST8A^)PVe#I(LMh2?Azz2SWgMU*GYMc{~u>c|2R zr=ki8p(C3YW_+}Q9^$$RuF>t`jI=C9u&`iEZ#<;jaLf_YsUG{nl9ldUJFSK<^xIH} zf=zyh^*m`AedG6!m=;r8L!XpX2=R&Pt$O~w!}C^H#>*WU z+!|`#ZC{v)tGMKVO>j5S*)gC)P~V)#%`EMU+r4^+*S>07fiF%WL}AXudy!x;=YmRh zk@8N1nA(tDWFT=S3S<1i?%pUQvNTcJB;ZJ~g$Z+*$QEbWF)FwbwL%9wm$nD9v@8QD zP{O8r0LEsmv>x2$UDaD68&P`ySvTxxwx}_5GY&pWz`1|eyJp5)P}aD1eCs(SC}-|a z2YcW6CAJQ&`cPO{DFH*_p_{OCiMq15AoWdqH!=xPs9IwCr{Ur}$_Y$AU#(Z_69i+d za}8^lerNG|I47#TwUyp0=vJf{*RL^W7)&oSyYK@JLuKsz;YfcJYnqr2nGgMnu^GqX zHgiFspDV9)it}O6B$*J!UaEa0aQ)OaA@wWntsf?KUiE zEpJPaEgA44ay3=$N0)gU4KwE;4PmmF9tIt^gMN&6k6CW>z3$q}On#yK`#2Q?RPODi zAuE^zOm~!s$Bd!mE@g3Kzw@Uoc(~=sVcIa|vZ@{C*!hpblezWK|qvz~tmbVT9+IXG(WWXk%i5%PgDc zGV17Q^72u$%1xdJFHPEL0voUjESky+kubJO3e;=R8@3?#nV)Vj?#cJQ9lQ6c4i=J@ zQ}{}VOL%BvvBo4q-@FiRR?ot=R=WnEC3BLr zwNnpEeblp99~g|=czqmoGGdOX4kA{}YsA;6#n5vjZ(GZNF@1cJ=btsh=uu>0*vf7b zpvsG`A~H5Cjrjah@i_nx`CHRi*>zd1*GK~>Ie=E_6mP^!sW$i&BEwI&!&M|OTy39G zTUu1igoi?Ca(O7@)vBA@`F_HXw(HlfTNhY1V2!yY9>_G1jd`bRC8U6_Z6{p^uw{^F zNhwLepMrAlc)|!-OcRuPTVyX0r&wJIYYieuMB539R6!}vfQMJ8P=rMpmUJwYrts;c zNkcEx)vt<(OXnP$R0fYQn+(w%@FyEx79yI}`zW25#5Hr=|l+uJWPQ?vg?LBm4ql;L3rwDM=dQec*b* zRP_ND{lug$R;K|HCFQHIf^d&oP67SO1omY9AWW|$*^Q>o*FZp23@Tp0h_X=;4<+OTJN(0`mP*lF(j4f zgd6A9g6kYRS*&4oZ6emwq>Ou?J@<<;!WC>iuQ8W{&uwtjZn3Fnqud^9?FQH$N}Jrj z!XYN$M&U;hW&<u4uI9tj0Egw>P(3Z~|<8#46k1ues2W>Ce5Gnzlm^?l|h9Ut&*sIn5fb(um zRNS*?iZy-)Id$0I5Hq1RCNUl-$VI>9TfWS&wQy^0J9U23(7su%r<|w3tJ51LCFZk8 zHM%}+&m3{Jb984GvlA4eS&RC^?$ zdvrY7)7~QRo0xq4ap9lk)lV;3uyBz_%Cnn64Slv52DT^DU*@sw!h2iQfhS(<;prb! z@RvGX99+NdCU1CqdAvXVr5|>Qt3?~sr%y`=|114i{-Ixkx{f`D1m-)1W9_}!FEVI! zXZD!JmPImVR3}BJ*H5ZyK31NkP*JJbx$4Iz zPtdguL~1h5V-vWpw8G7eD$&1%(25#Zrwi` z!(i4RkzrhRbZtD%R3qzApxCh&vkHwYwS`C<3ZW$6Y{rw+ zp1^o~X81i-sCe}jvjGSX@`#c)!cc~SezXk-Q>ZnA$OD*nGs;tCWzL$q`2Ov#PeeebvUdMxkY(d?|WbrIfvP5$n z=hlWahXBy^kmbDc9tuu>_Dgz`s7X~=`T}iw+Q$Gov!e7^$v8YqfCX(-pI2zJ;Ux-lD742uyj_azSh@$)MP}o17L=KA+xjPTXBpJ{CU~ z%<#fk{dC}B_sAk!uDJ4CWij_K<1|rQxxQL3V(D*uc`b^Bx!E|v1+Fg&4{2PCGkMSI zJ6sYHSi05GD!}F|Z*p(!NVZC)MkSQI9R!BuyBHl;d8$7v<0DAs9`IP zs&p!Ibg<={H0xV6dM27hYH})^bZub^-WR9jfxb8wjz;T68l^UgY#qv>$=t0jr7uO> zc;kIJgccwT2S`p}*lVJPVu^RhjCRk{`42N`Ev3{k%~S$@z1{vYtDI65`Ct3QK4BBy zWP=AT3dWuy(Hh}+YqDi2{^Rz_C016?SA0Y^yXIfCeS#mH7+jQic#l3Ph`gR!V&+Dy zC2l>7x(;t$ctx`u2AGSoTwiyLSEY4{wm5JF3a323+;pkvDQ^)Y(;1b5Ok_M7KyjIu z=-adIG^Xjt`iBA!sNphyV#*Tuk{(r2@HCp4#XwhZdqH;2&~xOve%~yP)@*GOekL)n zG3`7B>7VAzOITcWHW1uacJ*A~1#5zv9}&$DEW@y5~l>Iuk1p^r%l_seDJ{TO95XBn>`;n zZSGb(M>?;XruH}LcsY7?Bs}2h;6<4=cb@y+l#z-O9S1&B5Ns;pAC^J-^lf2vueoL? zMMM~EuN({AV{}?nZz`lg`z_KrWr$G-6Pfpzr0vCSXn+&cHlvX*dGQyOVBJuI>3(va zd~bm;fd_n&9xuY{B_NWKaVHJ}sX*c$=4b)29F z@`kfn$l#KX6Z|Img1LG_f{8gRsba0p@Zu4fj0YhD~Nl;WP;E z%NOQfDgXwlQI=7zAsyW71cHWT3fiJ85O5CwE|`kCN;bXRMC|VmT5z+EIrIo=Pk-TK(27!QX4pXhBT-63>{re!S_dQRnRwuNZ<@YK zvS=7oEeZnWAL)6;>wHHydB8`i%3q<1D}{v%8qrR|gNes&aL*+n!sAVOh4pi_B{cLRlxkPkwuDAB zl%BjzwJz3jhiRV&<<i#hk7l;B~&a=eeTyWod_m0}fb~X|l%SFJ!jO3aKdT_F|Jq;HZ`eSBX4O zajJnoF7Zr$eb{#zh&Tu~`M>;Z)on0IEnRP{0)X!}|I9SPW%!0LR?GlFDs6>IYC0A9 zT16DuTob=AJ_#xkd~w(R=^vJLty9qR6=17;yigh$kTYHoq1}ZNJ;TBvFv~uy5HBu4 zo@F*DGF`os=fGE(6Eo+ccFaaws-;YW1hJD88KtGh$!6_1ZnZfj1leVI)JxXFD&iN$ zm)uyIEB=GeN}uz2PeInwO}BO^7<>wtUzM~Lf{KFWw* z`$Yc_Npx2AJi2 z@;K%%6G1*uyKo18TzQ@Nqjc9pPe|gXy}8iOwoBhmcR)y9v89i{ky0J2DL5}*ydSwc zhsEv{Ne>;VNBc2!7YP)a!I>Vt82dZ$0;iFb?Y|j}Z}p;JxN1G`e>^s|N(uzfZW3z$ zfH|pe*bkmx*I4-Rm>=FtxLX1D0*_Q%!%ycV+Fu=N1Sf(@jeW%LeI+93IOe;@W|`O7h44jeOGIViG7>pbP8YwU?P@)IqjNp2iQ9Zv0Q@| zXmn@uYG=8^_bpMGx|!%oU>4@my}qe$gu9N%AnYmhJ2TUSTk&hNxkyz|zQ3c7^JZfU zQenx-KYr^z>;J|FFd;6&1lz3|<4(0`u2iL8m;Rn(?-w`Ibd~J>J&tZ5x+wq|YKo8LEj@3IEPoq1dAQ{FiItY|=zl)Z?G zltOzug<*P6+yo&O2dD8BC4iNmTz)$f79-g>`BdBcvk*vWgK%D6xM5%-CmyoEnlK5TEv#(4nJw z{tB6we7E6z;%2ePIH|YCL!(W?0vRSPPV83iJUUd~QWx$a;%(C=(xY~>a}YD{tb*^5i?GRI zQQD-AN6SK=i&0BxPyt1*K{cV4ozaO3KCjGec)m&oILL zubOB7NAq)PD|R#AQTbQ6*4fzOov52}h6}zcQ$hjgV-kg_p&?pSr2|z_OVdr&B4V4l zLZPyHVK3KVsKrz-k-I)+^;N}%z0t3RPRe22LhgzDlAMKretfI}}@7ni^!9O(7d(04dtl#0&!u{?N-%9}Z^fpALKq z;4_&Y9iRgT{NdPbWjZpJ7rUTY41P1Z-TVa3M&Yqm=R)Q|Q$j`-0&?x+{8rOrr_Ft( zuQdWS{eJPy`q&FB{9ricjGJ5A-LqheK>KQjyT+0CRRR~YF0*JYz-jjE5P44DuOs zlvsTkXUys6qs^Bw_etF2Ob%C~@u^5XmqSg9Zu&|e)!fSs)~@M@GZx$vm+yk|VEOHI zr|tGlLEM81?Tj6CcCRKfj|^r4adcLIvtKgn#7g%c z9&9bIdjs$(Yg9wOdrt3AHfMUJoI)>BnN3y&PQT({-r)%IL3uGp&eja6q1Vu_HG{;oktZ*@O zzt6p$Arn!YcY}~Y#cA1I=WaINw;Wm0Yz%D+El>l7)4>x`qr+TI8HgfqPy31=qv#zz7ELwLxnE*Y zvrni6%0JCCOE67b=l|pL`5$AU*QXF-|2<4t;r~}-ar|SfF?DMdd?2Q;zS9z!9CdyJ zFo(WA7bezrxn36#f`oc1ZAVUxYu!(-H8W`%kOtL*IPX=})qUmsH;1C(^78CRyh-^w z@U`K?XV}5XyAF`mnLCd!-3T1;9q?bgzaJ=ceQFM@!h0UE68Kg^&fP>NW0kF0Tn<$j zwkIu@@DdkGldxM_?qmoklI6>D*)lXTv;<`qhe}v=)T=T?wHO7g!P9cVym$yvt5V{Q zd!cw38?GZ!>N3=C!3B^rh~s&Uy|M#B3xM1@1!_^bdOCZ!BJMYRTrMnJ=tK3%A;Hvi z7;9Wn81f#M0B}WsV#BA&Ub-(*8Pl=H#$1-$1dN#6F4m!nEnW_(TkTpTd(+Z6R0sFy zJR_HB4~0wD3NhUG7p-q#;|2~q_G9N9oP**LlB<$F7tv-koC8wl5(ibu@S2bq*^sMx z$O)E3<*Uopa>xnhue4Nwl4uF}@g1alKu|SjD_w>3uiX4y$dXcR#cLA$oJga}@S8nLJbu1`ZU*JcW2rqu7_VwUg`8%4sv^BHppn>F*a^5LYotQ9|>8*uJ>%+Es=61Jar zc_RBM=Dg`%@tgO0<=UlGMM<~vV?qNDph^dIBE59oOooaj5{<5?PaKm2f%IEV56NFU zwg+qjhJ;0=Zr7RP#du!xb)&YdXl*KRG!*BDYjV}9)R=q_$`~TDb0?;X%EAdN3dMAQ zT&Wc$rRA!TJ%bM8E10cY!jlWtm2+qO#!h1N=6llQ<@@j{roP7n5Ze5=-^&ix9zPMa zhJ+#+_wq6+kVTq@-)Z2UsB#x&u~y{PlLVW6Y?rE*55=n(SW9MYvr;DPIP=`*LW@N$ zNXyiwCMJf}Hr|Y|v(rvs)(cYBLrPnGRm7>+Jj{3TI>MR^WvG}qtdy}9)|lDe&4KUk8Ha6 zda*d5_~*!6a64QAcj!`nXPDPlEc$Mp)4`7971hmO>=SP%H~>1+I=S#6?VR!Q9%Sj( zRnp$Q@};oPSHr=Dx_t+3kdz_lV(_a>X2 z3<6d6%ku}GE`#YgdGy8X6AiKzhY!Youqg1{$T|CWAlmvrU(GrH!D4~xnmmRQ>N^a= zN+L;PZU~%zZvFR?pVy3vIb@LqwidR=?H2M)l&+3#GV)ELS=|d)l*T(jD4Qa9=54r) zbZ0?rL!;bvH!nVMZ%-#LD4#|aDP;)?k)47|9!G3i<9VpbSg(wqxv&(>!%O0nS$1I2 zU=WsehY$sy;Y}J#$pcGAti%u!m?8(XNWjA2Pey&!UrWmC6L6k&l;Q$S*_>&{#d6IMfjpiCZ8v0lWYO&WBXd7Dy{9*i11K>~x@-$rVZcIX$O7n~NX^NEHqvG`*VlmWt zZzpSVd4qAr)q)+zDtLsG&o;db7bXBI>Nms1_)(4w?1AtBydWS~+gVN9!NnD~I>Hu= zctFS|g;8x;9f(=DiviP!V);j<<0||%2L+sfo~jyLT&7VN)08LHH8*G}`eQn4d|X(-Fd4eu}QltbH6PP!oyI9&%T<=V{m2`+#ny zl)ur0BLRsCXA@_{GNsj`^~RdZp@QxTm8YHB?^}&8S{%lK<;_!NqZ(}L#_?`0H%=zr zux<$l%NOh#RRehW*Pd-!y|*WsDt5-S-2{${k^|MIjapTbYM5AYKj5)X3#a#fZ|RHc zW$yTS>N`0TkIsrcDhRiKA0^9rM(h5PSqsdtH#rP=0f?EAbYlA(Fg=vme$&4Yl#lx= zS`NPX-Px!?Hrsn=-@MlXN(qaUSvbJm#7VZ_8oKI*J~z`^UAd-b@Ey>7g>ck}ep!X| z=^uwC^s~YFG2m3Kw+lIMwlbpOU-n7`Ab|7}~z^{+ft)|6+yW4^X@R=mDjh)`VXKL{+4t18sN4X)F8*~5ATwbX$ zWda$MDf4+yllC&5d&#ZcFSjf0G!`|99*8o={bm|vqWGHiLw<<)?3uT12rsPUy2i)q zgnq^HIPn6$sO9P+N}aIV%Ew}1bshu(@AQ>41kG=Fl~D~jvSo6Q9gh>upaZuy%Wv5v*fU?yi^ZJ;Bl`7qwI$oX;J4HvsoWnrDFIe3VRf~g;snNtprH2~js zQJ`vCm$y>Hc|-#d-3-t4U0#`a(UBpT(n&ql9%n=N5@ZV2bj>VgS$!v zZ4=ToNP$S+Q@zdn?@7&*dBo5(}Q&o1Exx zAgtYb7@w+D^Vxp{*fv8Suz2;eORW9egvdS^ENk)X@> zpTXb%N>K7ICI2@Ga{nJf>bUIr^FB(v^kAo9K*+Ss&rYzcNAo+YP1xpuf0I9Pdkxfd`;@q4{H zvHyg92?-7|Wx*XObe{6&YmSpj+

f!=j^@x$*}LY%-YUKJl`M7x8~@T74Y3fw@PQ)6bbQG7C&4rGgHbj+6dJN>l5Eu30EZSrRMpmxa4-vku4D>9EU zIU838Is@{s#*CX!1v?mt7(5&aaqx7pDy*oJw_xp=Bk(F7xzf{DpTVWAd7W!MiJ`%u)*WH|7;+I?5`XmvS&#@f|^|qCvLjat%^u5T@ktJ{$ zGPzLelJUVvPe;T7fQkKco)2jwfrZw)*UEVCOo~bQ+rG5yTN*W+P}Z!aA_SJ<-B-Sl^)THb$olR1!Z?q;8J&BmJ-1FaTWW;BBBp=}iEkYz} zMVH;aEAwq`s-!ymWs6RV7cg|PX_RXfAh>;8z`7%he>)2HDwv_D2#q&7PLa=()hJ6i zaoMJ4<5d?^z`Zvc&OFU#UAp1Gp(y$5G3&vj;}U}F@fH3DTfN29YM>DjoDL=jsg3Yr zaW#G~13d3aQywlj$pZ#dW${2NZupT|>N|G_u}(T#7Tz0vTkRVtcL!M$UE;X4rasd< za;L~8EcK>(N_3x1kW=bQd=Glo^eAj)Y)@Q9Ti=@SaZG&{5@J>TM#}3cLU1HeGK|=M zg*bjaDdindC3cvl+9rGduw>HSvY&f*#{Q6g_G911;JU>-(?r)Ns!X6sfoI_EAjT{C z;(ATk59jEqa)lg9(OkEJajK7FYt$OMN|1ESNkgmF?qIwqki%)##&n|1Z(yQQq zqY+~wuGACpP-Y7M#^}RXI_t=U!G_-_IASnUh79!fk_$tk0+ha)a)D?kDh5QqDvy%G zPi9TT6wUX=Uq+zNL~WEXE0t0;G9@IA-Fr*L?0#fga7eienVJ+ecg?eWxeS20%7G*^ zv^~rxhu-wBxB6GucXRAR2^$X-&so$vDNj9X@aPCEUQ!H(nRf_?| z&QFil)<*?D-6wEG^z1-Hw*l%nVOE%Xm~^q!K%N(yorO$iy<}#%bZRw)PRZ;X=d2M! zwnA1-;r3$WWfbe~{o*zK)l9`W8`j9q$qSO$xam$SvU}AQrwmh@yTd_F!@mXrGCqq| z#u79$XAL?CYvW$r^=84*JxU%4>+8B32&|*4TzJ0aTs0A&2t*mAS$g!(VI=Y@@=gFd zPA?&*791Z|v0#wW5k|*!zWR}Rv~e&vN~op`{uJ#?hj`Nh*D2m%XQodvaL~&mL}axa zg?i4ZqnR-Ef zd51^+2;41$iQ0~T+VR1WeXn$p=vfSBNkhd7!3;?DWZ{e{ol6)UFmYr{Br@r1v_7KK z*>eY7_L_PW^kh2|eyJdL@zc-DD|Et(B=UfLiS9RR?K#j_GJ3nk9``NGk#sf^M=~YH zUUEVF-eC{n!HvFNV6ox3h)%=913CJfk0(0%KT7}qE{Q$;TN2Yxi)8}{O9YbW^r*KX z*(%>dpig5Cnw3Z`YYPpt5y(g<@<>sA3u`8}3n2+>-t=!qEU8!P+qhD=hP@jfl_^T7 zPjJ4pkRM;=z3Ke1;q%~o(fROq690kF9h8MzIU&^2YF~HkxbzX##5TBS?3G&?^No{;Xi_$w3>frdo zz}PP~VWtfpR@DvT27MyClC^>v7FdSC;80I0b3-N2UY+rQ2o>ci1ZX<@)Lc^!P%(&o zOr&h0RjU~y)+z=KZnwQs{3eZ35)0u1PlzSiTI`HKnU$QLM#BQ0LWg7opRX&>MMQn4X-V-tFROhWh zPy=Au3RG=i+)JJ53E8V6L+c@z1F6EH__vT@OYyK%MdMX6q))S1idj6u6tCQdJOv3S zhqOi%RiHSsP3HvU)L4!%Tbv$RblqlIxkx&Gjp489a3EOBo-BL{<&buD)lfx#B+I)- zX47hxgE&)!JTTK#H_g0%+)`z*9Q0aFt8t-;Q&V07fWvYdn0qi^#BFE>VQdOREyR6D zl*`O=OJtAm^Mw%>!_@f`Z2^svRI)ke)xv8ehDCU#MII)X${ubWcr+*0<$Kbtq|}G- zk52eBcA8H)3t?KE16$E06@2$g8F}#I=5vp2ojeo8$^H5`s%)xwSo|)^8&mg*g;`crfG&15u z&lN)#CahU8ywTz>nV8=@hPv*1%-IFz#`2AVgvUdK)YPshG|0hK~7&oxG zijq#kCzf+|-+8kd+8L3{sy8$DCPabJGdJgFpKY)54=TC_&s>4y2L+wP_?n%6%c0-~f9UG(=R)0Gc8WY} ziCCAW^5*l2k5Cf`PRsQXDU|f+)*8&^O8fcyJBm+p(-$@l-X--vR|wVGA)UAw6ld?1 z=axMis~)=&S12=<5l=XKCXUSLX6{~dB}uf5I!e8b#YnyT{v5$gdU<>#eD6#f$zRzXR)y0;0Wji#xA-z5sb-X|n!mRVv3wYnhK7#7_HxxzZ0yx%su9p(Z2x z&$fx~k8~zr;1c8g4PzBH4Ov@~6Chy*D_Zn2NJCRjR{wf1nYbzisYryjrdx}5fxj59hO z4Db?H;zHx*9q`3w&oV{C(e?Bh`~!M=1Iwy{zmV@o{+~0>zkRp@RV5X4CCv9qf5Z@K zQ);}RLTIX3Lo4Y$n6g;7zRFQ1ekR1z$uD%{5b_#C#;Zeg;2Er;4EomY0DF9Ggd!?u*7UcS%%_9h9ou2n}0r`MY+)%mD`Que70 z%Q`L)w;h2;=71G9q)fiOfcNelJa7{;;E3CHmMTH5Hj00r!fJ`7CZOJ%k6JHI^Mud! z*?jS@K_5NCbO1ErZgTZ_XH9zK`IgVeORH;~Sjq4!aW%t<8VLs9$nfjF_`V*x zlI+qQ$@_K`#aT}gOzmH@nG?@<$U$Qf5Nw#E;4NlHEjFxBmoxQD+MfUyj0cgX$+f5% zF0KJ*R=K+o4(ql$C;~B2VD!}tUOa7pi*aGO{%$1+ow&n%tyP?q&}jV^H=Uv$MIhH% z6Ka_GbZ#H3p1@H8sw0UZA&bS=zG3sa5`PTh#^%61ebd>{A~P~t9mzpfcw(1i`Td~u zKSjd)JhmbCZWTONqpJ<#n;o?@$oNp{*Gkk)I`M%MoT}h&HGq5v3>{=XiHK|u6(fDf z6LPSZ7!xPlh${C*H=91INP&R5-AQY1gDfGu*;^8c8}x4APXbW04AUvft|i!bPy2yT zdpi=r_LBymk&_Mj<2n-Ew;)JfxuilyE$O*xCB@4AjN)L*80HF+Q_^2q4rU4HaF*?XwWFN3{5Rye|B;SR5sbwVrSTvaJEbxVE>H5bd zUVBMb+kfMb^ncyS{>M1K8AJ_yo=obzt5JBvc~+S9HJ?b7Eiz260VdyM zyp6kej$E|uzCIr)2twlaEdW;TRL!O%`qWgy52;l~~R<6SkvN2m!ay!UN z)TzI5Zrl?`lm{}WW{U~ag4K&u8`fg=hc#QEt=G*Ie_&`-kke{cOW!Ev9rF}CVSMc0 zlFv_Btx}CAAX1u2!huk~2PRjP0B7N~jD%!d*udr)zmrRDFa8Ml9& z*gLIqlAG}Ih$vn%f%oGx4Hs8t_Xrl3#2JF|dhvy+jc^KBO2`>whV>o-y*cmex0p|X zhguSJ_G)KZ5beqgXxYK$u)$=fCU9R^hkkG6kPiMW)IYR2{ydc{l+7qTbOh1o@=%=O zFAUpd5_@$GX*rkS`0z2mA?c8^zywynfzOc?S*k9NV^D!HrzdWe>IK8?Pd`1a5(f&Y z@%y$=k&Qx_lvz{yA|mo2?zY4|27wVFmr*Li^{R9P3nX#WKGGv!tVoQHrRZa&RH|Sc zjnC$%L|Ej*bX21&LYoBy7?dLfPI0Q-X^DkZRi6f*v_6wMh5mbljA}tTXf^B zf$7q{m8zq(>Y+Jpc)LD0K(d%!cNIXb6|VMtgvF8#556cUbu^h-mL5;kjXul>VIEUS zmc{0T;Dkk%-P$ekgnErj0&J8jI%7WWtc2hJdXVB|VDY~B*#8iuiZ=J~=`=j?lTl3cdV(4vp5P5S_MUiFn@PU7L81#b<$@R~<6BFl z&HJXTWoj{`0c@vh_X>hI%zA~zeiLe6MkPqRYDM({r=_1^*#qRXg1+>4 zd4WUv>RV8fHhNcx+e6(gSoWW(kNJO$E->uyw@*O6|NKfgg7r$2m8i+BFfLUm zvpRwxvQSWH=k2esA~|IqsM|}uRHE%T?j~nl`8`Znyk&p?)G^r4<+_E)a`Y`g7l#M# zTaZ5L+2YVu?wUMujYOG%tGD#pfzr%J)YEOgf`m8E=FA)6S_Fr8Am86sX%(~$#7A01 zo;4o-Fh-e&6CUgdS7U?{P}WjQ%mT0In5zyT*OHC9{t$nCOVdcd6YJEUq^U^rZYSkA zw6UhDf8*ZN`4BOgW-)eY=M;!`cBsMOsT?LtHsZ1zo~Tf_u3 z(EG*fL!<-v#Y;-l3M8p>fEN~?8N^&))@B>o{e)=u-lXT)q@R{P&LhNDJk;F6PWF1s zp+4urGBo3PNmK;~Ad2+tvI8Zh#%Pa|Ll{5;Dhp0mcXIqXdTb+NE7V{Y{L@BBKHrt} zN%`!wygR0ddL^WUa2;`>33Ayy3)M(lz3+?x*5g!obF}KM5-)=L9yVgV;fFWh2V?*N z5;TZh{gWwkvY@T0otx`zAj&gy_ofy+1!>O{Rf106H*g9^A$LWodC0tUi)g(Zkir}) z-3&G1_PQT&CW!(MCaQdiN#EH7u8Jr#u(hX*ViORMy)jqUK+_l8WDkrMk_Or5lMGcW$Wiu^ysCPTR}^mn(c)lNM`dNDlN;-@j4lbK zV}Bw7q7?ZGC7b`;Z44A7#!y2ItkuaE)8ym?8HMg&ek5ls;xHSY1Z<)5GqfXsQqpqc1FC6*h z>NqEU#peZ(-x2)4-y8`j=u8d^nw8|+Cp~@gPz{_93s@$%9u$gqJ-91XrqZaOV!_-F z=9pm{gTe02c@$nu3KLWBl_JNzYoKU^%iD|5K8QN2-V}l~GFzB!yLoqlD*u4CI_B3gk$lXM-&uRUJng z6E;f|QN;z#N0Hykc<)h27+~Zm<>e1r^}DXAHr)A-W6&;)mUmiQMhggZcvl>`M!g6# z0x4%ckozb52t^LaUz6 zwEEee#t0?5wQ~%DjY}@gwUL?UtuuN5?pj4qswA5pVX*VPehs zg1gJv_uzEN;N$fO=M(>9Y7T#iggB<3=v+ddCe<+|^Y((tyM<_YxFLW(^@}th+`?>8 zvz7t^q{dXYQ)mQz-Evg&Js$frJ)ok+c&R?@xAE#9T_y@ykfQl*JF^MYwYVcmc0z@& zWA2BqoJRdGjWcPZ_V|mWZ{Kfwkx)c*4w%W=7SW`?&hgam{w#D4)dW|svqak1ytb!M zqi7ZQ@5CF~L!N^EQfn}Ma^9Fg!Wy_ZziHL1nmoKWX0tks<+QgNL7g4h<3pt}nt-x$ zRC(%`uv5tlA8p)$!$N4X*uD+?jE|Sf3hJ+JaK3Bz_E-&~^pn-p2NJyTD6$X4`!=(KJDUDq~UOsB>{s?nT7iHy3p|$yXZP zAN#Y7bUiopVjvdb_tO!Cgw(6(EUKD&^%Ws0YzD%GBoZv2JRg4+r#R@4KIrbR*aj=& zQE7C%nHGK78xM8;>jLlCd%R!+lq7gtJ{)6KwK?h5l#?YXBsl=~eL zg-1K7^MlqSRO4=sygVR&s0?{tjWO1Hy=698I%~?B?e{5>{2A=6*IJ=OZ(7ut4!iL& zbnGPuB}Jq=)w*nd?Wpk*^=KGmtvWCK#g@$Y6HKtM(xbTD9^B?)V+XlPATyh2Ud`b41(t4B0L-l)2>C zf;9^Hc={1`t(etFGn2Qhz4;{6d&IB~Z~>y-d6D=c;bEn% zlO{6_jP|5@wp(s9?-r+qdElUwS=ll1Ckf|r_-o}5=Psws*w}?_Q-rT!xMCW7>TjEq z#55aTE$wbn_v)UO<$;3`=Y}I#$;;SRv(H2@db|f$qSZn3^g>M&YW>ItBYdv{I4@{f z8dEp)@0TmvoPLUz4Ud7@!5hano~2wY(U*={!Mvyh1kbX3FFUFuO1>X7O|^P(vV_mmh}*5<>vtcX^7jk4P8bu|o(ns#C5yFH?J>kQy;q`p zzL)5f@AjSRX96Dl6hJQ@ka9%$REu=>MdF)By@pT%gdWZ4@-L0o1f$ zEG@3VQyvocfG4e!+1FTh%(Q9wW~F(+(~`zID>J>oF}k2S_7Nr-#E*su3SGrI1GVe9 zYkvs%S`?CYz%ZPG6<3EABJB9&O?EidRmfu^KHhAvk`du`=y)Hp5}L7@yxe zPakx`P&s7<9HctwuLr6|q}CM49GalwAk7r7HPZ6qf28kCu|qTFZNLit-CtMG1Gi;H zLUA=VS-?n1o4M*UoF(sTrBZitcJiara7=%e?&hABQiiBOJ*=Jteb)NzVZ@*u6=jts zt`77{7Rl!%uN-|+DNcj>NoUt)(1H){06rjN$isi@xCM>#vM?$BM|hMZg&QNzM4#}n z7Y~I=Jmzqv`P^b@#3rjh7ua6J?un!~qb`2MZy-Abm^krlB#tjTKX2e&Ml4oaBTq)q?T*$c+CF|So$rBnK*%1Mhr%S# z7Svl!{L*=SK_TR{Poi$C{@uyZMjh0;t%ZsiMu^cbjjZGy@EKQ^J8Pk<@7s;u60QeM z#OwBt2#EcJ*a#_!ApR{69*(ZGz}`CN1!nkpxX5*BbhyAWlE>QOggP_rRtw`bwD%2u z0uZWPJW_*pxn3*8TuYvf4!-)ECJUM&s`C833V1<9-HzGgM9JEWi#nIl?N}OJd~q z)#?Vm#OyQ%MHE~okDTGCc2v{M-L=%JwB_RaYJ}&@v48-8kx|V0ek3=xg#Sk2d0<9Y z4R_v0I#%TI^BW0B2meb*JF-tnY@F2vW`_7?C8baVHGS6fjKJG0%bm{K#Q4@?s(rww zMii=r28@2~y)3>AW7z$~-XO_x6lOuttA=h~2YEk0H!L(YRBgzs>7>Lo;df1_jI=e0 zjqyn;>f@8$WYv+?XBbeX>S~urxQ*MA=xMx!UkZZOZDA+-c`c{=4w4d0wnDQi%La`N zBYQ%dWtyq!IdQ*)H-d6E0IEx8Ym`19CS3RkDSqB&uw7u;l=XoF%N#@egnz!P#8d!hn7@Au>6Fdl0=Oq4)sPf zR+^JfJ1*>VyUoL0N>@5xjj8FJ?JjzCMfB(CsKWSg3iZ*$clkTeb(j6 z4U|Kf$ORT0`SVHxb`sIW3gUs(i7Fz~BP^l#F_%{)q#YzTQ(>T+&_?1?n?|nsy$Otw z>9a7*DP5D`h?x4Elwxn-hGZ}LQW$ZP#+L+x&+_F>pJTjGPwcpWU21EsfbZh*i}387p-bHvr@LoPQqz(*i(;0FvT;)qOquNmayjLk zl_apt1-@2gkAAt&ZNPK)gb}G}$g=^^ZaXYtRB-?|BGp*|Zur!xNg|16Jatn%B`bt<-i z{m#>dQn%fyIs2Q@AwOskLyg3NRskuvGJ zBX33F}6H$rYS+t(x z?8x;opm?{X7Itp0)5W~em8yr%!x@R0L3qZ5fZs z#iw4yn!5rTdDAxet+9{s!3Bcs!1JuI6D_Gj!FM|Xu5l?i^z3N|LAh-jBGF^r(&&<1 zAArmE_mW3N-uC@_HardtsV!29kKhy6wiCFU774WmzNzsCX|DLbA%4-mT>fD&+sF3q zU+@q)M$kZ0nf&fGDbeWERQjy7E6!jQeMs^=h z+Sm!+mhsoUz|TRG<8Sr)+S!KM06?LegjYg9%r4SulAb}ucyl3rj-dR{7KuGebk&i= zYO321Q4>QjbaWlNLjLdB5JaxW8N>X$^k7Kt3e-wcyz1)*F+PCd=_w0LvZMwQ@l7d# z+gQ*>PdLx>gGsDzDv%5?pR$J0QCbxNPC!{G#c*l#lI(DGd$s=2drj{dxZgJ%H61Rq z!e8Px>Vn01#M%V&B56=l+hq2$`WUg@j-D$S9_^-mq6+;6He#D^XCLs8Ss*#x%%4Ew z;Wkx}H@V$nTir;Vwb?AUYz7DsDy`BimFzjZzZi7#x$6{$MVL@iklNVB>AlpT??twu z|DwcXm2mE*_ZX=oW7ttw$~(WVzv6s2LA*)mHiS1w0?`19arDGH=;)@bB!rc^fDi*5 zMo{sxoDmgUT`b5^At~nDv5XpPcKX^lM|B!qQ)?-)Ka5bF*ueYs1?6=s#zo~)h59+tWu=fVaE&4P?#S=h1sQhXF*}Jl~3$7+BgkRhqoK+A^g1? z*p3nuI4E-_I<2yDMTv0Bx)-k}b;_81?bz{`uyyT|o zA+c`_9uaCR9)p}~VfUSEU);PST|;T42qrrsC}DeO)^82&KItdPtI)@k(rVQiA^?3L zqz+9dyMYk4;<-bO8k{5BOYqiwxmWtag{)z*8bPz_pF(IT%T+Z_$W0XXhOil9hZ zyUDsh27?n9eo(|Zu=&Q5l}&D-?h*&3HFyW5Z%E8&^7#lPHB zSezkM@%hOY@Bh0m=8sRlKij^S6;G@s{wi-0He7ac(it$o(xQ;> za#rNV#2RpGO?Si^+C5M01$KB8M$sm>J3hUBX-T7gMjM!hqGq3#j4fMB&9ZB*UMR+3`7<^}@5;ZEXm&Xsc`(w1$)}WBfllK+UGR zk!dX(8L)Fdf*q8}Aj0bwq9ftzDl?qwyc~R9Ky2)&}!zqE#asA#32)3<4F1= zzf}?I=CiySdnhJTfDu@pTUpD~>VgA(PXn|zMZeQ#;S;0HDK&_zZjx}#@@Cov2_&Q}z`awE|>EdZ>H^AKQT1pBf|R(Vy6btQ(` z`FfcUgkQwL^kOWOa2d`J7YWAO3km$lWy@5TC7YI5Dvb3zXx*F`qfEl#6d`{kR*YbH zIf^idk_5C+Sh+$B7MyPc^4B19aRq6J=oL%>fnu30+#<7npD z1f5mkF0-wjVhuVKYF%WDZ8dL7OLb9~3p5L4D8HY&&|Mcd2SgX>OoWh2#)xGNwi8iz z5R7c7NIu%#2bsKb0{Wu&xW3%|JRV{nKEKY# zKsf?bsEtYsWVzW^IwzhEh!;khScDbZ*w$FQ;FP7H^P4(lnQ|xKs+q>4qa2tLpCnbV zkleATgR>xbe)hl5brX$rrH91Y}GeFebM>Ns7XYQB|L5@&(jL9Ml>%<*k45Z<%;2lr5Y+ zLP^BAIdm~0Vx$;NoT?(=BH%KdtP#0lV~Cy$pE{q5M->o?Da;wjgn~ji->PC-Mf=VM z4PL#M{<|^A>hXHqFe=LmJoz!X+h`yjSaMz8H@SCKJEUDbPq-aVZz)Gfp zavHI;Xmc%?5OR-; z4=#P{D0hcgav1m}Y{yGE&%r$M|AIMl_&J#QDr3vYoG2sTW}IR1CX5@6)7&hheQJW+ z%UiRI=%_-XQkFzr)lcasm3ku5DjpSZm@MdHVAWF@w}l%04q-;e<&*GunzO#eUb?Qnehxhw#|I|8Zn9L?DOIhyHzHs=2p&Db>g ztQ`hOSj{(Y*1%s^HN(MFy{j?v@med%4MXgURuO^Q!hh@dx}kr434QMm!3+~vQAi+V z6PIt4*YsuoF)v@q^Zwzo{KbNd{@kZxpI~gc?N7Kkv6}-?pNlALobfRezWX$0Ik#h& z)(X>l^o5xEE2x+?Pgf8RZ6%s0m+s43RxyeDd{p(nlP9)P1u`KsAQ^?)#JrtD;j$11 zmYNVUtQ2jR${RL+TLlfTzbRO_4XQM6RPudMj)!}L(M23=VV%u9mA^l%IYmcVFHQ)= z0a*}VfGaw5wCnAaSetkAIqijmaB3jLZr^_egrSP_%?I_%FNpV)O!1RvB-2AO(mGw| z&==lwfhPUV(PdcRLzMluJ%p9pE1p+oUKV2%AwR#_DKt5622N_$IXRtc@*E?(sGJSIGp(`|DAywzJ$@fmLhr6`-VJBgfr}RLoZu02#sM_jm963Fx zDtJL;nl%#-W`xOQ0GDyiojeWx{FnzqfY*;;M(2|t#T@6ixB0%jN9|)Dxc7nQnpXYu zU&?GVfxB&xP{R+A7JX2>gupv5F3H2)xzoMjP~_1D4;gXpC8~vKt12rWw)a;s#|O=m z5gZ{f^i_1w5z7&AVFN}Ng$A#i_^}<1Hu)Vp*47UtZ}_GbjD1eAZ5+bsZvuR5nC8$G zSw|}ACF=u`;YKzA;^=e(O1K>D(njAni)oWsVsb#lx&Y|1Y=s9h!Wi)s(|&IZ^9>d5 zAe$9)NtupUamw7aE7oHkNtwpnaWnf9?aLM#1QR3e$N;kfg@7!dN_^CHX?`5V4NR#N z;ZKTbR3MoeBODS_Bnm7sjmL1gi%Ym;3xYiCfc&G5lEHZacJmyVE6Q)HUkTEb+~A3> z7}L);Inr|pgQ(FHK1&Ozw_T>*qu<0#!Jk#hp!d2W(%9rD?8CkC)(NX}j-wuZl+Ki4_P63GZ4mT@~NOq~+UyN>A6v11(5 z=$*ak5#m{u?e~)dGRP)kFikEk`NTONa0(J)CNgFH|JyT}aq ztEV|^)HH3kV<|=(>5m7H%Q%h(Dkxkv=Jy9A>Pr0KwREuoTH^-Wx{w3 z)%$qI*}&RQvaE+>9D-FkDe?w-!W-DQpS|M3O~9YrSo5X{wq;()KQIN*5G)#1mgNhk zzt{U@h_Vy-CL&9%#c3y5F|b1;ggcE2*Q3H$n`RYXQF z;#rdy#61Tvqh*)k_}2IolM(Ak6NlIS&SLj&uZ^Hl6idJ!Sy6zSrm$S6(98ryh8x`O zE{`if{@k!j(Ixn79^d`tIt%IKoW&%~m6HXJ74(=``!cTIG0{RrDtT*vU6h>vqn+2n z$AEi7YsvI(yE=3#BO5yWxsY*{=8M0S`dmG|8^k@d7EGAeP?0hGjnU=CPG``#S+tm3 z{rjsQiyaA+rzG~zxvlx%bNlaIC9Z$Hl1J+!rX--?b$&HrI)OQnLqqP1ut4Q+855b4 z3t72U8P9|JAq7P`DgfT?Wj8R$|# zN^y@kzFF*7Udd5RFIgK)=1=2;UekcXkho+^dEGdDW>0ERHUodl!u*jNv-E(XA=rMh zOv%vE)AwMh>dNHjLRJv_ZorD)Pyr?BKjS2>H)lXH>@K`Da&U`jQsQ^?F6;x~m^q7Y z`og?22R&M_QoRIq_rt3hh7vaE5)`vn5(!FmPp|8&czd8osh`CUgLz5HQgk|tBlA79 z6odWT9I3w9T}`IZZV{@es4+W=y*7hSY&z!REce`OXN5&Khef+0$wEb#j+|@LgUX3< z@?l)180lwV-P{}wnP$P%Al#9T^-ghIgKC{@3SmuZjUDgn806zU>kc0y<7{P)PL=~b zYnp^AjCBJ+7U5ACyl=TN?@;63ip^~M%U6{da=H`0GRC# zo%7ep=QD8D93{PZ%^|4yq4|jSB?GqXl#0I9mMfgiZC6P=`7L*n#s0#CDEO#T0-tRgV`81ct{Wz2^3=J7PK0`!SNu=ojr+!vY5+ zN?jWYrojDk{b>9gI5DScGQKfSwZ7)gv+qw0eNTS4XVj-JPdRra&~4Yi8&_JgOjhjI zp}2BdGs?02H4B5@=*%5!IOr7z>bv4z z*0t>6246h)KjjR!=F#AlDvxh|wUuO{pH~;zJuXpYxwsRKl48CHd>9V=W~+u`g6011 zetOR~&l#qn#ZZ4L(cObg3x)w0GfHG(~%+aa&WJJEInk>mu2Wz9lO0Jqe= zzNv9UvXr+?sLM7IgprrhDe_(tI{L6NgdwLjkl+E6_5^-p6;IuAO%;5$zrM-o=@o-7 z=t{Fw!w9th06VODcAW7eQE8_PG2xyQHTFL*AJhNbzR|7t{YRoccd5oOQg@f3s5+yP z&Vgmt_)WYbFcE$iiQb>5EPcqVGQf*lAwnKVkafdzMy0BC<9&xK(c88c%J4Yww8p&w zAHI9CY{DbA06a((IcaG6*0g(`W_L0?{KexImWRYcTREAbhh3g9J6DitdQbT9b`$44 zCbl*Jro#)rvuF*F*taJ`rGgPz@uH4>>QnrC(@WAQX)z8u45fuMYg$TXMkb<255j~X zbO0x)XKWdbqbR%>$Ak$q^HvkCX4JF*jv5`<7?4@}W-4V6dv;Ql+;k7v@+ra$j#9tk zbgbG%hr}n}0_~xivL0SU+1FL0KnT1u803xfIbu(&2&(g-Zhq6W3ke-fkBrZU8}XXl zOLz_k4-Qt)`=kJQ7*Km&K~gswWB>@cGJnrd!@?h7VF* zQg|>w+o^JX1qGZL+Nn2ASf+Mb-vs{}nko(UHUoqS?TcE!5#s0c;j|E8l2E4{-w-d( zO;*CjleZ&-wlkU>s*^nmhp2{oP3c-V5V~#?HP;;piFY5tKxH(*4stapD_POj4tnF0 zuMq7J4y!N_7HT8dSI94{H_yWSG@6#coTGgVsS;nC_fs*bA6k$kp^xMM z5^qPjG8U0nj<0*&T79^_MUtSM0iX&O)60BC_t^<~-Q#s;OKy|+oVj}kzhfIjya_(o zhm?`pEo^^?;txe179+@{k#Zdui*tJKbWYxx@njM5m@#O#eu}hv%CsRBL`14&B|S5| z*e9{f^YC5Kk7-~T~3GxQQ-^?su)A2+&ue5k|XE?WD5}R;y3Eng`z9`H_ zZ7t@eD16FYg2hsL)O20fP@Vzh17oQTn5_U|;q8aVip16MlY!&UNr$}Pkg`%wRR`l; zn^`KzB)zfdl+HcTQ-pbpl!a=ia`D)e`W?}(RP#ptl44~{+hBJo_NZFk>zJHr`D$sN zlKtNX2dzFCygA$+zCg2^(cnErf!g|5i$wW8sly8iH^ZBpq_jR@n{ehx8JZ+jLyk1M zCW?cKTdy>gYCVojJ$5yAl{tfE5KpC=f;(v^sM{nVxnDrgcHJN8sOl0b=P(ko#A~$= zOwkUNKJ^{VavS=3m;vM0#U-K=tGc+#{$YoyU;-j%_v0Fm2Q?jv{sz z3|)Z%#B&nfg;yZ;4N6pK@_0$fPcb0b4wJ!*Y6A|>L3t;BExE7nn3V!l*e!)pa#+P> zvF!-E=@`finpsEh2vQrJXBvXgs7IP4%RYt9l8h^NY}0ck`tsiq>*Pln*K7HNG;X{p zy*Hk@sApVohOLfc^bnF_`g^9pY1?+4#dBaQ!T#6%cJx1Y5)CUl|JYdl)KaC71Qmst zSpu6gox|iyoEyUEJ0?j-E5REbkJc4!KyCKmLzCliTJ}6BR9wSEJwUw_q zo;$5JXGU$-SckiW+eJ5=wlp=no_=5czEjWb@rcU9(yBK{R|01;9(#Z{*d?goNxy?9 z8cK}3uS^^tD5ecCn>aTuGyKbe_kTFB&$9!6{o8@X|L4H=ub62|a3~dn zYkl$tDHc5;7N0vk2vN|}yW{{^c<)$pO=Z%@EdS@gv6)6j#m^3GO^#u!4fE{4*vF@f z=tp{Ut-9%Tx+%z|b0ZZEEz6ITj?BYf2aS>6So)VTI|v1%Q+%xgcg0A(H8rS1iuCL zLNatG#URm35aY~!)=t+}PJ1?B;*_HYdP(T(5P8)!9K&t|d zP#sXHbP8(}bfHXo_qwnXX~ld1;cgX;{*?Cq(X;H*GZVIXaIwub!g>BH>)FfYGtF@p zs|IUiJlVt1Sy;aEDSkiNqigD>N(Fv;u8v-}O)1htpWEmU#pSp~XjiCTsd@_$rH0SF ziN-!#oHhnz-6LtSnN*kWZwgT;UOBa-PKJpyD@`~H70-krAccK`r#eBT6JEL+BX!Z~*&`agAl$9)?5CTOds#GenSaPcvQ|67F zv5tnpl|Qdh^O3tgZg}88;PXx;-@HMX1It+nN~%!8h8F)f4wqP+5Ig=LvfiP;J$MLH zf|Nw!c5)#0hX>PSvBUrHU|#U@(aqqh!PusQd`eJAhzt^E=csJMi7)WONG zCCUI)tR2Rl)ulYwMvSLtgo;MYzzh|P?UHuF$CTBzWMr5kAy~Q5WQnJvWV97n9)h%^ zqxv9^HC@{F*u70TFOfPFzQwTB{${B+Nu$4_4vMlA^{bAk{@V;fg|yDJW$F@L>zIhe zdW(|-U1bNgW3#b^kJHK^PKyH_O%m#*(X|Pwy+YY2Fs#uys=bGa!$aDRnTCj#G)CeBS%%+9l;Bja^vG$s@wR1^-OJwArCqgWtJ9kN2M22wQd zKEA;`DgTAQ(|L5f%w;w7#>Zz5?!sZ^0m4Ee7yb0$BIY_#3^eBFjKvP^iY`L>7SPPX zRE0&TaL){F@_QFamz(@$u^--cjzwls zqSmTcwpH9~mm)wWR%P(DzEr^`Xd)1O2zTK?kmzwpgL z`Cen|zD4l9@ciBO0qj8Ihqq)?2vZ$a3M$!4EriOhv+NM)p$7ss#Biob(bVhiBM+_^ zBnDB&zOnAg%i{Tmy}FkqfJ?dO{x>@T8-}H8TvUXMD>=6w&WF^IsyYW#M@LU`z12rJ zEiQ@S9ZcL!4{5!cDf3V@u#7e(*qjryMteR%$%xo0!p1^VLSPzlBux?-r}kNZz`eJ8 z5&9N!8B7>TAJ|=X?F$JG>SQJxTT17Z_f13i$NVVVvB~}c#wHRcf1)T zTf`%oMtg$xXHlu$J>A`mn2VN+i$mk2E_Uab=K16gah2{!?zUr^&~cfPx}LxYDc%^l z>qWi`9ao2%(9M$(kyv4N;q>T?N~Mw5^MQBNeO3cjYNH8T5l8de8I+e@8?j=;TLgq` zp6)=&d3T%%rarKlJ{p6U#Z6#9%V_lS&5%C-H_0wIqQJvs98`1pxzQVc2d#D_m)Y9P z(AGD&OH!n#5Ht60R;8kp)euJ%O&-M#5)p zT;JXu*PE|ESigDkJ-eZGUZuU=#=%D$^8qf7O^nDpI2UnBviYcuF1dsPAJae*3X%(`cs8pf}yHqio>BMX)W+Yhf1TkdE%y7ze?8>s$3b@gyC|RMdHwkKzmB#0C*s!=OMXX?zy3Gk z=VHn~5x<^Z@H^tu^Pl|B-{Pm<{}b`+F!4ex2y{ zJ3@ot--w@WJpV-eIvMLn^Uwb-1>%1r=zhL${wL$tp)0>Lq{;rk`1$VRpNwBeQvA+f zqxl2lj|KYcmhRsfTJ(Ql{INoR-DdeaLyzSTj6as>ubYg1XCQO@f$_&0{dKFr?+lgq ze_;HvNPlg{{hcu@@CU{ptMu2lvELaDqJLogu}pvMZ}^=dC;bP;AM5njcWu8jP89yl z_^U7CpEdUD>hkZ5JheYC{#d8KE_nRTxY7Ot)qye#tZX5 aF#fJn$mfACFJ1tjzv7?2tFig<)Bgef&0KQ; literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/date-reasoning2.lisp b/snark-20120808r02/src/date-reasoning2.lisp new file mode 100644 index 0000000..688773e --- /dev/null +++ b/snark-20120808r02/src/date-reasoning2.lisp @@ -0,0 +1,347 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: date-reasoning2.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2010. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +;;; $$date-point and $$date-interval are external (solely for user convenience) function symbols +;;; for date points and intervals; they are replaced by $$utime-point and $$utime-interval when +;;; formulas are input +;;; +;;; $$utime-point and $$utime-interval are internal function symbols for dates +;;; they use Lisp universal time representation (which counts seconds since 1900-01-01T00:00:00) +;;; +;;; $$date-point and $$date-interval use 1 to 6 integer arguments +;;; year, month, day, hour, minute, second +;;; to specify dates +;;; +;;; examples of SNARK dates and their translations: +;;; ($$date-point 2002 4 1 16 27 20) -> ($$utime-point 3226667240) +;;; ($$date-interval 2002 4 1 16 34) -> ($$utime-interval 3226667640 3226667700) +;;; ($$date-interval 2002 4 1 16 34 :until 2002 4 1 16 35) -> ($$utime-interval 3226667640 3226667700) +;;; ($$date-interval 2002 4 1 16 34 :until 2002 4 1 17) -> ($$utime-interval 3226667640 3226669200) +;;; +;;; 20071215: avoid use of $$date-interval (and $$utime-interval) +;;; reasoning is more complete and effective if just $$date-point (and $$utime-point) are used + +(defvar *date-point*) +(defvar *utime-point*) +(defvar *date-interval*) +(defvar *utime-interval*) + +(defun declare-code-for-dates () + ;; declare symbols without some properties here + ;; defer full definition until declare-time-relations is called + (setf *date-point* (declare-function1 '$$date-point :any :macro t :input-code 'input-date-point)) + (setf *utime-point* (declare-function + '$$utime-point 1 + :constructor t +;; :index-type :hash-but-dont-index + :to-lisp-code 'utime-point-term-to-lisp)) + (setf *date-interval* (declare-function1 '$$date-interval :any :macro t :input-code 'input-date-interval)) + (setf *utime-interval* (declare-function + '$$utime-interval 2 + :constructor t +;; :index-type :hash-but-dont-index + :to-lisp-code 'utime-interval-term-to-lisp)) + nil) + +(defun can-be-date-p (list &optional action) + ;; a proper date is a list of 1 to 6 integers with appropriate values + ;; interpreted as year, month, day, hour, minute, and second + (or (let* ((list list) + (year (pop list))) + (and (integerp year) + (<= 1900 year) + (implies + list + (let ((month (pop list))) + (and (integerp month) + (<= 1 month 12) + (implies + list + (let ((day (pop list))) + (and (integerp day) + (<= 1 day (days-per-month month year)) + (implies + list + (let ((hour (pop list))) + (and (integerp hour) + (<= 0 hour 23) + (implies + list + (let ((minute (pop list))) + (and (integerp minute) + (<= 0 minute 59) + (implies + list + (let ((second (pop list))) + (and (integerp second) + (<= 0 second 59) ;no leap seconds! + (null list)))))))))))))))))) + (and action (funcall action "~A cannot be a date." list)))) + +(defun encode-universal-time-point (year &optional month day hour minute second) + (can-be-date-p (list year (or month 1) (or day 1) (or hour 0) (or minute 0) (or second 0)) 'error) + (encode-universal-time + (or second 0) + (or minute 0) + (or hour 0) + (or day 1) + (or month 1) + year + 0)) + +(defun decode-universal-time-point (universal-time-point) + (mvlet (((values second minute hour day month year) + (decode-universal-time universal-time-point 0))) + (cond + ((/= 0 second) + (list year month day hour minute second)) + ((/= 0 minute) + (list year month day hour minute)) + ((/= 0 hour) + (list year month day hour)) + ((/= 1 day) + (list year month day)) + ((/= 1 month) + (list year month)) + (t + (list year))))) + +(defun encode-universal-time-interval (year &optional month day hour minute second) + (let ((v (encode-universal-time-point year month day hour minute second))) + (list v + (+ v (or (and second 1) ;1 second long interval + (and minute 60) ;1 minute long interval + (and hour 3600) ;1 hour long interval + (and day 86400) ;1 day long interval + (and month (* (days-per-month month year) 86400)) ;1 month long interval + (* (if (leap-year-p year) 366 365) 86400)))))) ;1 year long interval + +(defun decode-universal-time-interval (universal-time-interval) + (mvlet (((list start finish) universal-time-interval)) + (values (decode-universal-time-point start) (decode-universal-time-point finish)))) + +(defun pp-compare-universal-times (point1 point2) + (cond + ((< point1 point2) + 'p point1 point2) + 'p>p) + (t + 'p=p))) + +(defun ii-compare-universal-times (interval1 interval2) + (mvlet (((list start1 finish1) interval1) + ((list start2 finish2) interval2)) + (cond + ((= start1 start2) + (if (< finish1 finish2) 's (if (> finish1 finish2) 'si '=))) + ((= finish1 finish2) + (if (> start1 start2) 'f 'fi)) + ((<= finish1 start2) + (if (= finish1 start2) 'm '<)) + ((>= start1 finish2) + (if (= start1 finish2) 'mi '>)) + ((< start1 start2) + (if (> finish1 finish2) 'di 'o)) + (t + (if (< finish1 finish2) 'd 'oi))))) + +(defun pi-compare-universal-times (point interval) + (mvlet (((list start finish) interval)) + (cond + ((<= point start) + (if (= point start) 'p_s_i 'p= point finish) + (if (= point finish) 'p_f_i 'p>i)) + (t + 'p_d_i)))) + +(defun declare-date-functions (&key intervals points) + (when points + (declare-function1 '$$utime-point 1 :sort (list (time-point-sort-name?)))) + (when intervals + (declare-function1 '$$utime-interval 2 :sort (list (time-interval-sort-name?)))) + (when points + (declare-relation1 '$$time-pp 3 :locked nil :rewrite-code 'time-pp-atom-rewriter-for-dates) + (declare-utime-pp-composition)) + (when intervals + (declare-relation1 '$$time-ii 3 :locked nil :rewrite-code 'time-ii-atom-rewriter-for-dates)) + (when (and points intervals) + (declare-relation1 '$$time-pi 3 :locked nil :rewrite-code 'time-pi-atom-rewriter-for-dates) + (declare-utime-pi-composition)) + nil) + +(defun input-date-point (head args polarity) + (declare (ignore head polarity)) + (make-compound *utime-point* (declare-constant (apply 'encode-universal-time-point args)))) + +(defun input-date-interval (head args polarity) + (declare (ignore head polarity)) + (let (v start finish) + (cond + ((setf v (member :until args)) + (setf start (apply 'encode-universal-time-point (ldiff args v))) + (setf finish (apply 'encode-universal-time-point (rest v))) + (cl:assert (< start finish))) + (t + (setf v (apply 'encode-universal-time-interval args)) + (setf start (first v)) + (setf finish (second v)))) + (declare-constant start) + (declare-constant finish) + (make-compound *utime-interval* start finish))) + +(defun utime-point-term-to-lisp (head args subst) + (declare (ignore head)) + (or (let ((arg1 (first args))) + (and (dereference arg1 subst :if-constant (integerp arg1)) + (cons (function-name *date-point*) + (decode-universal-time-point arg1)))) + none)) + +(defun utime-interval-term-to-lisp (head args subst) + (declare (ignore head)) + (or (let ((arg1 (first args)) + (arg2 (second args))) + (and (dereference arg1 subst :if-constant (integerp arg1)) + (dereference arg2 subst :if-constant (integerp arg2)) + (cons (function-name *date-interval*) + (append (decode-universal-time-point arg1) + (cons :until (decode-universal-time-point arg2)))))) + none)) + +(defun utime-point-term-p (term subst) + (dereference + term subst + :if-compound-appl (and (eq *utime-point* (heada term)) + (let* ((args (argsa term)) + (arg1 (first args))) + (and (dereference arg1 subst :if-constant (integerp arg1)) + arg1))))) + +(defun utime-interval-term-p (term subst) + (dereference + term subst + :if-compound-appl (and (eq *utime-interval* (heada term)) + (let* ((args (argsa term)) + (arg1 (first args)) + (arg2 (second args))) + (and (dereference arg1 subst :if-constant (integerp arg1)) + (dereference arg2 subst :if-constant (integerp arg2)) + (if (and (eql arg1 (first args)) + (eql arg2 (second args))) + args + (list arg1 arg2))))))) + +(defun time-ii-atom-rewriter-for-dates (term subst) + (let ((args (args term)) m n v) + (cond + ((and (setf m (utime-interval-term-p (first args) subst)) + (setf n (utime-interval-term-p (second args) subst)) + (progn (setf v (third args)) (dereference v subst :if-compound-cons t))) + (setf v (nth (jepd-relation-code (ii-compare-universal-times m n) $time-ii-relation-code) v)) + (if (dereference v subst :if-variable t) false true)) + (t + none)))) + +(defun time-pp-atom-rewriter-for-dates (term subst) + (let ((args (args term)) m n v) + (cond + ((and (setf m (utime-point-term-p (first args) subst)) + (setf n (utime-point-term-p (second args) subst)) + (progn (setf v (third args)) (dereference v subst :if-compound-cons t))) + (setf v (nth (jepd-relation-code (pp-compare-universal-times m n) $time-pp-relation-code) v)) + (if (dereference v subst :if-variable t) false true)) + (t + none)))) + +(defun time-pi-atom-rewriter-for-dates (term subst) + (let ((args (args term)) m n v) + (cond + ((and (setf m (utime-point-term-p (first args) subst)) + (setf n (utime-interval-term-p (second args) subst)) + (progn (setf v (third args)) (dereference v subst :if-compound-cons t))) + (setf v (nth (jepd-relation-code (pi-compare-universal-times m n) $time-pi-relation-code) v)) + (if (dereference v subst :if-variable t) false true)) + (t + none)))) + +(defun declare-utime-pp-composition () + ;; use relations between x&z and z&y to constrain relation between x&y where x and z are utimes and y is a point + (declare-relation1 + '$$utime-pp-composition + 5 + :rewrite-code + (list + (lambda (atom subst) + (let ((args (args atom)) m n) + (or (and (setf m (utime-point-term-p (third args) subst)) + (setf n (utime-point-term-p (fifth args) subst)) + (if (/= m n) + (make-compound + (input-relation-symbol '$$time-pp-composition 5) + (if (< m n) + (list 1 (make-and-freeze-variable) (make-and-freeze-variable)) + (list (make-and-freeze-variable) (make-and-freeze-variable) 1)) + (second (args atom)) + (third (args atom)) + (fifth (args atom)) + (fourth (args atom))) + true)) + none))))) + (assert `(forall (?x (?y :sort ,(time-point-sort-name?)) ?z ?l1 ?l2) + (implies (and ($$time-pp ($$utime-point ?x) ?y ?l1) + ($$time-pp ($$utime-point ?z) ?y ?l2)) + ($$utime-pp-composition ?l1 ?l2 ($$utime-point ?x) ?y ($$utime-point ?z)))) + :name :$$utime-pp-composition + :supported nil)) + +(defun declare-utime-pi-composition () + ;; use relations between x&z and z&y to constrain relation between x&y where x and z are utimes and y is an interval + (declare-relation1 + '$$utime-pi-composition + 5 + :rewrite-code + (list + (lambda (atom subst) + (let ((args (args atom)) m n) + (or (and (setf m (utime-point-term-p (third args) subst)) + (setf n (utime-point-term-p (fifth args) subst)) + (if (/= m n) + (make-compound + (input-relation-symbol '$$time-pi-pp-composition 5) + (if (< m n) + (list 1 (make-and-freeze-variable) (make-and-freeze-variable)) + (list (make-and-freeze-variable) (make-and-freeze-variable) 1)) + (second (args atom)) + (third (args atom)) + (fifth (args atom)) + (fourth (args atom))) + true)) + none))))) + (assert `(forall (?x (?y :sort ,(time-interval-sort-name?)) ?z ?l1 ?l2) + (implies (and ($$time-pi ($$utime-point ?x) ?y ?l1) + ($$time-pi ($$utime-point ?z) ?y ?l2)) + ($$utime-pi-composition ?l1 ?l2 ($$utime-point ?x) ?y ($$utime-point ?z)))) + :name :$$utime-pi-composition + :supported nil)) + +;;; date-reasoning2.lisp EOF diff --git a/snark-20120808r02/src/davis-putnam3.abcl b/snark-20120808r02/src/davis-putnam3.abcl new file mode 100644 index 0000000000000000000000000000000000000000..c28741c64cc4003ceacc7e7eb21df48f4f9886d2 GIT binary patch literal 428783 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 LjNZWL+bh>4sM+_qcC-9b@x=SfiG)u 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 h;+x=7(J=O5#!O_%kgouIctCw)UEplyNIq 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. + +(in-package :snark-dpll) +(defparameter dp-prover :|LDPP'|) ;the name of this prover +(defparameter dp-version "3.481") ;its version number + +;;; LDPP' +;;; +;;; Satisfiability Testing by the Davis-Putnam Procedure +;;; Using List Representation for a Set of Propositional Clauses +;;; by +;;; Mark E. Stickel +;;; Artificial Intelligence Center +;;; SRI International +;;; Menlo Park, California 94025 +;;; (stickel@ai.sri.com) +;;; +;;; LDPP' is a fairly fast implementation of the Davis-Putnam procedure, +;;; but still has several deficiencies. There is +;;; no checking that a negative clause exists +;;; no intelligent literal selection criteria +;;; no looking for symmetry +;;; +;;; +;;; Some information about LDPP' and related systems can be found in +;;; H. Zhang and M.E. Stickel. Implementing the Davis-Putnam algorithm by tries. +;;; Technical Report, Computer Science Department, The University of Iowa, +;;; Iowa City, Iowa, August 1994. +;;; obtainable by FTP from ftp.cs.uiowa.edu: /pub/hzhang/sato/papers/davis.dvi.Z +;;; +;;; +;;; Usage: +;;; A set of clauses can be created incrementally by +;;; (setf clause-set (make-dp-clause-set)) +;;; followed by calls +;;; (dp-insert clause clause-set) or +;;; (dp-insert-wff wff clause-set). +;;; A set of clauses can be tested for satisfiability by +;;; (dp-satisfiable-p clause-set {options}*). +;;; A set of clauses or wffs in a file can be tested by +;;; (dp-satisfiable-file-p filename {options}*). +;;; See examples at the end of this file. +;;; +;;; +;;; LDPP' is an implementation of the Davis-Putnam procedure without logical +;;; refinements. It is efficient because of the way it performs the crucial +;;; truth-value assignment operation. LDPP' uses reversible destructive list +;;; operations, similarly to Crawford and Auton's TABLEAU, Letz's SEMPROP, +;;; Zhang's SATO, and McCune's MACE theorem provers. +;;; +;;; In LDPP', a set of clauses is represented by a list of structures for +;;; clauses and a list of structures for atomic formulas. The structure for +;;; a clause contains the fields: +;;; +;;; * POSITIVE-LITERALS, NEGATIVE-LITERALS: List of pointers to structures +;;; for atomic formulas occurring positively (resp., negatively) in this +;;; clause. +;;; +;;; * NUMBER-OF-UNRESOLVED-POSITIVE-LITERALS, NUMBER-OF-UNRESOLVED-NEGATIVE-LITERALS: +;;; This is the number of atomic formulas in POSITIVE-LITERALS +;;; (resp., NEGATIVE-LITERALS) that have not been resolved away. +;;; They may have been assigned the opposite truth-value and the clause +;;; is really subsumed. +;;; +;;; The structure for an atomic formula contains the fields: +;;; +;;; * VALUE: This is TRUE if the atomic formula has been assigned the value +;;; true, FALSE if it has been assigned false, and NIL if no value has been +;;; assigned. +;;; +;;; * CONTAINED-POSITIVELY-CLAUSES, CONTAINED-NEGATIVELY-CLAUSES: List of +;;; pointers to structures for clauses that contain this atomic formula +;;; positively (resp., negatively). +;;; +;;; To assign true to an atomic formula: +;;; +;;; * Its VALUE field is set to TRUE. +;;; +;;; * Every clause in CONTAINED-NEGATIVELY-CLAUSES has its +;;; NUMBER-OF-UNRESOLVED-NEGATIVE-LITERALS field decremented by one. +;;; Note that we don't modify NEGATIVE-LITERALS itself. +;;; If the sum of NUMBER-OF-UNRESOLVED-NEGATIVE-LITERALS +;;; and NUMBER-OF-UNRESOLVED-POSITIVE-LITERALS is zero, the current truth +;;; assignment yields the unsatisfiable empty clause. If the sum is one, a +;;; new unit clause has been produced. The newly derived unit clause can be +;;; identified by finding the only atom in POSITIVE-LITERALS or +;;; NEGATIVE-LITERALS whose VALUE is NIL. These are queued and assigned +;;; values before assign exits so that all unit propagation is done inside +;;; the assign procedure. +;;; +;;; To undo an assignment of true to an atomic formula and thus restore +;;; the set of clauses to their state before the assignment so alternative +;;; assignments can be tested: +;;; +;;; * The VALUE field for the atomic formula is set to NIL. +;;; +;;; * Every clause in CONTAINED-NEGATIVELY-CLAUSES has its +;;; NUMBER-OF-UNRESOLVED-NEGATIVE-LITERALS field incremented by one. +;;; +;;; Assignment of false to an atomic formula is done analogously. + +(defvar dp-tracing 100000) ;prints trace information +(defvar dp-tracing-state 10) ;prints current choice points + ;once every 10000*10 branches +(defvar dp-tracing-models nil) ;prints models found +(defvar dp-tracing-choices 2) ;print values of split atoms + ; to this depth of splitting + ; beyond shallowest backtrack +;;; When dp-tracing is the number N, branch number is printed once for each +;;; N branches. +;;; When dp-tracing = T, dp-tracing enables the following: +;;; print number of branches each time a branch is added +;;; print Succeed(M/N) when terminating a success branch +;;; print Fail(M/N) when terminating a failure branch +;;; where M is the number of success/failure branches +;;; and N is total number of terminated branches so far. + +(defstruct (dp-clause-set + (:print-function print-dp-clause-set3) + (:copier nil)) + (atoms nil) + (number-of-atoms 0 :type integer) ;in atom-hash-table, may not all appear in clauses + (number-of-clauses 0 :type integer) + (number-of-literals 0 :type integer) + (p-clauses nil) ;clauses that initially contained only positive literals + (n-clauses nil) ;clauses that initially contained only negative literals + (m1-clauses nil) ;clauses that initially were mixed Horn clauses + (m2-clauses nil) ;clauses that initially were mixed non-Horn clauses + (atom-hash-table (make-hash-table :test #'equal)) + (atoms-last nil) + (p-clauses-last nil) + (n-clauses-last nil) + (m1-clauses-last nil) + (m2-clauses-last nil) + (number-to-atom-hash-table (make-hash-table)) + (checkpoint-level 0 :type fixnum) + (checkpoints nil)) + +(defstruct (dp-clause + (:print-function print-dp-clause) + (:copier nil)) + (number-of-unresolved-positive-literals 0 :type fixnum) + (number-of-unresolved-negative-literals 0 :type fixnum) + (positive-literals nil :type list) + (negative-literals nil :type list) + (subsumption-mark nil) + (next nil)) + +(defstruct (dp-atom + (:print-function print-dp-atom) + (:copier nil)) + name + number + (value nil) + (contained-positively-clauses nil) + (contained-negatively-clauses nil) + (derived-from-clause nil) + (used-in-refutation -1) + (next nil) + (choice-point nil) + true-triable ;used by lookahead + false-triable ;used by lookahead + (number-of-occurrences 0 :type integer) + (checkpoints nil)) + +(defvar *default-find-all-models* 1) +(defvar *default-model-test-function* nil) +(defvar *default-dependency-check* t) +(defvar *default-pure-literal-check* t) +(defvar *default-atom-choice-function* 'choose-an-atom-of-a-shortest-positive-clause) +(defvar *default-more-units-function* nil) +(defvar *default-branch-limit* nil) +(defvar *default-time-limit* nil) +(defvar *default-minimal-models-suffice* t) +(defvar *default-minimal-models-only* nil) +(defvar *default-convert-to-clauses* nil) +(defvar *default-dimacs-cnf-format* :p) +(defvar *default-subsumption* nil) +(defvar *default-print-summary* t) +(defvar *default-print-warnings* t) + +(defvar *dependency-check*) +(defvar *more-units-function*) +(defvar *minimal-models-suffice*) +(defvar *clause-set*) +(defvar *failure-branch-count* 0) +(defvar *assignment-count* 0) +(declaim (type integer *failure-branch-count* *assignment-count*)) +(defvar *dp-start-time*) + +(defun dp-satisfiable-p (clause-set + &key + (find-all-models *default-find-all-models*) + (model-test-function *default-model-test-function*) + ((:dependency-check *dependency-check*) *default-dependency-check*) + (pure-literal-check *default-pure-literal-check*) + (atom-choice-function *default-atom-choice-function*) + ((:more-units-function *more-units-function*) *default-more-units-function*) + (branch-limit *default-branch-limit*) + (time-limit *default-time-limit*) + ((:minimal-models-suffice *minimal-models-suffice*) *default-minimal-models-suffice*) + (return-propagated-clauses nil) + (minimal-models-only *default-minimal-models-only*) + (subsumption *default-subsumption*) + (print-summary *default-print-summary*) + (print-warnings *default-print-warnings*) + ((:trace dp-tracing) dp-tracing) + ((:trace-choices dp-tracing-choices) dp-tracing-choices)) + ;; Determines satisfiability of the set of clauses in clause-set. + ;; If find-all-models argument is T, dp-satisfiable-p will return + ;; a list of all models it finds in an exhaustive search; if it is NIL, T/NIL + ;; will be returned if a model is/is not found; if it is an integer N >= 1, + ;; only the first N models will be returned; if it is an integer N <= -1, + ;; models after the first -N will be searched for and counted but not + ;; returned. + ;; + ;; DP-SATISFIABLE-P ordinarily is not guaranteed to find all models but only + ;; all minimal models (and possibly some non-minimal ones). It returns + ;; only the true atoms of a model; all others are false. A model M is + ;; minimal if for no other model M' is it the case that the true atoms + ;; of M' are a proper subset of the true atoms of M. For many types of + ;; problems (e.g., quasigroup existence and N-queens problems) all models + ;; are minimal. A set of clauses with no more positive clauses is + ;; recognized to be satisfiable under the assignment of false to all + ;; unassigned atoms. + ;; + ;; If minimal-models-suffice argument is NIL, DP-SATISFIABLE-P behavior is + ;; modified to exhaustively find assignments that explicitly satisfy every + ;; clause; false assignments are represented as negative literals in + ;; the models returned. Atoms not assigned a value can be either true + ;; or false. + ;; + ;; If minimal-models-only argument is non-NIL, only minimal models + ;; will be returned. As in Bry and Yahya's MM-SATCHMO, false + ;; assignments are considered before true ones when branching + ;; and redundant models are pruned by adding negated models as + ;; clauses. Pure-literal-check will not assign true to a pure atom. + ;; + ;; If dependency-check argument is non-NIL, a form of intelligent + ;; backtracking is used. If there are only failures below the + ;; true assignment at a choice point, and the assignment was never + ;; used to generate any of the contradictions, exploration of + ;; the false assignment will be skipped, as it will fail for + ;; the same reasons. + ;; + ;; If pure-literal-check argument is non-NIL, literals that are + ;; pure in the original set of clauses will be assigned a satisfying + ;; value. There is no checking if a literal becomes pure later. + ;; + ;; If more-units-function argument is non-nil, it names a function + ;; to be executed after unit propagation. The function may + ;; detect unsatisfiability or compute more unit clauses by + ;; additional means such as 2-closure or lookahead. + (assert-unvalued-dp-clause-set-p clause-set) + (cl:assert (or (eq t find-all-models) + (eq nil find-all-models) + (and (integerp find-all-models) + (not (zerop find-all-models)))) + (find-all-models) + "find-all-models = ~A but should be t, nil, or a nonzero integer." find-all-models) +;;(cl:assert (not (and *dependency-check* *more-units-function*)) +;; (*dependency-check* *more-units-function*) +;; "Dependency-check cannot be used with more-units-function.") + (cl:assert (not (and minimal-models-only (not *minimal-models-suffice*))) + (minimal-models-only *minimal-models-suffice*) + "Minimal-models-only cannot be used without minimal-models-suffice.") + (cl:assert (not (and pure-literal-check (not *minimal-models-suffice*))) + (pure-literal-check *minimal-models-suffice*) + "Pure-literal-check cannot be used without minimal-models-suffice.") + (let* ((*print-pretty* nil) + (models nil) models-last + (branch-count 1) + (success-branch-count 0) + (*failure-branch-count* 0) + (cutoff-branch-count 0) + (report-reaching-branch-limit print-summary) + (*assignment-count* 0) + (forced-choice-count 0) + (dp-tracing-choices (if (eq t dp-tracing) t dp-tracing-choices)) + (dp-tracing-choices-depth (if (and dp-tracing-choices + (not (eq t dp-tracing-choices)) + (>= 0 dp-tracing-choices)) + 0 + 10000)) + (*clause-set* clause-set) + start-time) + (declare (type integer branch-count success-branch-count *failure-branch-count*) + (type integer cutoff-branch-count forced-choice-count)) + (macrolet + ((process-success-branch () + `(progn + (incf success-branch-count) + (when (eq t dp-tracing) + (format t "Succeed (~D/~D)~%" success-branch-count (+ success-branch-count *failure-branch-count* cutoff-branch-count))) + (when minimal-models-only + ;; add constraint to eliminate supermodel generation + (add-model-constraint clause-set)) + (cond + ((null find-all-models) + t) + ((or (eq t find-all-models) + (plusp find-all-models) + (<= success-branch-count (- find-all-models))) + (let ((model (valued-atoms clause-set *minimal-models-suffice*))) + (when dp-tracing-models + (format t "~&Model ~D = ~A " success-branch-count model)) + (cond + ((and minimal-models-only (null model)) + (cl:assert (null models)) + (list model)) + (t + (collect model models) + (if (eql find-all-models success-branch-count) + models + nil))))) + (t + nil)))) + (process-failure-branch () + `(progn + (incf *failure-branch-count*) + (when (eq t dp-tracing) + (format t "Fail (~D/~D)~%" *failure-branch-count* (+ success-branch-count *failure-branch-count* cutoff-branch-count))) + nil)) + (process-cutoff-branch () + `(progn + (incf cutoff-branch-count) + (when (eq t dp-tracing) + (format t "Cutoff (~D/~D)~%" cutoff-branch-count (+ success-branch-count *failure-branch-count* cutoff-branch-count))) + nil))) + (labels + ((dp-satisfiable-p* (depth) + (declare (fixnum depth)) + (multiple-value-bind (atom value1 value2 chosen-clause) + ;; try value1, then value2 + (funcall atom-choice-function clause-set) + (when (and minimal-models-only (eq false value2)) + ;; try false assignment first when seeking minimal-models + (setf value1 false value2 true)) + (cond + ((eq :unsatisfiable atom) + (process-failure-branch)) + ((and branch-limit + (>= branch-count branch-limit) + (or (null time-limit) + (let ((time (run-time-since start-time))) + (cond + ((>= time time-limit) + t) + (t + (setf branch-limit (max branch-limit (ceiling (* branch-count (min 100 (/ time-limit time)))))) + nil))))) + (when report-reaching-branch-limit + (format t "~&Branch limit reached.") + (print-dp-choice-points clause-set (run-time-since start-time)) + (setf dp-tracing-choices nil) + (setf report-reaching-branch-limit nil)) + (setf time-limit nil) ;done with this now + (setf *dependency-check* nil) ;treat remaining branches as failed, not cutoff + (process-failure-branch)) + ((eq :satisfiable atom) + (if (or (null model-test-function) + (progn + (when (or (eq t dp-tracing) dp-tracing-models) + (format t "Test model ")) + (funcall model-test-function (valued-atoms clause-set *minimal-models-suffice*)))) + (process-success-branch) + (process-failure-branch))) + (t + (cl:assert (null (dp-atom-value atom)) () + "Atom ~A was chosen for splitting, but it is already ~A." + atom (dp-atom-value atom)) + (let (v (cut nil)) + ;; must make a copy of chosen-clause for trace output + ;; before making truth-value assignments + (when (and dp-tracing-choices + chosen-clause + (or (eq t dp-tracing-choices) + (< depth dp-tracing-choices-depth))) + (setf chosen-clause (decode-dp-clause chosen-clause))) + (setf (dp-atom-value atom) value1) + (setf (dp-atom-next atom) nil) + (cond + ((null value2) + (incf forced-choice-count) + (when (and dp-tracing-choices + (or (eq t dp-tracing-choices) + (< depth dp-tracing-choices-depth))) + (print-dp-trace-line depth atom value1 nil t chosen-clause)) + (setf v (assign-atoms atom)) + (cond + ((eq :unsatisfiable v) + (process-failure-branch)) + (t + (prog1 (dp-satisfiable-p* depth) + (unassign-atoms v))))) + (t + (incf branch-count) + (cond + ((and dp-tracing-choices + (or (eq t dp-tracing-choices) + (< depth dp-tracing-choices-depth))) + (print-dp-trace-line depth atom value1 branch-count nil chosen-clause)) + ((and dp-tracing (eql 0 (rem branch-count dp-tracing))) + (when (and dp-tracing-state + (eql 0 (rem branch-count (* dp-tracing dp-tracing-state)))) + (princ branch-count) + (print-dp-choice-points clause-set (run-time-since start-time))) + (princ branch-count) + (princ " ") + (force-output))) + (setf v (assign-atoms atom)) + (cond + ((if (eq :unsatisfiable v) + (process-failure-branch) + (prog2 + (setf (dp-atom-choice-point atom) branch-count) + (if (not *dependency-check*) + (prog1 (dp-satisfiable-p* (+ depth 1)) + (unassign-atoms v)) + (let ((old-success-branch-count 0) + (old-failure-branch-count 0)) + (declare (type integer old-success-branch-count old-failure-branch-count)) + (setf old-success-branch-count success-branch-count) + (setf old-failure-branch-count *failure-branch-count*) + (prog1 (dp-satisfiable-p* (+ depth 1)) + (when (and *dependency-check* + (not (<= old-failure-branch-count (dp-atom-used-in-refutation atom))) + (eql old-success-branch-count success-branch-count)) + (setf cut t)) + (unassign-atoms v)))) + (setf (dp-atom-choice-point atom) nil))) + ) + (t + (cond + ((null dp-tracing-choices) + ) + ((eq t dp-tracing-choices) + (print-dp-trace-line depth atom value2 nil t nil)) + ((< depth dp-tracing-choices-depth) + (let ((n (+ depth dp-tracing-choices))) + (when (< n dp-tracing-choices-depth) + (setf dp-tracing-choices-depth n))) + (print-dp-trace-line depth atom value2 nil t nil))) + (cond + (cut + (process-cutoff-branch)) + (t + (setf (dp-atom-value atom) value2) + (setf (dp-atom-next atom) nil) + (setf v (assign-atoms atom)) + (cond + ((eq :unsatisfiable v) + (process-failure-branch)) + (t + (prog1 (dp-satisfiable-p* depth) + (unassign-atoms v)))))))))))))))) + (when print-summary + (dp-count clause-set t)) + (when subsumption + (dp-subsumption clause-set print-summary)) + (when print-summary + (format t "~%~A version ~A control settings:" dp-prover dp-version) + (format t "~% atom-choice-function = ~A" atom-choice-function) + (format t "~% more-units-function = ~A" *more-units-function*) + (format t "~% model-test-function = ~A" model-test-function) + (format t "~% dependency-check = ~A" *dependency-check*) + (format t "~% pure-literal-check = ~A" pure-literal-check) + (format t "~% find-all-models = ~A" find-all-models) + (cond + (minimal-models-only + (format t "~% minimal-models-only = ~A" minimal-models-only)) + ((not *minimal-models-suffice*) + (format t "~% minimal-models-suffice = ~A" *minimal-models-suffice*))) + (when branch-limit + (format t "~% branch-limit = ~A" branch-limit)) + (when time-limit + (format t "~% time-limit = ~A" time-limit)) + (terpri)) + (when print-warnings + (let ((neg-pure-atoms nil) neg-pure-atoms-last + (pos-pure-atoms nil) pos-pure-atoms-last) + (dolist (atom (dp-clause-set-atoms clause-set)) + (when (and (null (dp-atom-contained-positively-clauses atom)) ;atom occurs negatively only + (dp-atom-contained-negatively-clauses atom)) + (collect atom neg-pure-atoms)) + (when (and (null (dp-atom-contained-negatively-clauses atom)) ;atom occurs positively only + (dp-atom-contained-positively-clauses atom)) + (collect atom pos-pure-atoms))) + (when neg-pure-atoms + (warn "There are no positive occurrences of atom~P ~A~{, ~A~}." + (unless (rest neg-pure-atoms) 1) + (first neg-pure-atoms) + (rest neg-pure-atoms))) + (when pos-pure-atoms + (warn "There are no negative occurrences of atom~P ~A~{, ~A~}." + (unless (rest pos-pure-atoms) 1) + (first pos-pure-atoms) + (rest pos-pure-atoms))))) + (let (time initial-units (result nil) (pure-literals nil) + (positive-pure-literal-count 0) (negative-pure-literal-count 0) + (normal-exit nil)) + (declare (type integer positive-pure-literal-count negative-pure-literal-count)) + (setf (values start-time *dp-start-time*) (run-time-since 0.0)) + ;; time-limit uses branch-limit that is raised when reached + ;; until time-limit is reached + (when time-limit + (unless branch-limit + (setf branch-limit 1000))) + (when pure-literal-check + (dolist (atom (dp-clause-set-atoms clause-set)) + (unless (dp-atom-value atom) + (cond + ((and (null (dp-atom-contained-positively-clauses atom)) ;atom occurs negatively only + (dp-atom-contained-negatively-clauses atom)) + (incf negative-pure-literal-count) + (setf (dp-atom-value atom) false) + (setf (dp-atom-next atom) pure-literals) + (setf pure-literals atom)) + ((and (null (dp-atom-contained-negatively-clauses atom)) ;atom occurs positively only + (dp-atom-contained-positively-clauses atom) + (not minimal-models-only)) + (incf positive-pure-literal-count) + (setf (dp-atom-value atom) true) + (setf (dp-atom-next atom) pure-literals) + (setf pure-literals atom))))) + (when pure-literals + (setf pure-literals (assign-atoms pure-literals)))) + (unwind-protect + (progn + (cond + ((or (eq :unsatisfiable (setf initial-units (find-unit-clauses clause-set))) + (eq :unsatisfiable (setf initial-units (assign-atoms initial-units)))) + (when return-propagated-clauses + (setf return-propagated-clauses (list nil))) + (setf result (process-failure-branch))) + (t + (when return-propagated-clauses + (setf return-propagated-clauses + (nconc (mapcan (lambda (atom) (when (eq true (dp-atom-value atom)) (list (list (dp-atom-name atom))))) (dp-clause-set-atoms clause-set)) + (mapcan (lambda (atom) (when (eq false (dp-atom-value atom)) (list (list (complementary-literal (dp-atom-name atom)))))) (dp-clause-set-atoms clause-set)) + (dp-clauses nil clause-set)))) + (setf result (dp-satisfiable-p* 0)) + (unassign-atoms initial-units))) + (when pure-literals + (unassign-atoms pure-literals)) + (setf normal-exit t)) + (setf time (run-time-since start-time)) + (unless normal-exit + (when print-summary + (format t "~&Abnormal exit.") + (print-dp-choice-points clause-set time)) + (fix-dp-clause-set clause-set)) + (when print-summary + (format t "~&Found ~D success, ~D failure, ~D cutoff, ~D total branches in ~,1F seconds." + success-branch-count + *failure-branch-count* + cutoff-branch-count + (+ success-branch-count *failure-branch-count* cutoff-branch-count) + time) + #+ignore + (format t "~%~D assignment~:P." *assignment-count*) + (when (plusp positive-pure-literal-count) + (format t "~%~D atom~:P occurred purely positively in the input." positive-pure-literal-count)) + (when (plusp negative-pure-literal-count) + (format t "~%~D atom~:P occurred purely negatively in the input." negative-pure-literal-count)) + (when (plusp forced-choice-count) + (format t "~%~D choice~:P forced." forced-choice-count)))) + (values (or result models) + success-branch-count + *failure-branch-count* + cutoff-branch-count + time + *assignment-count* + positive-pure-literal-count + negative-pure-literal-count + forced-choice-count + return-propagated-clauses)))))) + +(defun dp-satisfiable-file-p (filename &rest options + &key + (convert-to-clauses *default-convert-to-clauses*) + (dimacs-cnf-format *default-dimacs-cnf-format*) + (print-summary *default-print-summary*) + (print-warnings *default-print-warnings*) + &allow-other-keys) + (apply #'dp-satisfiable-p + (dp-insert-file filename nil + :convert-to-clauses convert-to-clauses + :dimacs-cnf-format dimacs-cnf-format + :print-summary print-summary + :print-warnings print-warnings) + (do ((x options (cddr x)) + (v nil) v-last) + ((null x) + v) + (unless (member (first x) '(:convert-to-clauses :dimacs-cnf-format)) + (collect (first x) v) + (collect (second x) v))))) + +(defun dp-insert (clause clause-set &key (print-warnings *default-print-warnings*)) + (cl:assert (not (null clause)) () "Cannot insert the empty clause.") + (if clause-set + (assert-dp-clause-set-p clause-set) + (setf clause-set (make-dp-clause-set))) + (unless (eq :safe print-warnings) + (let ((v (clause-contains-repeated-atom clause))) + (cond + ((eq :tautology v) + (when print-warnings + (warn "Complementary literals in clause ~A." clause)) + (return-from dp-insert clause-set)) + (v + (when print-warnings + (warn "Duplicate literals in clause ~A." clause)) + (setf clause (delete-duplicates clause :test #'equal)))))) + (let ((cl (make-dp-clause)) + (nlits 0) + (p 0) + (n 0) + (positive-literals nil) + (negative-literals nil) + positive-literals-last + negative-literals-last) + (dolist (lit clause) + (let* ((neg (negative-literal-p lit)) + (atom0 (or neg lit)) + (atom (if (dp-atom-p atom0) atom0 (dp-atom-named atom0 clause-set :if-does-not-exist :create)))) + (checkpoint-dp-atom atom clause-set) + (incf (dp-atom-number-of-occurrences atom)) + (incf nlits) + (cond + (neg + (unless (eq true (dp-atom-value atom)) + (incf n)) + (collect atom negative-literals) + (push cl (dp-atom-contained-negatively-clauses atom))) + (t + (unless (eq false (dp-atom-value atom)) + (incf p)) + (collect atom positive-literals) + (push cl (dp-atom-contained-positively-clauses atom)))))) + (incf (dp-clause-set-number-of-clauses clause-set)) + (incf (dp-clause-set-number-of-literals clause-set) nlits) + (when positive-literals + (setf (dp-clause-number-of-unresolved-positive-literals cl) p) + (setf (dp-clause-positive-literals cl) positive-literals)) + (when negative-literals + (setf (dp-clause-number-of-unresolved-negative-literals cl) n) + (setf (dp-clause-negative-literals cl) negative-literals)) + (cond + ((null negative-literals) + (if (dp-clause-set-p-clauses clause-set) + (let ((temp (dp-clause-set-p-clauses-last clause-set))) + (setf (dp-clause-next temp) (setf (dp-clause-set-p-clauses-last clause-set) cl))) + (setf (dp-clause-set-p-clauses clause-set) (setf (dp-clause-set-p-clauses-last clause-set) cl)))) + ((null positive-literals) + (if (dp-clause-set-n-clauses clause-set) + (let ((temp (dp-clause-set-n-clauses-last clause-set))) + (setf (dp-clause-next temp) (setf (dp-clause-set-n-clauses-last clause-set) cl))) + (setf (dp-clause-set-n-clauses clause-set) (setf (dp-clause-set-n-clauses-last clause-set) cl)))) + ((null (rest positive-literals)) + (if (dp-clause-set-m1-clauses clause-set) + (let ((temp (dp-clause-set-m1-clauses-last clause-set))) + (setf (dp-clause-next temp) (setf (dp-clause-set-m1-clauses-last clause-set) cl))) + (setf (dp-clause-set-m1-clauses clause-set) (setf (dp-clause-set-m1-clauses-last clause-set) cl)))) + (t + (if (dp-clause-set-m2-clauses clause-set) + (let ((temp (dp-clause-set-m2-clauses-last clause-set))) + (setf (dp-clause-next temp) (setf (dp-clause-set-m2-clauses-last clause-set) cl))) + (setf (dp-clause-set-m2-clauses clause-set) (setf (dp-clause-set-m2-clauses-last clause-set) cl)))))) + clause-set) + +(defun dp-insert-sorted (clause clause-set &key (print-warnings *default-print-warnings*)) + ;; clauses are not required to be sorted, so unsorted clause is inserted + (dp-insert clause clause-set :print-warnings print-warnings)) + +(defun dp-insert-wff (wff clause-set &key (print-warnings *default-print-warnings*)) + ;; convert a wff to clause form and insert the clauses + (if clause-set + (assert-dp-clause-set-p clause-set) + (setf clause-set (make-dp-clause-set))) + (wff-clauses wff (lambda (clause) (dp-insert-sorted clause clause-set :print-warnings print-warnings))) + clause-set) + +(defvar *dp-read-string*) +(defvar *dp-read-index*) + +(defun dp-read (s dimacs-cnf-format print-warnings) + ;; reads a single clause if dimacs-cnf-format = nil + ;; reads a single literal if dimacs-cnf-format = t + (loop + (cond + (dimacs-cnf-format + (multiple-value-bind (x i) + (read-from-string *dp-read-string* nil :eof :start *dp-read-index*) + (cond + ((eq :eof x) + (if (eq :eof (setf *dp-read-string* (read-line s nil :eof))) + (return :eof) + (setf *dp-read-index* 0))) + ((integerp x) + (setf *dp-read-index* i) + (return x)) + ((eql 0 *dp-read-index*) ;ignore DIMACS problem/comment line + (when print-warnings + (warn "Skipping line ~A" *dp-read-string*)) + (if (eq :eof (setf *dp-read-string* (read-line s nil :eof))) + (return :eof) + (setf *dp-read-index* 0))) + (t + (when print-warnings + (warn "Skipping noninteger ~A" x)) + (setf *dp-read-index* i))))) + (t + (let ((x (read s nil :eof))) + (cond + ((or (eq :eof x) (consp x)) + (return x)) ;no syntax checking + (print-warnings + (warn "Skipping nonclause ~A" x)))))))) + +(defun dp-insert-file (filename clause-set + &key + (convert-to-clauses *default-convert-to-clauses*) + (dimacs-cnf-format *default-dimacs-cnf-format*) + (print-summary *default-print-summary*) + (print-warnings *default-print-warnings*)) + (let ((start-time (run-time-since 0.0)) (nclauses 0) (nlits 0)) + (declare (type integer nclauses nlits)) + (if clause-set + (assert-dp-clause-set-p clause-set) + (setf clause-set (make-dp-clause-set))) + (when print-summary + (format t "~2%Problem from file ~A:" filename)) + (with-open-file (s filename :direction :input) + (cond + (dimacs-cnf-format + (let ((*dp-read-string* "") (*dp-read-index* 0) (lits nil)) + (loop + (let ((x (dp-read s t print-warnings))) + (cond + ((eq :eof x) + (return)) + ((eql 0 x) + (when lits + (incf nclauses) + (incf nlits (length lits)) + (dp-insert-sorted (nreverse lits) clause-set :print-warnings print-warnings) + (setf lits nil))) + (t + (push x lits))))) + (when lits + (setf lits (nreverse lits)) + (when print-warnings + (warn "Last clause ~A in file not followed by 0." lits)) + (incf nclauses) + (incf nlits (length lits)) + (dp-insert-sorted lits clause-set :print-warnings print-warnings)))) + (t + (loop + (let ((x (dp-read s nil print-warnings))) + (cond + ((eq :eof x) + (return)) + (convert-to-clauses + (dp-insert-wff x clause-set :print-warnings print-warnings)) ;nclauses, nlits not incremented as they should be + (t + (incf nclauses) + (incf nlits (length x)) + (dp-insert-sorted x clause-set :print-warnings print-warnings)))))))) + (when print-summary + (format t "~&Input from file ~D clauses with ~D literals in ~,1F seconds." + nclauses + nlits + (run-time-since start-time))) + clause-set)) + +(defmacro clause-contains-true-positive-literal (clause) + (let ((atom (gensym))) + `(dolist (,atom (dp-clause-positive-literals ,clause) nil) + (when (eq true (dp-atom-value ,atom)) + (return t))))) + +(defmacro clause-contains-true-negative-literal (clause) + (let ((atom (gensym))) + `(dolist (,atom (dp-clause-negative-literals ,clause)) + (when (eq false (dp-atom-value ,atom)) + (return t))))) + +(defun dp-horn-clause-set-p (clause-set) + ;; never more than one positive literal in a clause + ;; (unless the clause is true in the current truth assignment) + (and (do ((clause (dp-clause-set-p-clauses clause-set) (dp-clause-next clause))) + ((null clause) + t) + (when (and (< 1 (dp-clause-number-of-unresolved-positive-literals clause)) + (not (clause-contains-true-positive-literal clause))) + (return nil))) + (do ((clause (dp-clause-set-m2-clauses clause-set) (dp-clause-next clause))) + ((null clause) + t) + (when (and (< 1 (dp-clause-number-of-unresolved-positive-literals clause)) + (not (clause-contains-true-positive-literal clause)) + (not (clause-contains-true-negative-literal clause))) + (return nil))))) + +(defun dp-count (clause-set &optional print-p) + ;; (dp-count clause-set) returns and optionally prints the + ;; clause and literal count of clauses stored in clause-set + (let ((nclauses 0) (nliterals 0) (natoms 0) (assigned nil)) + (when clause-set + (dolist (atom (dp-clause-set-atoms clause-set)) + (when (or (dp-atom-contained-positively-clauses atom) ;atom appears in clause-set + (dp-atom-contained-negatively-clauses atom)) + (if (dp-atom-value atom) + (setf assigned t) + (incf natoms)))) + (cond + ((not assigned) + (setf nclauses (dp-clause-set-number-of-clauses clause-set)) + (setf nliterals (dp-clause-set-number-of-literals clause-set))) + (t + (do ((clause (dp-clause-set-p-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (clause-contains-true-positive-literal clause) + (incf nclauses) + (incf nliterals (dp-clause-number-of-unresolved-positive-literals clause)))) + (do ((clause (dp-clause-set-n-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (clause-contains-true-negative-literal clause) + (incf nclauses) + (incf nliterals (dp-clause-number-of-unresolved-negative-literals clause)))) + (do ((clause (dp-clause-set-m1-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (or (clause-contains-true-positive-literal clause) + (clause-contains-true-negative-literal clause)) + (incf nclauses) + (incf nliterals (dp-clause-number-of-unresolved-positive-literals clause)) + (incf nliterals (dp-clause-number-of-unresolved-negative-literals clause)))) + (do ((clause (dp-clause-set-m2-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (or (clause-contains-true-positive-literal clause) + (clause-contains-true-negative-literal clause)) + (incf nclauses) + (incf nliterals (dp-clause-number-of-unresolved-positive-literals clause)) + (incf nliterals (dp-clause-number-of-unresolved-negative-literals clause))))))) + (when print-p + (format t "~&Clause set contains ~D clauses with ~D literals formed from ~D atoms~A." + nclauses nliterals natoms (if (stringp print-p) print-p ""))) + (values nclauses nliterals natoms))) + +(defun dp-clauses (map-fun clause-set &optional decode-fun) + ;; either return or apply map-fun to all clauses in clause-set + (when clause-set + (cond + (map-fun + (do ((clause (dp-clause-set-p-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (clause-contains-true-positive-literal clause) + (funcall map-fun (decode-dp-clause clause decode-fun)))) + (do ((clause (dp-clause-set-n-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (clause-contains-true-negative-literal clause) + (funcall map-fun (decode-dp-clause clause decode-fun)))) + (do ((clause (dp-clause-set-m1-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (or (clause-contains-true-positive-literal clause) + (clause-contains-true-negative-literal clause)) + (funcall map-fun (decode-dp-clause clause decode-fun)))) + (do ((clause (dp-clause-set-m2-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (or (clause-contains-true-positive-literal clause) + (clause-contains-true-negative-literal clause)) + (funcall map-fun (decode-dp-clause clause decode-fun))))) + (t + (let ((result nil) result-last) + (do ((clause (dp-clause-set-p-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (clause-contains-true-positive-literal clause) + (collect (decode-dp-clause clause decode-fun) result))) + (do ((clause (dp-clause-set-n-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (clause-contains-true-negative-literal clause) + (collect (decode-dp-clause clause decode-fun) result))) + (do ((clause (dp-clause-set-m1-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (or (clause-contains-true-positive-literal clause) + (clause-contains-true-negative-literal clause)) + (collect (decode-dp-clause clause decode-fun) result))) + (do ((clause (dp-clause-set-m2-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (unless (or (clause-contains-true-positive-literal clause) + (clause-contains-true-negative-literal clause)) + (collect (decode-dp-clause clause decode-fun) result))) + result))))) + +(defun dp-output-clauses-to-file (filename clause-set &key (dimacs-cnf-format *default-dimacs-cnf-format*)) + ;; write clauses in clause-set to a file + (with-open-file (s filename :direction :output :if-exists :new-version) + (cond + (dimacs-cnf-format + (when (eq :p dimacs-cnf-format) + (format s "p cnf ~D ~D~%" (dp-clause-set-number-of-atoms clause-set) (dp-count clause-set))) + (dp-clauses (lambda (clause) + (dolist (lit clause) + (princ lit s) + (princ " " s)) + (princ 0 s) + (terpri s)) + clause-set + (if (dolist (atom (dp-clause-set-atoms clause-set) t) + (unless (and (integerp (dp-atom-name atom)) + (plusp (dp-atom-name atom))) + (return nil))) + nil + #'dp-atom-number))) + (t + (dp-clauses (lambda (clause) (prin1 clause s) (terpri s)) clause-set)))) + nil) + +(defun assert-dp-clause-set-p (clause-set) + (cl:assert (dp-clause-set-p clause-set) () "~S is not a dp-clause-set." clause-set)) + +(defun assert-unvalued-dp-clause-set-p (clause-set) + (assert-dp-clause-set-p clause-set) + (cl:assert (dolist (atom (dp-clause-set-atoms clause-set) t) + (when (dp-atom-value atom) + (return nil))))) + +(defun add-model-constraint (clause-set) + ;; for nonredundant generation of minimal models, + ;; add clause of negations of atoms true in model + (let ((cl (make-dp-clause)) + (nlits 0) + (negative-literals nil) + negative-literals-last) + (dolist (atom (dp-clause-set-atoms clause-set)) + (when (eq true (dp-atom-value atom)) + (checkpoint-dp-atom atom clause-set) + (incf (dp-atom-number-of-occurrences atom)) + (incf nlits) + (collect atom negative-literals) + (push cl (dp-atom-contained-negatively-clauses atom)))) + (when negative-literals + (incf (dp-clause-set-number-of-clauses clause-set)) + (incf (dp-clause-set-number-of-literals clause-set) nlits) + (setf (dp-clause-negative-literals cl) negative-literals) + (if (dp-clause-set-n-clauses clause-set) + (let ((temp (dp-clause-set-n-clauses-last clause-set))) + (setf (dp-clause-next temp) + (setf (dp-clause-set-n-clauses-last clause-set) cl))) + (setf (dp-clause-set-n-clauses clause-set) + (setf (dp-clause-set-n-clauses-last clause-set) cl)))))) + +(defun valued-atoms (clause-set &optional only-true-atoms) + (let ((result nil) result-last) + (dolist (atom (dp-clause-set-atoms clause-set)) + (let ((value (dp-atom-value atom))) + (when (and (if only-true-atoms (eq true value) value) + (or (dp-atom-contained-positively-clauses atom) ;atom appears in clause-set + (dp-atom-contained-negatively-clauses atom))) + (collect (if (eq true value) + (dp-atom-name atom) + (complementary-literal (dp-atom-name atom))) + result)))) + result)) + +(defun dp-atom-named (x clause-set &key (if-does-not-exist :error)) + (cl:assert (and (not (null x)) (not (eql 0 x))) () "~A cannot be used as an atomic formula." x) + (let ((table (dp-clause-set-atom-hash-table clause-set))) + (or (gethash x table) + (ecase if-does-not-exist + (:create + (let ((atom (make-dp-atom + :name x + :number (cond + ((integerp x) + (incf (dp-clause-set-number-of-atoms clause-set)) + (cl:assert (null (gethash x (dp-clause-set-number-to-atom-hash-table clause-set))) () + "Atom named ~A cannot be atom number ~A." x x) + x) + (t + (incf (dp-clause-set-number-of-atoms clause-set))))))) + (collect atom (dp-clause-set-atoms clause-set)) + (setf (gethash (dp-atom-number atom) (dp-clause-set-number-to-atom-hash-table clause-set)) atom) + (setf (gethash x table) atom))) + (:error + (error "Unknown atom ~A." x)) + ((nil) + nil))))) + +(defun negative-literal-p (lit) + ;; if 'lit' is a negative literal, return its atom + ;; if 'lit' is a positive literal, return 'nil' + (cond + ((numberp lit) ;positive number is atomic formula + (and (minusp lit) (- lit))) ;negative number is its negation + ((consp lit) + (and (eq 'not (first lit)) (second lit))) ;(not x) is negation of atomic formula x + (t + nil))) ;everything else is an atomic formula + +(defun complementary-literal (lit) + (cond + ((numberp lit) + (- lit)) + ((and (consp lit) (eq 'not (first lit))) + (second lit)) + (t + (list 'not lit)))) + +(defun clause-contains-repeated-atom (clause) + (do* ((dup nil) + (lits clause (rest lits)) + (lit (first lits) (first lits)) + (clit (complementary-literal lit) (complementary-literal lit))) + ((null (rest lits)) + dup) + (dolist (lit2 (rest lits)) + (cond + ((equal lit lit2) + (setf dup t)) + ((equal clit lit2) + (return-from clause-contains-repeated-atom :tautology)))))) + +(defun print-dp-clause-set3 (clause-set &optional (stream *standard-output*) depth) + (declare (ignore depth)) + (print-unreadable-object (clause-set stream :type t :identity t) + (princ (dp-clause-set-number-of-atoms clause-set) stream) + (princ " atoms " stream) + (princ (dp-clause-set-number-of-clauses clause-set) stream) + (princ " clauses" stream))) + +(defun decode-dp-clause (clause &optional decode-fun) + (let ((result nil) result-last) + (dolist (atom (dp-clause-negative-literals clause)) + (unless (dp-atom-value atom) + (collect (complementary-literal + (if decode-fun + (funcall decode-fun atom) + (dp-atom-name atom))) + result))) + (dolist (atom (dp-clause-positive-literals clause)) + (unless (dp-atom-value atom) + (collect (if decode-fun + (funcall decode-fun atom) + (dp-atom-name atom)) + result))) + result)) + +(defun print-dp-clause (clause &optional stream depth) + (declare (ignore depth)) + (prin1 (decode-dp-clause clause) stream) + clause) + +(defun print-dp-atom (atom &optional stream depth) + (declare (ignore depth)) + (prin1 (dp-atom-name atom) stream) + atom) + +(defun print-dp-trace-line (depth atom value branch-count xp chosen-clause) + (format t "~&~12A" (or branch-count "")) + (dotimes (i depth) + (princ (if (eql 4 (rem i 5)) "| " ": "))) + (princ (dp-atom-name atom)) + (princ (if (eq true value) "=true" "=false")) + (princ (if xp "! " " ")) + (when chosen-clause + (princ "for clause ") + (princ chosen-clause) + (princ " "))) + +(defun print-dp-choice-points (clause-set time) + (let ((atoms nil)) + (dolist (atom (dp-clause-set-atoms clause-set)) + (when (dp-atom-choice-point atom) + (push atom atoms))) + (cond + ((null atoms) + (format t "~2&--- no current choice points ")) + (t + (format t "~2&--- ~D current choice point~:P:" (length atoms)) + (let ((depth 0)) + (dolist (atom (sort atoms #'< :key #'dp-atom-choice-point)) + (print-dp-trace-line depth atom (dp-atom-value atom) (dp-atom-choice-point atom) nil nil) + (incf depth))))) + (format t "~%--- after ~,1F seconds " time))) + +(defvar float-internal-time-units-per-second (float internal-time-units-per-second)) + +(defun run-time-since (start-time) + (let ((ticks (get-internal-run-time))) + (values (- (/ ticks float-internal-time-units-per-second) start-time) ticks))) + +(defmacro first-nontrue-atom (atoms) + `(dolist (atom ,atoms) + (unless (eq true (dp-atom-value atom)) + (return atom)))) + +(defmacro first-nonfalse-atom (atoms) + `(dolist (atom ,atoms) + (unless (eq false (dp-atom-value atom)) + (return atom)))) + +(defmacro first-unassigned-atom (atoms) + `(dolist (atom ,atoms) + (unless (dp-atom-value atom) + (return atom)))) + +(defmacro nth-unassigned-atom (n atoms) + `(let ((k ,n)) + (dolist (atom ,atoms) + (unless (dp-atom-value atom) + (if (eql 0 k) (return atom) (decf k)))))) + +(defun mark-used-atoms (clause) + (let ((mark *failure-branch-count*)) + (labels + ((mark-used-atoms (clause) + (let (c) + (dolist (atom (dp-clause-positive-literals clause)) + (unless (eql mark (dp-atom-used-in-refutation atom)) + (setf (dp-atom-used-in-refutation atom) mark) + (when (setf c (dp-atom-derived-from-clause atom)) + (mark-used-atoms c)))) + (dolist (atom (dp-clause-negative-literals clause)) + (unless (eql mark (dp-atom-used-in-refutation atom)) + (setf (dp-atom-used-in-refutation atom) mark) + (when (setf c (dp-atom-derived-from-clause atom)) + (mark-used-atoms c))))))) + (mark-used-atoms clause) + (make-lemma mark nil)))) + +(defun make-lemma (fbc exclude-atom) + ;; incomplete + (flet ((lemma-atoms () + (let ((result nil) result-last) + (dolist (atom (dp-clause-set-atoms *clause-set*)) + (let ((value (dp-atom-value atom))) + (when (and value + (or (dp-atom-contained-positively-clauses atom) ;atom appears in clause-set + (dp-atom-contained-negatively-clauses atom)) + ;;(dp-atom-choice-point atom) + (not (eq exclude-atom atom)) + (not (dp-atom-derived-from-clause atom)) + (<= fbc (dp-atom-used-in-refutation atom))) + (collect (if (eq true value) + (complementary-literal (dp-atom-name atom)) + (dp-atom-name atom)) + result)))) + result))) + (when (eq t dp-tracing) + (format t "Lemma ~A " (lemma-atoms))))) + +(defvar *last-tried-atom*) + +(defun assign-atoms (assignments) + ;; apply assigments and do all resulting unit propagation + ;; if result is unsatisfiable, undo all changes and return :unsatisfiable + ;; otherwise return list of assignments made; unassign-atoms can undo + ;; the assignments + (let ((compute-more-units *more-units-function*)) + (macrolet + ((undo-assignments-and-exit (&optional no-assignments-for-this-atom) + `(progn + ,@(unless no-assignments-for-this-atom + (list `(unassign-atom atom clause))) + (unassign-atoms assignments-done) + (if *dependency-check* + (do ((a assignments (dp-atom-next a))) + ((null a)) + (setf (dp-atom-value a) nil) + (setf (dp-atom-derived-from-clause a) nil)) + (do ((a assignments (dp-atom-next a))) + ((null a)) + (setf (dp-atom-value a) nil))) + #+ignore + (incf *assignment-count* assignment-count) + (return-from assign-atoms :unsatisfiable))) + (new-unit-clause (val) + (cl:assert (or (eq 'true val) (eq 'false val))) + `(let ((at ,(if (eq 'true val) + `(first-nonfalse-atom (dp-clause-positive-literals clause)) + `(first-nontrue-atom (dp-clause-negative-literals clause))))) + (cond + ((null at) + (when *dependency-check* + (mark-used-atoms clause)) + (undo-assignments-and-exit)) + ((null (dp-atom-value at)) + (setf compute-more-units *more-units-function*) + (setf (dp-atom-value at) ,val) + (when *dependency-check* + (setf (dp-atom-derived-from-clause at) clause)) + ,@(if (eq 'true val) ;true assignments at front, false at end + `((setf (dp-atom-next at) assignments) + (when (null assignments) + (setf last-assignment at)) + (setf assignments at)) + `((setf (dp-atom-next at) nil) + (if (null assignments) + (setf assignments at) + (setf (dp-atom-next last-assignment) at)) + (setf last-assignment at))))))) + (resolve (val) + (cl:assert (or (eq 'true val) (eq 'false val))) + `(dolist (clause ,(if (eq 'true val) + `(dp-atom-contained-negatively-clauses atom) + `(dp-atom-contained-positively-clauses atom))) + (cond + ((eql 0 + (setf k1 (decf ,(if (eq 'true val) + `(dp-clause-number-of-unresolved-negative-literals clause) + `(dp-clause-number-of-unresolved-positive-literals clause))))) + (cond + ((eql 0 + (setf k2 ,(if (eq 'true val) + `(dp-clause-number-of-unresolved-positive-literals clause) + `(dp-clause-number-of-unresolved-negative-literals clause)))) + (when *dependency-check* + (mark-used-atoms clause)) + (undo-assignments-and-exit)) + ((eql 1 k2) + (new-unit-clause ,val)))) + ((and (eql 1 k1) + (eql 0 + ,(if (eq 'true val) + `(dp-clause-number-of-unresolved-positive-literals clause) + `(dp-clause-number-of-unresolved-negative-literals clause)))) + (new-unit-clause ,(if (eq 'true val) 'false 'true))))))) + (let ((k1 0) (k2 0) #+ignore (assignment-count 0) (assignments-done nil) + (*last-tried-atom* nil) ;used by lookahead + atom value last-assignment) + (declare (fixnum k1 k2 #+ignore assignment-count)) + (loop + (when assignments ;find last assignment + (do ((a assignments next) + (next (dp-atom-next assignments) (dp-atom-next next))) + ((null next) + (setf last-assignment a)))) + (loop + (when (null assignments) + (return)) + (setf atom assignments) + (setf assignments (dp-atom-next atom)) + (setf value (dp-atom-value atom)) + #+ignore + (incf assignment-count) + (if (eq true value) (resolve true) (resolve false)) + (setf (dp-atom-next atom) assignments-done) + (setf assignments-done atom)) + (cond ;find more assignments? + ((and compute-more-units + (multiple-value-bind (result call-again) + (funcall compute-more-units *clause-set*) + (cond + ((eq :unsatisfiable result) + (undo-assignments-and-exit t)) + (t + (unless call-again + (setf compute-more-units nil)) + (setf assignments result))))) + ) ;make the new assignments + (t + (return)))) ;no more assignments + #+ignore + (incf *assignment-count* assignment-count) + assignments-done)))) + +(defun unassign-atom (atom stop-clause) + (when *dependency-check* + (setf (dp-atom-derived-from-clause atom) nil)) + (if (eq true (dp-atom-value atom)) + (dolist (clause (dp-atom-contained-negatively-clauses atom)) + (incf (dp-clause-number-of-unresolved-negative-literals clause)) + (when (eq stop-clause clause) + (return))) + (dolist (clause (dp-atom-contained-positively-clauses atom)) + (incf (dp-clause-number-of-unresolved-positive-literals clause)) + (when (eq stop-clause clause) + (return)))) + (setf (dp-atom-value atom) nil)) + +(defun unassign-atoms (assignments) + (do ((atom assignments (dp-atom-next atom))) + ((null atom)) + (when *dependency-check* + (setf (dp-atom-derived-from-clause atom) nil)) + (if (eq true (dp-atom-value atom)) + (dolist (clause (dp-atom-contained-negatively-clauses atom)) + (incf (dp-clause-number-of-unresolved-negative-literals clause))) + (dolist (clause (dp-atom-contained-positively-clauses atom)) + (incf (dp-clause-number-of-unresolved-positive-literals clause)))) + (setf (dp-atom-value atom) nil))) + +(defun find-unit-clauses (clause-set) + ;; this is only used to find unit clauses in the initial set of clauses, + ;; assign-atoms detects and simplifies by derived unit clauses + (let ((assignments nil)) + (macrolet + ((add-assignment (atom value) + (cl:assert (or (eq 'true value) (eq 'false value))) + `(let ((atom ,atom)) + (cond + ((null atom) + (do ((a assignments (dp-atom-next a))) + ((null a)) + (setf (dp-atom-value a) nil) + (setf (dp-atom-derived-from-clause a) nil)) + (return-from find-unit-clauses :unsatisfiable)) + ((null (dp-atom-value atom)) + (setf (dp-atom-value atom) ,value) + (setf (dp-atom-derived-from-clause atom) clause) + (setf (dp-atom-next atom) assignments) + (setf assignments atom)))))) + (do ((clause (dp-clause-set-p-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (when (eql 1 (dp-clause-number-of-unresolved-positive-literals clause)) + (add-assignment (first-nonfalse-atom (dp-clause-positive-literals clause)) true))) + (do ((clause (dp-clause-set-n-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (when (eql 1 (dp-clause-number-of-unresolved-negative-literals clause)) + (add-assignment (first-nontrue-atom (dp-clause-negative-literals clause)) false)))) + assignments)) + +(defun choose-an-atom-of-a-shortest-clause* (clause-set positive option randomly) + ;; assume every clause has at least two literals + ;; return :satisfiable if there are no more (positive) clauses + (let ((shortest-length 10000) (length 0) (chosen-clause nil) + (chosen-atom nil) (nfound 0) (noccurrences 0)) + (declare (fixnum shortest-length length)) + (macrolet + ((check-clause () + `(progn + (setf length (if positive + (dp-clause-number-of-unresolved-positive-literals clause) + (+ (dp-clause-number-of-unresolved-positive-literals clause) + (dp-clause-number-of-unresolved-negative-literals clause)))) + (when (and (if (and (eq :none option) (not randomly)) + (> shortest-length length 1) + (>= shortest-length length 2)) + (not (clause-contains-true-positive-literal clause)) + (or positive (not (clause-contains-true-negative-literal clause)))) + (ecase option + (:none + (if randomly + (cond + ((eql length shortest-length) + (when (eql 0 (random (incf nfound))) + (setf chosen-clause clause))) + (t + (setf chosen-clause clause) + (setf shortest-length length) + (setf nfound 1))) + (cond + ((eql 2 length) + (return-from choose-an-atom-of-a-shortest-clause* + (cond + ((setf chosen-atom (first-unassigned-atom (dp-clause-positive-literals clause))) + (values chosen-atom true false clause)) + (t + (setf chosen-atom (first-unassigned-atom (dp-clause-negative-literals clause))) + (values chosen-atom false true clause))))) + (t + (setf chosen-clause clause) + (setf shortest-length length))))) + (:with-most-occurrences + (unless (eql length shortest-length) + (setf shortest-length length) + (setf noccurrences 0)) + (dolist (atom (dp-clause-positive-literals clause)) + (when (null (dp-atom-value atom)) + (let ((c (dp-atom-number-of-occurrences atom))) + (cond + ((and randomly (eql c noccurrences)) + (when (eql 0 (random (incf nfound))) + (setf chosen-clause clause) + (setf chosen-atom atom))) + ((> c noccurrences) + (setf chosen-clause clause) + (setf chosen-atom atom) + (setf noccurrences c) + (setf nfound 1)))))) + (unless positive + (dolist (atom (dp-clause-negative-literals clause)) + (when (null (dp-atom-value atom)) + (let ((c (dp-atom-number-of-occurrences atom))) + (cond + ((and randomly (eql c noccurrences)) + (when (eql 0 (random (incf nfound))) + (setf chosen-clause clause) + (setf chosen-atom atom))) + ((> c noccurrences) + (setf chosen-clause clause) + (setf chosen-atom atom) + (setf noccurrences c) + (setf nfound 1))))))))))))) + (do ((clause (dp-clause-set-p-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (check-clause)) + (do ((clause (dp-clause-set-m2-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (when (or (not positive) (eql 0 (dp-clause-number-of-unresolved-negative-literals clause))) + (check-clause))) + (unless positive + (do ((clause (dp-clause-set-m1-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (check-clause)) + (do ((clause (dp-clause-set-n-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (check-clause))) + (cond + (chosen-clause + (case option + (:none + (if randomly + (let ((n (random shortest-length))) + (if positive + (values (nth-unassigned-atom + n (dp-clause-positive-literals chosen-clause)) + true false chosen-clause) + (let ((m (dp-clause-number-of-unresolved-positive-literals chosen-clause))) + (if (< n m) + (values (nth-unassigned-atom + n (dp-clause-positive-literals chosen-clause)) + true false chosen-clause) + (values (nth-unassigned-atom + (- n m) (dp-clause-negative-literals chosen-clause)) + false true chosen-clause))))) + (cond + ((setf chosen-atom (first-unassigned-atom + (dp-clause-positive-literals chosen-clause))) + (values chosen-atom true false chosen-clause)) + (t + (setf chosen-atom (first-unassigned-atom + (dp-clause-negative-literals chosen-clause))) + (values chosen-atom false true chosen-clause))))) + (:with-most-occurrences + (if (or positive + (member chosen-atom + (dp-clause-positive-literals chosen-clause))) + (values chosen-atom true false chosen-clause) + (values chosen-atom false true chosen-clause))))) + ((and positive (not *minimal-models-suffice*)) + (choose-an-atom-of-a-shortest-clause* clause-set nil option randomly)) + (t + :satisfiable))))) + +(defun choose-an-atom-of-a-shortest-clause (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set nil :none nil)) + +(defun choose-an-atom-of-a-shortest-clause-randomly (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set nil :none t)) + +(defun choose-an-atom-of-a-shortest-clause-with-most-occurrences (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set nil :with-most-occurrences nil)) + +(defun choose-an-atom-of-a-shortest-clause-with-most-occurrences-randomly (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set nil :with-most-occurrences t)) + +(defun choose-an-atom-of-a-shortest-positive-clause (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set t :none nil)) + +(defun choose-an-atom-of-a-shortest-positive-clause-randomly (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set t :none t)) + +(defun choose-an-atom-of-a-shortest-positive-clause-with-most-occurrences (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set t :with-most-occurrences nil)) + +(defun choose-an-atom-of-a-shortest-positive-clause-with-most-occurrences-randomly (clause-set) + (choose-an-atom-of-a-shortest-clause* clause-set t :with-most-occurrences t)) + +(defun fix-dp-clause-set (clause-set) + ;; restores a clause-set to its original state if the user aborts out of dp-satisfiable-p + (assert-dp-clause-set-p clause-set) + (dolist (atom (dp-clause-set-atoms clause-set)) + (setf (dp-atom-value atom) nil) + (setf (dp-atom-derived-from-clause atom) nil) + (setf (dp-atom-choice-point atom) nil)) + (do ((clause (dp-clause-set-p-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (setf (dp-clause-number-of-unresolved-positive-literals clause) + (length (dp-clause-positive-literals clause)))) + (do ((clause (dp-clause-set-n-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (setf (dp-clause-number-of-unresolved-negative-literals clause) + (length (dp-clause-negative-literals clause)))) + (do ((clause (dp-clause-set-m1-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (setf (dp-clause-number-of-unresolved-positive-literals clause) 1) + (setf (dp-clause-number-of-unresolved-negative-literals clause) + (length (dp-clause-negative-literals clause)))) + (do ((clause (dp-clause-set-m2-clauses clause-set) (dp-clause-next clause))) + ((null clause)) + (setf (dp-clause-number-of-unresolved-positive-literals clause) + (length (dp-clause-positive-literals clause))) + (setf (dp-clause-number-of-unresolved-negative-literals clause) + (length (dp-clause-negative-literals clause)))) + nil) + +(defun checkpoint-dp-clause-set (clause-set) + ;; creates a checkpoint record for clause-set to allow later clause insertions to be undone + ;; and returns the level of the new checkpoint + (assert-dp-clause-set-p clause-set) + (push (list nil ;checkpointed atoms + (dp-clause-set-number-of-clauses clause-set) + (dp-clause-set-number-of-literals clause-set) + (dp-clause-set-p-clauses-last clause-set) + (dp-clause-set-n-clauses-last clause-set) + (dp-clause-set-m1-clauses-last clause-set) + (dp-clause-set-m2-clauses-last clause-set)) + (dp-clause-set-checkpoints clause-set)) + (incf (dp-clause-set-checkpoint-level clause-set))) + +(defun restore-dp-clause-set (clause-set) + ;; restores a clause-set to an earlier state undoing effects of clause insertions + (assert-dp-clause-set-p clause-set) + (cl:assert (not (eql 0 (dp-clause-set-checkpoint-level clause-set))) () + "Clause set has no checkpoint.") + (let ((l (first (dp-clause-set-checkpoints clause-set)))) + (dolist (atom (prog1 (first l) (setf (first l) nil) (setf l (rest l)))) + (restore-dp-atom atom)) + (setf (dp-clause-set-number-of-clauses clause-set) (pop l)) + (setf (dp-clause-set-number-of-literals clause-set) (pop l)) + (let ((v (pop l))) + (cond + (v + (setf (dp-clause-set-p-clauses-last clause-set) v) + (setf (dp-clause-next v) nil)) + (t + (setf (dp-clause-set-p-clauses clause-set) nil) + (setf (dp-clause-set-p-clauses-last clause-set) nil)))) + (let ((v (pop l))) + (cond + (v + (setf (dp-clause-set-n-clauses-last clause-set) v) + (setf (dp-clause-next v) nil)) + (t + (setf (dp-clause-set-n-clauses clause-set) nil) + (setf (dp-clause-set-n-clauses-last clause-set) nil)))) + (let ((v (pop l))) + (cond + (v + (setf (dp-clause-set-m1-clauses-last clause-set) v) + (setf (dp-clause-next v) nil)) + (t + (setf (dp-clause-set-m1-clauses clause-set) nil) + (setf (dp-clause-set-m1-clauses-last clause-set) nil)))) + (let ((v (first l))) + (cond + (v + (setf (dp-clause-set-m2-clauses-last clause-set) v) + (setf (dp-clause-next v) nil)) + (t + (setf (dp-clause-set-m2-clauses clause-set) nil) + (setf (dp-clause-set-m2-clauses-last clause-set) nil))))) + nil) + +(defun uncheckpoint-dp-clause-set (clause-set) + ;; removes most recent checkpoint record + ;; and returns the level of the removed checkpoint + (assert-dp-clause-set-p clause-set) + (let ((level (dp-clause-set-checkpoint-level clause-set))) + (cl:assert (not (eql 0 level)) () + "Clause set has no checkpoint.") + (let* ((level2 (- level 1)) + (checkpoint2 (dp-clause-set-checkpoints clause-set)) + (checkpoint (first checkpoint2))) + (setf checkpoint2 (first (setf (dp-clause-set-checkpoints clause-set) (rest checkpoint2)))) + (dolist (atom (first checkpoint)) + (let ((acps (dp-atom-checkpoints atom))) + (cond + ((null checkpoint2) + (setf (dp-atom-checkpoints atom) nil)) + ((eql level2 (first (second acps))) + (setf (dp-atom-checkpoints atom) (rest acps))) + (t + (push atom (first checkpoint2)) + (setf (first (first acps)) level2))))) + (setf (dp-clause-set-checkpoint-level clause-set) level2)) + level)) + +(defun checkpoint-dp-atom (atom clause-set) + (let ((level (dp-clause-set-checkpoint-level clause-set))) + (unless (eql 0 level) + (let ((checkpoints (dp-atom-checkpoints atom))) + (unless (eql level (first (first checkpoints))) ;already checkpointed + (push atom (first (first (dp-clause-set-checkpoints clause-set)))) + (setf (dp-atom-checkpoints atom) + (cons (list level + (dp-atom-contained-positively-clauses atom) + (dp-atom-contained-negatively-clauses atom) + (dp-atom-number-of-occurrences atom)) + checkpoints))))))) + +(defun restore-dp-atom (atom) + (let ((l (rest (pop (dp-atom-checkpoints atom))))) + (setf (dp-atom-contained-positively-clauses atom) (pop l)) + (setf (dp-atom-contained-negatively-clauses atom) (pop l)) + (setf (dp-atom-number-of-occurrences atom) (first l)))) + +;;; lookahead-true, lookahead-false, +;;; lookahead-true-false, lookahead-false-true +;;; can be used as more-units-function argument to dp-satisfiable-p +;;; in LDPP' to constrain search by lookahead +;;; +;;; they make trial assignments of truth values to each atom; +;;; if unit propagation demonstrates that the assignment yields an +;;; unsatisfiable set of clauses, the opposite truth value is assigned + +(defvar *verbose-lookahead* nil) +(defvar *verbose-lookahead-show-count* nil) + +(defun lookahead-true (clause-set) + ;; lookahead with true trial assignments + (lookahead* clause-set true *verbose-lookahead*)) + +(defun lookahead-false (clause-set) + ;; lookahead with false trial assignments + (lookahead* clause-set false *verbose-lookahead*)) + +(defun lookahead-true-false (clause-set) + ;; lookahead with true trial assignments, + ;; then lookahead with false trial assignments + (lookahead* clause-set :true-false *verbose-lookahead*)) + +(defun lookahead-false-true (clause-set) + ;; lookahead with false trial assignments, + ;; then lookahead with true trial assignments + (lookahead* clause-set :false-true *verbose-lookahead*)) + +(defvar values-and-passes1 (list (cons true :after-last-tried-atom) + (cons true :before-last-tried-atom))) +(defvar values-and-passes2 (list (cons false :after-last-tried-atom) + (cons false :before-last-tried-atom))) +(defvar values-and-passes3 (list (cons true :after-last-tried-atom) + (cons true :before-last-tried-atom) + (cons false :atoms-in-order))) +(defvar values-and-passes4 (list (cons false :after-last-tried-atom) + (cons false :before-last-tried-atom) + (cons true :atoms-in-order))) +(defvar values-and-passes5 (list (cons true :atoms-in-order))) +(defvar values-and-passes6 (list (cons false :atoms-in-order))) +(defvar values-and-passes7 (list (cons true :atoms-in-order) + (cons false :atoms-in-order))) +(defvar values-and-passes8 (list (cons false :atoms-in-order) + (cons true :atoms-in-order))) + +(defun lookahead* (clause-set lookahead-values verbose) + (let ((*more-units-function* nil) ;don't apply lookahead recursively + (ntrials 0)) + (when verbose + (if (null *last-tried-atom*) + (format t "~%LOOKAHEAD call ") + (format t "~% call ")) + (format t "with ~D unassigned atoms " (count-if-not #'dp-atom-value (dp-clause-set-atoms clause-set)))) + ;; initialize triable-atom slots + (cond + ((eq true lookahead-values) + (dolist (atom (dp-clause-set-atoms clause-set)) + (setf (dp-atom-true-triable atom) (null (dp-atom-value atom))))) + ((eq false lookahead-values) + (dolist (atom (dp-clause-set-atoms clause-set)) + (setf (dp-atom-false-triable atom) (null (dp-atom-value atom))))) + (t + (cl:assert (member lookahead-values '(:true-false :false-true))) + (dolist (atom (dp-clause-set-atoms clause-set)) + (setf (dp-atom-true-triable atom) (setf (dp-atom-false-triable atom) (null (dp-atom-value atom))))))) + ;; continue trying assignments in order after the last successful one in *last-tried-atom* + (dolist (value-and-pass + (if *last-tried-atom* + (cond + ((eq true lookahead-values) + values-and-passes1) + ((eq false lookahead-values) + values-and-passes2) + (t + (cond + ((eq false (dp-atom-value *last-tried-atom*)) ;trying true assignments + values-and-passes3) + (t ;trying false assignments + values-and-passes4)))) + (cond + ((eq true lookahead-values) + values-and-passes5) + ((eq false lookahead-values) + values-and-passes6) + ((eq :true-false lookahead-values) + values-and-passes7) + (t + values-and-passes8)))) + (let* ((value (car value-and-pass)) + (pass (cdr value-and-pass)) + (try-it (not (eq :after-last-tried-atom pass)))) + (dolist (atom (dp-clause-set-atoms clause-set)) + (cond + ((and (not (eq :atoms-in-order pass)) + (eq atom *last-tried-atom*)) + (if try-it + (return) + (setf try-it t))) + ((and try-it + (if (eq true value) + (dp-atom-true-triable atom) + (dp-atom-false-triable atom))) + (setf (dp-atom-value atom) value) + (setf (dp-atom-next atom) nil) + (let ((v (assign-atoms atom))) + (cond + ((eq :unsatisfiable v) + (when verbose + (when *verbose-lookahead-show-count* + (show-count (incf ntrials) t)) + (format t "derived ~A." + (if (eq true value) + (complementary-literal (dp-atom-name atom)) + (dp-atom-name atom)))) + (setf (dp-atom-value atom) (if (eq true value) false true)) + (setf (dp-atom-next atom) nil) + (setf *last-tried-atom* atom) + (return-from lookahead* (values atom t))) + (t + (when (and verbose *verbose-lookahead-show-count*) + (show-count (incf ntrials))) + (cond + ((eq true lookahead-values) + (do ((atom v (dp-atom-next atom))) + ((null atom)) + (when (eq true (dp-atom-value atom)) + (setf (dp-atom-true-triable atom) nil)))) + ((eq false lookahead-values) + (do ((atom v (dp-atom-next atom))) + ((null atom)) + (when (eq false (dp-atom-value atom)) + (setf (dp-atom-false-triable atom) nil)))) + (t + (do ((atom v (dp-atom-next atom))) + ((null atom)) + (if (eq true (dp-atom-value atom)) + (setf (dp-atom-true-triable atom) nil) + (setf (dp-atom-false-triable atom) nil))))) + (unassign-atoms v))))))))) + (when verbose + (when *verbose-lookahead-show-count* + (show-count ntrials nil t)) + (format t "failed to derive a unit clause.")) + nil)) + +(defun show-count-p (n) + (dolist (v '(100000 10000 1000 100 10) t) + (when (>= n v) + (return (eql 0 (mod n v)))))) + +(defun show-count (n &optional always neg) + (when (or always (if neg (not (show-count-p n)) (show-count-p n))) + (princ n) + (princ " "))) + +;;; routines for translating well-formed formulas (wffs) to clause form + +(defun variable-and-range-p (x) + (and (consp x) + (symbolp (first x)) + (not (null (first x))) + (variable-range (rest x)))) + +(defun variables-and-ranges-p (x) + (and (consp x) + (if (consp (first x)) + (every #'variable-and-range-p x) + (variable-and-range-p x)))) + +(defun quoteval (x &optional env) + (cond + ((consp x) + (apply (first x) (mapcar (lambda (x) (quoteval x env)) (rest x)))) + (t + (let ((v (assoc x env))) + (if v (cdr v) x))))) + +(defun variable-range (x &optional (range-term-values 'syntax-check)) + (cond + ((not (consp x)) + nil) + (t + (case (first x) + (:in ;e.g., COLOR2 :IN (LIST R G B) :EXCEPT COLOR1 + (if (eq range-term-values 'syntax-check) ;or COLOR2 :IN (LIST R G B) :AFTER COLOR1 + (and (or (consp (second x)) (symbolp (second x))) + (or (do ((l (cddr x) (cddr l))) + ((null l) + t) + (unless (and (eq :except (first l)) + (rest l) + (symbolp (second l))) + (return nil))) + (and (eq :after (first (cddr x))) + (rest (cddr x)) + (symbolp (second (cddr x))) + (null (cddddr x))))) + (cond + ((null (cddr x)) + (quoteval (second x) range-term-values)) + ((eq :after (first (cddr x))) + (rest (member (range-term-value (second (cddr x)) range-term-values x) + (quoteval (second x) range-term-values) + :test #'equal))) + (t + (let ((result nil) result-last) + (dolist (i (quoteval (second x) range-term-values)) + (do ((l (cddr x) (cddr l))) + ((null l) + (collect i result)) + (when (equal (range-term-value (second l) range-term-values x) i) + (return nil)))) + result))))) + (otherwise + nil))))) + +(defun range-term-value (x range-term-values range) + (cond + ((integerp x) + x) + (t + (let ((v (assoc x range-term-values))) + (cond + (v + (cdr v)) + (t + (error "Variable ~A has no value in range ~A." x range))))))) + +(defun expand-range-form (ranges wff range-term-values) + (let ((var (first (first ranges))) + (result nil) result-last) + (if (null (rest ranges)) + (dolist (value (variable-range (rest (first ranges)) range-term-values)) + (collect (replace-variable-by-value-in-term var value wff) result)) + (dolist (value (variable-range (rest (first ranges)) range-term-values)) + (ncollect (expand-range-form + (rest ranges) + (replace-variable-by-value-in-term var value wff) + (acons var value range-term-values)) + result))) + result)) + +(defun replace-variable-by-value-in-term (var value term) + (cond + ((consp term) + (let* ((u (car term)) + (u* (replace-variable-by-value-in-term var value u)) + (v (cdr term))) + (if (null v) + (if (eq u u*) + term + (list u*)) + (let ((v* (replace-variable-by-value-in-term var value v))) + (if (and (eq v v*) (eq u u*)) + term + (cons u* v*)))))) + ((eq var term) + value) + (t + term))) + +(defun wff-clauses (wff &optional map-fun) + ;; apply map-fun to each clause in the clause form of wff + (let ((clauses nil)) + (labels + ((wff-kind (wff) + (cond + ((consp wff) + (let ((head (first wff))) + (case head + (not + (cl:assert (eql 1 (length (rest wff))) () "Wff ~A should have one argument." wff) + head) + ((and or) + (cl:assert (<= 2 (length (rest wff))) () "Wff ~A should have two or more arguments." wff) + head) + ((implies implied-by iff xor) + (cl:assert (eql 2 (length (rest wff))) () "Wff ~A should have two arguments." wff) + head) + (if + (cl:assert (eql 3 (length (rest wff))) () "Wff ~A should have three arguments." wff) + head) + ((forall exists) + (cl:assert (eql 2 (length (rest wff))) () "Wff ~A should have two arguments." wff) + (cl:assert (variables-and-ranges-p (second wff))) + head) + (otherwise + :literal)))) + (t + :literal))) + (combine-quantifiers (wff) + (let ((quantifier (first wff)) + (ranges (if (consp (first (second wff))) (second wff) (list (second wff)))) ;(forall (x ...) ...) -> (forall ((x ...)) ...) + (form (third wff))) + (cond + ((eq quantifier (wff-kind form)) ;nesting of same quantifier + (let ((form (combine-quantifiers form))) + (list quantifier (append ranges (second form)) (third form)))) + (t + (list quantifier ranges form))))) + (wff-clauses* (wff pos lits map-fun) + (case (wff-kind wff) + (:literal + (let ((-wff (complementary-literal wff))) + (unless (eq (if pos true false) wff) + (dolist (lit lits (funcall map-fun (if (eq (if pos false true) wff) lits (cons (if pos wff -wff) lits)))) + (cond + ((equal lit wff) + (when pos + (funcall map-fun lits)) + (return)) + ((equal lit -wff) + (unless pos + (funcall map-fun lits)) + (return))))))) + (not + (wff-clauses* (second wff) (not pos) lits map-fun)) + (and + (if pos + (if (and lits (some (lambda (arg) (member arg lits :test #'equal)) (rest wff))) + (funcall map-fun lits) + (dolist (arg (rest wff)) + (wff-clauses* arg t lits map-fun))) + (wff-clauses* (second wff) nil lits (lambda (l) (wff-clauses* (if (rrrest wff) `(and ,@(rrest wff)) (third wff)) nil l map-fun))))) + (or + (if pos + (wff-clauses* (second wff) t lits (lambda (l) (wff-clauses* (if (rrrest wff) `(or ,@(rrest wff)) (third wff)) t l map-fun))) + (if (and lits (some (lambda (arg) (member (complementary-literal arg) lits :test #'equal)) (rest wff))) + (funcall map-fun lits) + (dolist (arg (rest wff)) + (wff-clauses* arg nil lits map-fun))))) + (implies + (if pos + (wff-clauses* (second wff) nil lits (lambda (l) (wff-clauses* (third wff) t l map-fun))) + (progn + (wff-clauses* (second wff) t lits map-fun) + (wff-clauses* (third wff) nil lits map-fun)))) + (implied-by + (if pos + (wff-clauses* (third wff) nil lits (lambda (l) (wff-clauses* (second wff) t l map-fun))) + (progn + (wff-clauses* (third wff) t lits map-fun) + (wff-clauses* (second wff) nil lits map-fun)))) + (iff + (if pos + (progn + (wff-clauses* (second wff) nil lits (lambda (l) (wff-clauses* (third wff) t l map-fun))) + (wff-clauses* (second wff) t lits (lambda (l) (wff-clauses* (third wff) nil l map-fun)))) + (progn + (wff-clauses* (second wff) nil lits (lambda (l) (wff-clauses* (third wff) nil l map-fun))) + (wff-clauses* (second wff) t lits (lambda (l) (wff-clauses* (third wff) t l map-fun)))))) + (xor + (if pos + (progn + (wff-clauses* (second wff) nil lits (lambda (l) (wff-clauses* (third wff) nil l map-fun))) + (wff-clauses* (second wff) t lits (lambda (l) (wff-clauses* (third wff) t l map-fun)))) + (progn + (wff-clauses* (second wff) nil lits (lambda (l) (wff-clauses* (third wff) t l map-fun))) + (wff-clauses* (second wff) t lits (lambda (l) (wff-clauses* (third wff) nil l map-fun)))))) + (if + (wff-clauses* (second wff) nil lits (lambda (l) (wff-clauses* (third wff) pos l map-fun))) + (wff-clauses* (second wff) t lits (lambda (l) (wff-clauses* (fourth wff) pos l map-fun)))) + (forall ;yields conjunction over range + (let* ((wff (combine-quantifiers wff)) + (wffs (expand-range-form (second wff) (third wff) nil))) + (cl:assert (not (null wffs)) () "Wff ~S expands into empty conjunction." wff) + (wff-clauses* (if (null (rest wffs)) (first wffs) `(and ,@wffs)) pos lits map-fun))) + (exists ;yields disjunction over range + (let* ((wff (combine-quantifiers wff)) + (wffs (expand-range-form (second wff) (third wff) nil))) + (cl:assert (not (null wffs)) () "Wff ~S expands into empty disjunction." wff) + (wff-clauses* (if (null (rest wffs)) (first wffs) `(or ,@wffs)) pos lits map-fun)))))) + (wff-clauses* wff t nil + (lambda (lits) + (if map-fun + (funcall map-fun (reverse lits)) + (push (reverse lits) clauses)))) + (nreverse clauses)))) + +(defvar *verbose-subsumption* nil) +(defvar *subsumption-show-count* nil) + +(defun dp-subsumption (clause-set &optional print-summary) + ;; eliminate subsumed clauses + ;; also add resolvents when they subsume a parent + (assert-unvalued-dp-clause-set-p clause-set) + (cl:assert (eql 0 (dp-clause-set-checkpoint-level clause-set)) () + "Cannot use subsumption on clause set that has a checkpoint.") + (let ((start-time (run-time-since 0.0)) + (changed nil) + (candidates nil) + (count 0)) + (labels + ((same-literal (clauses) + (dolist (clause2 clauses) + (let ((subsumption-mark (dp-clause-subsumption-mark clause2))) + (cond + ((null subsumption-mark) + (push clause2 candidates) + (setf (dp-clause-subsumption-mark clause2) (cons 1 0))) + ((not (eq :subsumed subsumption-mark)) + (incf (car subsumption-mark))))))) + (comp-literal (clauses) + (dolist (clause2 clauses) + (let ((subsumption-mark (dp-clause-subsumption-mark clause2))) + (cond + ((null subsumption-mark) + (push clause2 candidates) + (setf (dp-clause-subsumption-mark clause2) (cons 0 1))) + ((not (eq :subsumed subsumption-mark)) + (incf (cdr subsumption-mark))))))) + (resolve (clause clause2 &optional subsume-both) + (setf changed t) + (when *verbose-subsumption* + (if subsume-both + (format t "~%Resolve ~A with ~A subsuming both" clause clause2) + (format t "~%Resolve ~A with ~A subsuming it" clause clause2))) + (setf (dp-clause-subsumption-mark clause2) :subsumed) + (when subsume-both + (setf (dp-clause-subsumption-mark clause) :subsumed)) + (let ((poslits (dp-clause-positive-literals clause)) + (neglits (dp-clause-negative-literals clause)) + (poslits2 (dp-clause-positive-literals clause2)) + (neglits2 (dp-clause-negative-literals clause2)) + (resolvent-poslits nil) + (resolvent-neglits nil)) + (when (or (null neglits2) (null (cdr poslits))) + (psetq poslits poslits2 + neglits neglits2 + poslits2 poslits + neglits2 neglits)) + (dolist (atom poslits) + (unless (member atom neglits2) + (push atom resolvent-poslits))) + (dolist (atom poslits2) + (unless (member atom neglits) + (pushnew atom resolvent-poslits))) + (dolist (atom neglits) + (unless (member atom poslits2) + (push (list 'not atom) resolvent-neglits))) + (dolist (atom neglits2) + (unless (member atom poslits) + (pushnew (list 'not atom) resolvent-neglits :key #'second))) + (dp-insert (nconc (nreverse resolvent-poslits) (nreverse resolvent-neglits)) clause-set))) + (delete-clauses (first) + (let ((nclauses 0) (nliterals 0)) + (loop + (cond + ((null first) + (decf (dp-clause-set-number-of-clauses clause-set) nclauses) + (decf (dp-clause-set-number-of-literals clause-set) nliterals) + (return-from delete-clauses (values nil nil))) + ((eq :subsumed (dp-clause-subsumption-mark first)) + (incf nclauses) + (incf nliterals (+ (length (dp-clause-positive-literals first)) + (length (dp-clause-negative-literals first)))) + (setf first (dp-clause-next first))) + (t + (return)))) + (let* ((last first) + (next (dp-clause-next last))) + (loop + (cond + ((null next) + (decf (dp-clause-set-number-of-clauses clause-set) nclauses) + (decf (dp-clause-set-number-of-literals clause-set) nliterals) + (return-from delete-clauses (values first last))) + ((eq :subsumed (dp-clause-subsumption-mark next)) + (incf nclauses) + (incf nliterals (+ (length (dp-clause-positive-literals next)) + (length (dp-clause-negative-literals next)))) + (setf next (setf (dp-clause-next last) (dp-clause-next next)))) + (t + (setf next (dp-clause-next (setf last next))))))))) + (subsumption (clause) + (when *subsumption-show-count* + (show-count (incf count))) + (unless (eq :subsumed (dp-clause-subsumption-mark clause)) + (dolist (atom (dp-clause-positive-literals clause)) + (same-literal (rest (member clause (dp-atom-contained-positively-clauses atom)))) + (comp-literal (dp-atom-contained-negatively-clauses atom))) + (dolist (atom (dp-clause-negative-literals clause)) + (same-literal (rest (member clause (dp-atom-contained-negatively-clauses atom)))) + (comp-literal (dp-atom-contained-positively-clauses atom))) + (let ((length (+ (dp-clause-number-of-unresolved-positive-literals clause) + (dp-clause-number-of-unresolved-negative-literals clause)))) + (dolist (clause2 candidates) + (let ((same-count (car (dp-clause-subsumption-mark clause2)))) + (cond + ((eql same-count length) + (setf changed t) + (when *verbose-subsumption* + (format t "~%Subsume ~A by ~A" clause2 clause)) + (setf (dp-clause-subsumption-mark clause2) :subsumed)) + ((eql same-count (+ (dp-clause-number-of-unresolved-positive-literals clause2) + (dp-clause-number-of-unresolved-negative-literals clause2))) + (setf changed t) + (when *verbose-subsumption* + (format t "~%Subsume ~A by ~A" clause clause2)) + (setf (dp-clause-subsumption-mark clause) :subsumed))))) + (decf length) + (dolist (clause2 candidates) + (let ((subsumption-mark (dp-clause-subsumption-mark clause2))) + (unless (eq :subsumed subsumption-mark) + (setf (dp-clause-subsumption-mark clause2) nil) + (unless (or (not (eql 1 (cdr subsumption-mark))) + (eq :subsumed (dp-clause-subsumption-mark clause))) + (let ((length2 (+ (dp-clause-number-of-unresolved-positive-literals clause2) + (dp-clause-number-of-unresolved-negative-literals clause2) + -1))) + (cond + ((and (eql 0 length) (eql 0 length2)) + ) ;don't make empty resolvent + ((eql (car subsumption-mark) length) + (resolve clause clause2 (eql (car subsumption-mark) length2))) + ((eql (car subsumption-mark) length2) + (resolve clause2 clause)))))))) + (setf candidates nil))))) + (when print-summary + (format t "~&Clause set subsumption ")) + (let ((p-clauses (make-dp-clause :next (dp-clause-set-p-clauses clause-set))) + (n-clauses (make-dp-clause :next (dp-clause-set-n-clauses clause-set))) + (m1-clauses (make-dp-clause :next (dp-clause-set-m1-clauses clause-set))) + (m2-clauses (make-dp-clause :next (dp-clause-set-m2-clauses clause-set)))) + (let (next) + (loop + (if (setf next (dp-clause-next m1-clauses)) + (subsumption (setf m1-clauses next)) + (if (setf next (dp-clause-next n-clauses)) + (subsumption (setf n-clauses next)) + (if (setf next (dp-clause-next m2-clauses)) + (subsumption (setf m2-clauses next)) + (if (setf next (dp-clause-next p-clauses)) + (subsumption (setf p-clauses next)) + (return)))))))) + (when *subsumption-show-count* + (show-count count nil t)) + (when changed + (dolist (atom (dp-clause-set-atoms clause-set)) + (let ((n 0)) + (setf (dp-atom-contained-positively-clauses atom) + (delete-if (lambda (clause) + (when (eq :subsumed (dp-clause-subsumption-mark clause)) + (incf n))) + (dp-atom-contained-positively-clauses atom))) + (setf (dp-atom-contained-negatively-clauses atom) + (delete-if (lambda (clause) + (when (eq :subsumed (dp-clause-subsumption-mark clause)) + (incf n))) + (dp-atom-contained-negatively-clauses atom))) + (decf (dp-atom-number-of-occurrences atom) n))) + (multiple-value-bind (first last) + (delete-clauses (dp-clause-set-p-clauses clause-set)) + (setf (dp-clause-set-p-clauses clause-set) first) + (setf (dp-clause-set-p-clauses-last clause-set) last)) + (multiple-value-bind (first last) + (delete-clauses (dp-clause-set-n-clauses clause-set)) + (setf (dp-clause-set-n-clauses clause-set) first) + (setf (dp-clause-set-n-clauses-last clause-set) last)) + (multiple-value-bind (first last) + (delete-clauses (dp-clause-set-m1-clauses clause-set)) + (setf (dp-clause-set-m1-clauses clause-set) first) + (setf (dp-clause-set-m1-clauses-last clause-set) last)) + (multiple-value-bind (first last) + (delete-clauses (dp-clause-set-m2-clauses clause-set)) + (setf (dp-clause-set-m2-clauses clause-set) first) + (setf (dp-clause-set-m2-clauses-last clause-set) last))) + (when print-summary + (format t "took ~,1F seconds" + (run-time-since start-time)) + (cond + (changed + (princ ".") + (dp-count clause-set t)) + (t + (princ " - no change.")))) + nil))) + +;;; Examples. +;;; Clauses are represented by lists of literals. +;;; Atomic formulas can be represented by numbers > 0 or S-expressions. +;;; Example literals and their negations include +;;; 3 -3 +;;; P (NOT P) +;;; (SUBSET A B) (NOT (SUBSET A B)) +;;; Clauses are added to a set of clauses by DP-INSERT. +;;; Tautologies and duplicate literals are automatically eliminated. +;;; +;;; Formulas can be converted to clause form and inserted by DP-INSERT-WFF. +;;; +;;; DP-SATISFIABLE-P is the main function used to test a set of clauses +;;; for satisfiability. Its input is created by calls on DP-INSERT that +;;; add single clauses to a set of clauses. +;;; +;;; DP-OUTPUT-CLAUSES-TO-FILE can be used to write a set of clauses to a file. +;;; DP-SATISFIABLE-FILE-P can then be used. +;;; +;;; An alternate file format that can be specified by the :dimacs-cnf-format +;;; flag represents literals by positive or negative integers and clauses by +;;; a sequence of integers separated by zeros. For example, a file might contain +;;; 1 2 0 1 -2 0 -1 2 0 -1 -2 0 to represent the clauses (1 2) (1 -2) (-1 2) (-1 -2). +;;; This is the form used by McCune's ANL-DP for propositional problems +;;; and is also the CNF format for SAT problems suggested by DIMACS. + +(defun allways-3-problem (&rest options) + ;; all signed combinations of three propositions + ;; this is not satisfiable + ;; you can omit some of the clauses to make the set + ;; satisfiable and observe dp-satisfiable-p's behavior + (let ((clause-set (make-dp-clause-set))) + (dp-insert '(1 2 3) clause-set) + (dp-insert '(1 2 -3) clause-set) + (dp-insert '(1 -2 3) clause-set) + (dp-insert '(1 -2 -3) clause-set) + (dp-insert '(-1 2 3) clause-set) + (dp-insert '(-1 2 -3) clause-set) + (dp-insert '(-1 -2 3) clause-set) + (dp-insert '(-1 -2 -3) clause-set) +;; could have been inserted as one or more wffs instead: +;; (dp-insert-wff '(or 1 +;; (and (or 2 3) +;; (implies 3 2) +;; (implies 2 3) +;; (or (not 2) (not 3)))) +;; clause-set) +;; (dp-insert-wff '(or -1 +;; (and (or 2 3) +;; (iff 2 3) +;; (not (and 2 3)))) +;; clause-set) +;; (dp-count clause-set t) +;; (dp-clauses #'print clause-set) + (apply #'dp-satisfiable-p clause-set options))) + +(defun pigeonhole-problem (nholes &rest options) + (apply #'dp-satisfiable-p + (pigeonhole-problem-clauses nholes (if (numberp (first options)) (first options) (+ nholes 1))) + (append (if (numberp (first options)) (rest options) options) (list :dependency-check nil)))) + +(defun queens-problem (n &rest options) + (apply #'dp-satisfiable-p + (queens-problem-clauses n) + (append options (list :atom-choice-function #'choose-an-atom-of-a-shortest-positive-clause-with-most-occurrences)))) + +(defun graph-coloring-problem (colors n &rest options) + (apply #'dp-satisfiable-p + (graph-coloring-problem-clauses colors n) + options)) + +(defun pigeonhole-problem-clauses (nholes &optional (nobjects (+ nholes 1))) + (let ((clause-set (make-dp-clause-set))) + #| + (loop for i from 1 to nobjects + do (dp-insert (loop for j from 1 to nholes collect `(p ,i ,j)) clause-set)) + (loop for j from 1 to nholes + do (loop for i1 from 1 to (- nobjects 1) + do (loop for i2 from (+ i1 1) to nobjects + do (dp-insert (list `(not (p ,i1 ,j)) `(not (p ,i2 ,j))) clause-set)))) + |# + ;; the methods above and below yield the same set of clauses + (dp-insert-wff `(and + (forall (i :in (ints 1 ,nobjects)) + (exists (j :in (ints 1 ,nholes)) + (p i j))) + (forall ((j :in (ints 1 ,nholes)) + (i1 :in (ints 1 (- ,nobjects 1))) + (i2 :in (ints (+ i1 1) ,nobjects))) + (or (not (p i1 j)) (not (p i2 j))))) + clause-set) + clause-set)) + +(defun queens-problem-clauses (n) + (let ((clause-set (make-dp-clause-set))) + (loop for i from 1 to n + do (dp-insert (loop for j from 1 to n collect `(q ,i ,j)) clause-set)) + (loop for j from 1 to n + do (dp-insert (loop for i from 1 to n collect `(q ,i ,j)) clause-set)) + (loop for i from 1 to n + do (loop for j from 1 to (- n 1) + do (loop for k from (+ j 1) to n + do (dp-insert (list `(not (q ,i ,j)) `(not (q ,i ,k))) clause-set) + (dp-insert (list `(not (q ,j ,i)) `(not (q ,k ,i))) clause-set)))) + (loop for i1 from 1 to (- n 1) + do (loop for i2 from (+ i1 1) to n + as d = (- i2 i1) + do (loop for j1 from 1 to n + when (>= (- j1 d) 1) + do (dp-insert (list `(not (q ,i1 ,j1)) `(not (q ,i2 ,(- j1 d)))) clause-set) + when (<= (+ j1 d) n) + do (dp-insert (list `(not (q ,i1 ,j1)) `(not (q ,i2 ,(+ j1 d)))) clause-set)))) + clause-set)) + +(defun graph-coloring-problem-clauses (colors n) + ;; a Ramsey problem: + ;; can the edges of a complete graph with n nodes be colored + ;; with colors so that there is no isochromatic triangle? + ;; + ;; (graph-coloring-problem '(red green) 5) is solvable but + ;; (graph-coloring-problem '(red green) 6) is not + ;; + ;; (graph-coloring-problem '(red green blue) 16) is solvable but + ;; (graph-coloring-problem '(red green blue) 17) is not + ;; but this is hard to show (symmetry elimination would help) + (let ((clause-set (make-dp-clause-set))) + (dp-insert-wff `(forall ((i :in (ints 1 ,n)) + (j :in (ints (+ i 1) ,n))) + (exists (c :in (list ,@colors)) (c i j))) + clause-set) + (dp-insert-wff `(forall ((i :in (ints 1 ,n)) + (j :in (ints (+ i 1) ,n)) + (c1 :in (list ,@colors)) + (c2 :in (list ,@colors) :after c1)) + (not (and (c1 i j) (c2 i j)))) + clause-set) + (dp-insert-wff `(forall ((i :in (ints 1 ,n)) + (j :in (ints (+ i 1) ,n)) + (k :in (ints j ,n) :except j) + (c :in (list ,@colors))) + (not (and (c i j) (c i k) (c j k)))) + clause-set) +;; (dp-clauses #'print clause-set) + clause-set)) + +;;; davis-putnam3.lisp EOF diff --git a/snark-20120808r02/src/deque-system.lisp b/snark-20120808r02/src/deque-system.lisp new file mode 100644 index 0000000..0775d3d --- /dev/null +++ b/snark-20120808r02/src/deque-system.lisp @@ -0,0 +1,38 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: common-lisp-user -*- +;;; File: deque-system.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2012. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :common-lisp-user) + +(defpackage :snark-deque + (:use :common-lisp :snark-lisp) + (:export + #:make-deque + #:deque? + #:deque-empty? + #:deque-first #:deque-rest #:deque-pop-first #:deque-add-first #:deque-push-first + #:deque-last #:deque-butlast #:deque-pop-last #:deque-add-last #:deque-push-last + #:deque-length + #:deque-delete + #:deque-delete-if + #:mapnconc-deque + )) + +(loads "deque2") + +;;; deque-system.lisp EOF diff --git a/snark-20120808r02/src/deque2.abcl b/snark-20120808r02/src/deque2.abcl new file mode 100644 index 0000000000000000000000000000000000000000..eeea2b34167365b457f9216006be2a23f34328a6 GIT binary patch literal 39439 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 HmAv~8(KL;= literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/deque2.lisp b/snark-20120808r02/src/deque2.lisp new file mode 100644 index 0000000..7c3021d --- /dev/null +++ b/snark-20120808r02/src/deque2.lisp @@ -0,0 +1,228 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark-deque -*- +;;; File: deque2.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2012. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark-deque) + +(defstruct (deque + (:predicate deque?)) + (front nil :type list) + (last-of-front nil) + (rear nil :type list) + (last-of-rear nil)) + +(defun deque-empty? (deque) + (and (null (deque-front deque)) (null (deque-rear deque)))) + +(defun deque-first (deque) + ;; returns first item in deque, nil if deque is empty + (let ((front (deque-front deque))) + (if front (first front) (deque-last-of-rear deque)))) + +(defun deque-last (deque) + ;; returns last item in deque, nil if deque is empty + (let ((rear (deque-rear deque))) + (if rear (first rear) (deque-last-of-front deque)))) + +(defun deque-rest (deque) + ;; returns new deque with first item removed, deque if it is empty + (let ((front (deque-front deque)) + (rear (deque-rear deque))) + (cond + (front + (let ((front* (rest front))) + (make-deque + :front front* + :last-of-front (if front* (deque-last-of-front deque) nil) + :rear rear + :last-of-rear (deque-last-of-rear deque)))) + (rear + (let ((front* (rest (reverse rear)))) + (make-deque + :front front* + :last-of-front (if front* (first rear) nil) + :rear nil + :last-of-rear nil))) + (t + deque)))) + +(defun deque-butlast (deque) + ;; returns new deque with last item removed, deque if it is empty + (let ((front (deque-front deque)) + (rear (deque-rear deque))) + (cond + (rear + (let ((rear* (rest rear))) + (make-deque + :rear rear* + :last-of-rear (if rear* (deque-last-of-rear deque) nil) + :front front + :last-of-front (deque-last-of-front deque)))) + (front + (let ((rear* (rest (reverse front)))) + (make-deque + :rear rear* + :last-of-rear (if rear* (first front) nil) + :front nil + :last-of-front nil))) + (t + deque)))) + +(defun deque-pop-first (deque) + ;; like deque-rest, but return first item and destructively remove it from deque + (let ((front (deque-front deque)) + (rear (deque-rear deque))) + (cond + (front + (let ((front* (rest front))) + (setf (deque-front deque) front*) + (when (null front*) + (setf (deque-last-of-front deque) nil)) + (first front))) + (rear + (let ((item (deque-last-of-rear deque)) + (front* (rest (reverse rear)))) + (setf (deque-front deque) front*) + (setf (deque-last-of-front deque) (if front* (first rear) nil)) + (setf (deque-rear deque) nil) + (setf (deque-last-of-rear deque) nil) + item)) + (t + nil)))) + +(defun deque-pop-last (deque) + ;; like deque-butlast, but return last item and destructively remove it from deque + (let ((front (deque-front deque)) + (rear (deque-rear deque))) + (cond + (rear + (let ((rear* (rest rear))) + (setf (deque-rear deque) rear*) + (when (null rear*) + (setf (deque-last-of-rear deque) nil)) + (first rear))) + (front + (let ((item (deque-last-of-front deque)) + (rear* (rest (reverse front)))) + (setf (deque-rear deque) rear*) + (setf (deque-last-of-rear deque) (if rear* (first front) nil)) + (setf (deque-front deque) nil) + (setf (deque-last-of-front deque) nil) + item)) + (t + nil)))) + +(defun deque-add-first (deque item) + ;; returns new deque with new first item added + (let ((front (deque-front deque))) + (make-deque + :front (cons item front) + :last-of-front (if front (deque-last-of-front deque) item) + :rear (deque-rear deque) + :last-of-rear (deque-last-of-rear deque)))) + +(defun deque-add-last (deque item) + ;; returns new deque with new last item added + (let ((rear (deque-rear deque))) + (make-deque + :rear (cons item rear) + :last-of-rear (if rear (deque-last-of-rear deque) item) + :front (deque-front deque) + :last-of-front (deque-last-of-front deque)))) + +(defun deque-push-first (deque item) + ;; like deque-add-first, but returns same deque with new first item added destructively + (let ((front (deque-front deque))) + (setf (deque-front deque) (cons item front)) + (when (null front) + (setf (deque-last-of-front deque) item)) + deque)) + +(defun deque-push-last (deque item) + ;; like deque-add-last, but returns same deque with new last item added destructively + (let ((rear (deque-rear deque))) + (setf (deque-rear deque) (cons item rear)) + (when (null rear) + (setf (deque-last-of-rear deque) item)) + deque)) + +(defun deque-length (deque) + (+ (length (deque-front deque)) (length (deque-rear deque)))) + +(defun deque-delete (deque item) + ;; ad hoc function to delete single occurrence of item from deque destructively + (let ((front (deque-front deque)) + (rear (deque-rear deque))) + (cond + ((and front (eql item (first front))) + (when (null (setf (deque-front deque) (rest front))) + (setf (deque-last-of-front deque) nil)) + t) + ((and rear (eql item (first rear))) + (when (null (setf (deque-rear deque) (rest rear))) + (setf (deque-last-of-rear deque) nil)) + t) + ((dotails (l front nil) + (when (and (rest l) (eql item (second l))) + (when (null (setf (rest l) (rrest l))) + (setf (deque-last-of-front deque) (first l))) + (return t)))) + ((dotails (l rear nil) + (when (and (rest l) (eql item (second l))) + (when (null (setf (rest l) (rrest l))) + (setf (deque-last-of-rear deque) (first l))) + (return t)))) + (t + nil)))) + +(defun deque-delete-if (function deque) + ;; ad hoc function to delete items from deque destructively + (let* ((deleted nil) + (front* (prog-> + (delete-if (deque-front deque) ->* item) + (when (funcall function item) + (setf deleted t))))) + (when deleted + (setf (deque-front deque) front*) + (setf (deque-last-of-front deque) (first (last front*))))) + (let* ((deleted nil) + (rear* (prog-> + (delete-if (deque-rear deque) :from-end t ->* item) + (when (funcall function item) + (setf deleted t))))) + (when deleted + (setf (deque-rear deque) rear*) + (setf (deque-last-of-rear deque) (first (last rear*))))) + deque) + +(defun mapnconc-deque (function deque &key reverse) + ;; ad hoc function to nconc results of applying function to items in deque + (let ((front (deque-front deque)) + (rear (deque-rear deque)) + (result nil) result-last) + (dolist (item (if reverse rear front)) + (if (or (null function) (eq 'list function) (eq #'list function)) + (collect item result) + (ncollect (funcall function item) result))) + (dolist (item (if reverse (reverse front) (reverse rear))) + (if (or (null function) (eq 'list function) (eq #'list function)) + (collect item result) + (ncollect (funcall function item) result))) + result)) + +;;; deque2.lisp EOF diff --git a/snark-20120808r02/src/dp-refute.abcl b/snark-20120808r02/src/dp-refute.abcl new file mode 100644 index 0000000000000000000000000000000000000000..62f09e808960be20d4d8b20bfbf713c6dcda31ee GIT binary patch literal 49255 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 Kc<<^zpZ*^qm{KVK literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/dp-refute.lisp b/snark-20120808r02/src/dp-refute.lisp new file mode 100644 index 0000000..3ba94ac --- /dev/null +++ b/snark-20120808r02/src/dp-refute.lisp @@ -0,0 +1,250 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: dp-refute.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2011. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +(declaim (special map-atoms-first *subsuming* *frozen-variables*)) + +(defstruct (context + (:constructor make-context (formula &optional assignment substitution)) + (:print-function print-context)) + formula + (substitution nil) + (assignment nil)) + +(defun make-context2 (formula assignment substitution) + (make-context + (simplify-formula formula assignment substitution) ;should be incremental for efficiency + assignment + substitution)) + +(defun dp-refute-p (formula) + (prog-> + (dp-refute (make-context formula) ->* substitution) + (return-from dp-refute-p (or substitution t)))) + +(defun dp-refute (cc context) + (when (trace-dp-refute?) + (dp-refute-trace context)) + (cond + ((eq true (context-formula context)) + ) ;don't do anything if formula is not falsifiable (return failed context?) + ((eq false (context-formula context)) + (funcall cc (context-substitution context))) ;succeeded + (t + (prog-> + (refute-methods context ->* x) + (ecase (first x) + + (instantiate ;extend substitution + (second x -> substitution) +;; (cl:assert (and (neq (context-substitution context) substitution) +;; (tailp (context-substitution context) substitution))) + (dp-refute + (make-context2 + (context-formula context) + (context-assignment context) + substitution) + ->* substitution) + (funcall cc substitution)) + + (split + (second x -> atom) + (third x -> value) ;refute atom-value branch first + (if (eq true value) false true -> not-value) + (when (trace-dp-refute?) + (dp-refute-trace context atom value)) + (dp-refute + (make-context2 + (context-formula context) + (cons (list atom value) (context-assignment context)) + (context-substitution context)) + ->* substitution) + (when (trace-dp-refute?) + (dp-refute-trace context atom not-value)) + (dp-refute + (make-context2 + (context-formula context) + (cons (list atom not-value) (context-assignment context)) + substitution) + ->* substitution) + (funcall cc substitution)) + + (close-branch-and-refute-other-branch + (second x -> atom) + (third x -> value) + (fourth x -> substitution) + (if (eq true value) false true -> not-value) +;; (cl:assert (and (neq (context-substitution context) substitution) +;; (tailp (context-substitution context) substitution))) + (dp-refute + (make-context2 + (context-formula context) + (cons (list atom not-value) (context-assignment context)) + substitution) + ->* substitution) + (funcall cc substitution)))))) + nil) + +(defun dp-refute-trace (context &optional atom value) + (terpri) + (dolist (x (context-assignment context)) + (declare (ignorable x)) + (princ " ")) + (cond + ((null atom) + (princ "REFUTE: ") + (print-context context)) + (t + (princ " ") + (prin1 atom) + (princ " <- ") + (prin1 value)))) + +;;; simple versions of choose-atom, refute-methods, and simplify-formula +;;; that are suitable for SNARK are given +;;; STeP will require much more sophisticated versions + +(defun choose-atom (cc context) + ;; pick any atom not already assigned a value + ;; better heuristic selection is called for + (prog-> + (context-substitution context -> substitution) + (identity map-atoms-first -> maf) + (quote t -> map-atoms-first) + (map-atoms-in-wff (context-formula context) ->* atom polarity) + (declare (ignore polarity)) + (identity maf -> map-atoms-first) + (unless (member atom (context-assignment context) :key #'car :test (lambda (x y) (equal-p x y substitution))) + (funcall cc atom) + ;; quit after finding first one + ;; STeP may require additional choices, if falsifiability depends on order in which branches are explored + (return-from choose-atom atom)))) + +(defun refute-methods (cc context) + ;; pick an atom to assign + ;; attempt to refute it by unification with a complementary assignment + ;; there will be more ways to refute atoms when theories are interpreted + (let ((assignment (context-assignment context)) + (substitution (context-substitution context))) + (prog-> + (choose-atom context ->* atom) + (quote nil -> empty-substitution-works) + (prog-> + (dolist assignment ->* x) + (first x -> atom2) + (second x -> value2) + (if (eq true value2) false true -> value) + (unify atom atom2 substitution ->* substitution2) + (when (eq substitution2 substitution) + (setf empty-substitution-works t)) + (funcall cc `(close-branch-and-refute-other-branch ,atom ,value ,substitution2))) + (unless empty-substitution-works + (funcall cc `(split ,atom ,true)))))) + +(defun simplify-formula (formula assignment substitution) + (prog-> + (map-atoms-in-wff-and-compose-result formula ->* atom polarity) + (declare (ignore polarity)) + (or (second (assoc-p atom assignment substitution)) + (instantiate atom substitution)))) + +(defun print-context (context &optional (stream *standard-output*) depth) + (declare (ignore depth)) + (format stream "#") + context) + +(defun dp-subsume* (cc wff1 wff2 subst neg) + (cond + ((if neg + (or (eq false wff2) (eq true wff1)) + (or (eq true wff2) (eq false wff1))) + (funcall cc subst)) + ((if neg + (or (eq true wff2) (eq false wff1)) + (or (eq false wff2) (eq true wff1))) + ) + (t + (prog-> + (if neg + (maximum-and-minimum-clause-lengths-neg wff1 subst) + (maximum-and-minimum-clause-lengths wff1 subst) + -> max1 min1) + (declare (ignore min1)) + (if neg + (maximum-and-minimum-clause-lengths-neg wff2 subst) + (maximum-and-minimum-clause-lengths wff2 subst) + -> max2 min2) + (declare (ignore max2)) + (when (> max1 min2) + (return-from dp-subsume*))) + (dp-refute + cc + (make-context2 + (if neg (conjoin wff2 (negate wff1)) (conjoin (negate wff2) wff1)) + nil + subst))))) + +(defun dp-subsume-constraint-alists* (cc constraint-alist1 constraint-alist2 subst) + (cond + ((null constraint-alist1) + (funcall cc subst)) + (t + (prog-> + (first constraint-alist1 -> x) + (dp-subsume* (cdr x) (or (cdr (assoc (car x) constraint-alist2)) false) subst nil ->* subst) + (dp-subsume-constraint-alists* (rest constraint-alist1) constraint-alist2 subst ->* subst) + (funcall cc subst)))) + nil) + +(defun dp-subsume (cc wff1 wff2 subst neg) + (prog-> + (identity *subsuming* -> sb) + (quote t -> *subsuming*) + (identity *frozen-variables* -> fv) ;save list of frozen variables + (variables wff2 subst fv -> *frozen-variables*) ;add wff2's variables to frozen variables + (dp-subsume* wff1 wff2 subst neg ->* subst) + (identity sb -> *subsuming*) + (identity fv -> *frozen-variables*) ;restore list of frozen variables + (funcall cc subst))) + +(defun dp-subsume+ (row1 row2) + (prog-> + (row-wff row1 -> wff1) + (row-wff row2 -> wff2) + (row-constraints row1 -> constraint-alist1) + (row-constraints row2 -> constraint-alist2) + (row-answer row1 -> answer1) + (row-answer row2 -> answer2) + + (row-variables row2 *frozen-variables* -> *frozen-variables*) + + (dp-subsume* wff1 wff2 nil nil ->* subst) + (dp-subsume-constraint-alists* constraint-alist1 constraint-alist2 subst ->* subst) + (dp-subsume* answer1 answer2 subst nil ->* subst) + (declare (ignore subst)) + (return-from dp-subsume+ t))) + +;;; dp-refute.lisp EOF diff --git a/snark-20120808r02/src/dpll-system.lisp b/snark-20120808r02/src/dpll-system.lisp new file mode 100644 index 0000000..10ae9df --- /dev/null +++ b/snark-20120808r02/src/dpll-system.lisp @@ -0,0 +1,46 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: common-lisp-user -*- +;;; File: dpll-system.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2010. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :common-lisp-user) + +(defpackage :snark-dpll + (:use :common-lisp :snark-lisp) + (:export + #:dp-prover #:dp-version + #:dp-tracing #:dp-tracing-state #:dp-tracing-models #:dp-tracing-choices + #:dp-satisfiable-p #:dp-satisfiable-file-p #:make-dp-clause-set + #:dp-insert #:dp-insert-sorted #:dp-insert-wff #:dp-insert-file + #:dp-count #:dp-clauses #:dp-output-clauses-to-file #:wff-clauses + #:dp-horn-clause-set-p + #:checkpoint-dp-clause-set #:restore-dp-clause-set #:uncheckpoint-dp-clause-set + #:choose-an-atom-of-a-shortest-clause + #:choose-an-atom-of-a-shortest-clause-randomly + #:choose-an-atom-of-a-shortest-clause-with-most-occurrences + #:choose-an-atom-of-a-shortest-clause-with-most-occurrences-randomly + #:choose-an-atom-of-a-shortest-positive-clause + #:choose-an-atom-of-a-shortest-positive-clause-randomly + #:choose-an-atom-of-a-shortest-positive-clause-with-most-occurrences + #:choose-an-atom-of-a-shortest-positive-clause-with-most-occurrences-randomly + #:lookahead-true #:lookahead-false + #:lookahead-true-false #:lookahead-false-true + )) + +(loads "davis-putnam3") + +;;; dpll-system.lisp EOF diff --git a/snark-20120808r02/src/equal.abcl b/snark-20120808r02/src/equal.abcl new file mode 100644 index 0000000000000000000000000000000000000000..83f84e11d292bb4623d8765005bbcb3047667958 GIT binary patch literal 8667 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 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/equal.lisp b/snark-20120808r02/src/equal.lisp new file mode 100644 index 0000000..2b9e0cb --- /dev/null +++ b/snark-20120808r02/src/equal.lisp @@ -0,0 +1,115 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: equal.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2010. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +;;; EQ suffices to compare function, relation, and variable symbols +;;; EQL suffices to compare constant symbols +;;; string constants must be term-hashed to be EQ + +(defun equal-p (x y &optional subst) + (or (eql x y) + (dereference + x subst + :if-variable (dereference y subst :if-variable (eq x y)) + :if-constant (dereference y subst :if-constant (eql x y)) + :if-compound-cons (dereference + y subst + :if-compound-cons (and (equal-p (carc x) (carc y) subst) + (equal-p (cdrc x) (cdrc y) subst))) + :if-compound-appl (dereference + y subst + :if-compound-appl + (or (eq x y) + (let ((head (heada x))) + (cond + ((neq head (heada y)) + nil) + (t + (dolist (fun (function-equal-code head) (equal-p (argsa x) (argsa y) subst)) + (let ((v (funcall fun x y subst))) + (unless (eq none v) + (return v)))))))))))) + +(defun ac-equal-p (x y subst) + (let ((fn (head x)) + (terms1 (args x)) + (terms2 (args y))) + (and (similar-argument-list-ac1-p fn terms1 terms2 subst) + (progn + (setf terms2 (cons nil (copy-list (argument-list-a1 fn terms2 subst)))) + (loop for term1 in (argument-list-a1 fn terms1 subst) + always (loop for y1 = terms2 then y2 + for y2 on (cdr terms2) + thereis (if (equal-p term1 (car y2) subst) + (rplacd y1 (cdr y2)) ;non-nil + nil))))))) + +(defun commutative-equal-p (x y subst) + (mvlet (((list* x y z) (args x)) + ((list* u v w) (args y))) + (and (or (eq z w) (equal-p z w subst)) + (cond + ((equal-p x u subst) + (equal-p y v subst)) + ((equal-p x v subst) + (equal-p y u subst)) + (t + nil))))) + +(defun associative-equal-p (x y subst) + (let ((fn (head x)) + (terms1 (args x)) + (terms2 (args y))) + (and (eql (argument-count-a1 fn terms1 subst) + (argument-count-a1 fn terms2 subst)) + (let (x y) + (loop + (cond + ((null terms1) + (return (null terms2))) + ((null terms2) + (return nil)) + (t + (setf (values x terms1) (first-and-rest-of-vector terms1 subst fn none)) + (setf (values y terms2) (first-and-rest-of-vector terms2 subst fn none)) + (unless (equal-p x y subst) + (return nil))))))))) + +(defun member-p (item list &optional subst) + (or (member item list) + (dotails (l list nil) + (when (equal-p item (first l) subst) + (return l))))) + +(defun assoc-p (item alist &optional subst) + (or (assoc item alist) + (dolist (pair alist nil) + (when (equal-p item (car pair) subst) + (return pair))))) + +(defun literal-member-p (atom polarity list) + (or (dolist (x list nil) + (when (and (eq atom (first x)) (eq polarity (second x))) + (return x))) + (dolist (x list nil) + (when (and (eq polarity (second x)) (equal-p atom (first x))) + (return x))))) + +;;; equal.lisp EOF diff --git a/snark-20120808r02/src/eval.abcl b/snark-20120808r02/src/eval.abcl new file mode 100644 index 0000000000000000000000000000000000000000..c2f7a15f20deaa98ca5c68d9cffd8099109fa358 GIT binary patch literal 39264 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 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/eval.lisp b/snark-20120808r02/src/eval.lisp new file mode 100644 index 0000000..a007435 --- /dev/null +++ b/snark-20120808r02/src/eval.lisp @@ -0,0 +1,350 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: eval.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2012. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +(defvar *polarity*) + +(defun fifo (row) + (declare (ignore row)) + (values 0 nil)) + +(defun lifo (row) + (declare (ignore row)) + (values 0 t)) + +(defun row-depth (row) + (if (row-embedding-p row) + (row-depth (row-parent row)) + (wff-depth (row-wff row)))) + +(defun row-size (row) + (if (row-embedding-p row) + (row-size (row-parent row)) + (wff-size (row-wff row)))) + +(defun row-weight (row) + (if (row-embedding-p row) + (row-weight (row-parent row)) + (wff-weight (row-wff row)))) + +(defun row-size+depth (row) + (if (row-embedding-p row) + (row-size+depth (row-parent row)) + (wff-size+depth (row-wff row)))) + +(defun row-weight+depth (row) + (if (row-embedding-p row) + (row-weight+depth (row-parent row)) + (wff-weight+depth (row-wff row)))) + +(defun row-size+depth+level (row) + (if (row-embedding-p row) + (row-size+depth+level (row-parent row)) + (+ (wff-size+depth (row-wff row)) (row-level row)))) + +(defun row-weight+depth+level (row) + (if (row-embedding-p row) + (row-weight+depth+level (row-parent row)) + (+ (wff-weight+depth (row-wff row)) (row-level row)))) + +(defun row-priority (row) + (if (row-embedding-p row) + (row-priority (row-parent row)) + (+ (let ((f (row-priority-size-factor?))) + (if (= 0 f) 0 (* f (wff-size (row-wff row))))) + (let ((f (row-priority-weight-factor?))) + (if (= 0 f) 0 (* f (wff-weight (row-wff row))))) + (let ((f (row-priority-depth-factor?))) + (if (= 0 f) 0 (* f (wff-depth (row-wff row))))) + (let ((f (row-priority-level-factor?))) + (if (= 0 f) 0 (* f (row-level row))))))) + +(defun row-wff&answer-weight+depth (row) + (if (row-embedding-p row) + (row-wff&answer-weight+depth (row-parent row)) + (+ (wff-weight+depth (row-wff row)) (wff-weight+depth (row-answer row))))) + +(defun row-neg (row) + (if (row-embedding-p row) + (row-neg (row-parent row)) + (wff-neg (row-wff row)))) + +(defun row-neg-size+depth (row) + (if (row-embedding-p row) + (row-neg-size+depth (row-parent row)) + (list (wff-neg (row-wff row)) (wff-size+depth (row-wff row))))) + +(defun row-answer-weight (row) + (weight (row-answer row))) + +(defun wff-depth (wff &optional subst &key (polarity :pos)) + (prog-> + (wff-size* wff subst polarity ->* atom subst) + (depth atom subst))) + +(defun wff-size (wff &optional subst &key (polarity :pos)) + (prog-> + (wff-size* wff subst polarity ->* atom subst) + (size atom subst))) + +(defun wff-weight (wff &optional subst &key (polarity :pos)) + (prog-> + (wff-size* wff subst polarity ->* atom subst) + (weight atom subst))) + +(defun wff-size+depth (wff &optional subst &key (polarity :pos)) + (prog-> + (wff-size* wff subst polarity ->* atom subst) + (+ (size atom subst) (depth atom subst)))) + +(defun wff-weight+depth (wff &optional subst &key (polarity :pos)) + (prog-> + (wff-size* wff subst polarity ->* atom subst) + (+ (weight atom subst) (depth atom subst)))) + +(defun wff-length (wff &optional subst &key (polarity :pos)) + (prog-> + (wff-size* wff subst polarity ->* atom subst) + (declare (ignore atom subst)) + 1)) + +(defun wff-size* (atom-size-fun wff subst *polarity*) + (dereference + wff subst + :if-variable (funcall atom-size-fun wff subst) + :if-constant (cond + ((eq true wff) + (if (eq :pos *polarity*) 1000000 0)) + ((eq false wff) + (if (eq :pos *polarity*) 0 1000000)) + (t + (funcall atom-size-fun wff subst))) + :if-compound (let* ((head (head wff)) + (kind (function-logical-symbol-p head)) + (args (args wff))) + (ecase kind + (not + (wff-size* atom-size-fun (first args) subst (opposite-polarity *polarity*))) + ((and or) + (if (if (eq 'and kind) + (eq :pos *polarity*) + (eq :neg *polarity*)) + (let ((n 1000000)) + (dolist (arg args) + (let ((m (wff-size* atom-size-fun arg subst *polarity*))) + (when (< m n) + (setf n m)))) + n) + (let ((n 0)) + (dolist (arg args) + (incf n (wff-size* atom-size-fun arg subst *polarity*))) + n))) + (implies + (if (eq :pos *polarity*) + (+ (wff-size* atom-size-fun (first args) subst :neg) + (wff-size* atom-size-fun (second args) subst :pos)) + (min (wff-size* atom-size-fun (first args) subst :pos) + (wff-size* atom-size-fun (second args) subst :neg)))) + (implied-by + (if (eq :pos *polarity*) + (+ (wff-size* atom-size-fun (second args) subst :neg) + (wff-size* atom-size-fun (first args) subst :pos)) + (min (wff-size* atom-size-fun (second args) subst :pos) + (wff-size* atom-size-fun (first args) subst :neg)))) + ((iff xor) + (let ((y (if (null (cddr args)) + (second args) + (make-compound head (rest args))))) + (if (if (eq 'iff kind) + (eq :pos *polarity*) + (eq :neg *polarity*)) + (min (+ (wff-size* atom-size-fun (first args) subst :pos) + (wff-size* atom-size-fun y subst :neg)) + (+ (wff-size* atom-size-fun (first args) subst :neg) + (wff-size* atom-size-fun y subst :pos))) + (min (+ (wff-size* atom-size-fun (first args) subst :pos) + (wff-size* atom-size-fun y subst :pos)) + (+ (wff-size* atom-size-fun (first args) subst :neg) + (wff-size* atom-size-fun y subst :neg)))))) + ((if answer-if) + (if (eq :pos *polarity*) + (min (+ (wff-size* atom-size-fun (first args) subst :neg) + (wff-size* atom-size-fun (second args) subst :pos)) + (+ (wff-size* atom-size-fun (first args) subst :pos) + (wff-size* atom-size-fun (third args) subst :pos))) + (min (+ (wff-size* atom-size-fun (first args) subst :neg) + (wff-size* atom-size-fun (second args) subst :neg)) + (+ (wff-size* atom-size-fun (first args) subst :pos) + (wff-size* atom-size-fun (third args) subst :neg))))) + ((nil) ;atomic + (funcall atom-size-fun wff subst)))))) + +(defun wff-neg (wff &optional subst) + (dereference + wff subst + :if-constant 1 + :if-variable 1 + :if-compound (case (function-logical-symbol-p (head wff)) + ((not implies implied-by iff xor if) + 0) + ((and or) + (dolist (arg (args wff) 1) + (when (eql 0 (wff-neg arg subst)) + (return 0)))) + (otherwise + 1)))) + +(defun row-argument-count-limit-exceeded (row) + (prog-> + (row-argument-count-limit? ->nonnil lim) + (quote nil -> arguments) + (map-terms-in-wff (row-wff row) ->* term polarity) + (declare (ignore polarity)) + (cond + ((member-p term arguments) + ) + ((eql 0 lim) + (return-from prog-> t)) + (t + (decf lim) + (push term arguments))))) + +(defun row-weight-limit-exceeded (row) + (let ((lim (row-weight-limit?))) + (and lim + (not (row-input-p row)) + (not (row-embedding-p row)) + (< lim (row-weight row))))) + +(defun row-weight-before-simplification-limit-exceeded (row) + (let ((lim (row-weight-before-simplification-limit?))) + (and lim + (not (row-input-p row)) + (not (row-embedding-p row)) + (< lim (row-weight row))))) + +(defun row-proof-length-limit-exceeded (row lim) + (cond + ((member (row-reason row) '(assertion assumption negated_conjecture)) + nil) + (t + (let ((lim-1 (- lim 1)) + (row-numbers (make-sparse-vector :boolean t))) + (labels + ((row-proof-length-limit-exceeded* (row) + (unless (or (member (row-reason row) '(assertion assumption negated_conjecture)) + (sparef row-numbers (row-number row))) + (cond + ((= lim-1 (sparse-vector-count row-numbers)) + (return-from row-proof-length-limit-exceeded t)) + (t + (setf (sparef row-numbers (row-number row)) t) + (map-rows-in-reason #'row-proof-length-limit-exceeded* (row-reason row))))))) + (map-rows-in-reason #'row-proof-length-limit-exceeded* (row-reason row))))))) + +(defun maximum-and-minimum-clause-lengths (wff subst) + ;; return maximum and minimum lengths of clauses in cnf expansion of wff + (dereference + wff subst + :if-variable (values 1 1) + :if-constant (values 1 1) ;special case for true and false? + :if-compound (let* ((head (head wff)) + (kind (function-logical-symbol-p head))) + (ecase kind + (not + (maximum-and-minimum-clause-lengths-neg (arg1 wff) subst)) + (and + (let ((max 0) (min 1000000)) + (prog-> + (dolist (args wff) ->* arg) + (maximum-and-minimum-clause-lengths arg subst -> max1 min1) + (setf max (max max max1)) + (setf min (min min min1))) + (values max min))) + (or + (let ((max 0) (min 0)) + (prog-> + (dolist (args wff) ->* arg) + (maximum-and-minimum-clause-lengths arg subst -> max1 min1) + (setf max (+ max max1)) + (setf min (+ min min1))) + (values max min))) + (implies + (prog-> + (args wff -> args) + (maximum-and-minimum-clause-lengths-neg (first args) subst -> max1 min1) + (maximum-and-minimum-clause-lengths (second args) subst -> max2 min2) + (values (+ max1 max2) (+ min1 min2)))) + (implied-by + (prog-> + (args wff -> args) + (maximum-and-minimum-clause-lengths-neg (second args) subst -> max1 min1) + (maximum-and-minimum-clause-lengths (first args) subst -> max2 min2) + (values (+ max1 max2) (+ min1 min2)))) + ((iff xor if answer-if) + (unimplemented)) + ((nil) + (values 1 1)))))) + +(defun maximum-and-minimum-clause-lengths-neg (wff subst) + ;; return maximum and minimum lengths of clauses in cnf expansion of wff + (dereference + wff subst + :if-variable (values 1 1) + :if-constant (values 1 1) ;special case for true and false? + :if-compound (let* ((head (head wff)) + (kind (function-logical-symbol-p head))) + (ecase kind + (not + (maximum-and-minimum-clause-lengths (arg1 wff) subst)) + (and + (let ((max 0) (min 0)) + (prog-> + (dolist (args wff) ->* arg) + (maximum-and-minimum-clause-lengths-neg arg subst -> max1 min1) + (setf max (+ max max1)) + (setf min (+ min min1))) + (values max min))) + (or + (let ((max 0) (min 1000000)) + (prog-> + (dolist (args wff) ->* arg) + (maximum-and-minimum-clause-lengths-neg arg subst -> max1 min1) + (setf max (max max max1)) + (setf min (min min min1))) + (values max min))) + (implies + (prog-> + (args wff -> args) + (maximum-and-minimum-clause-lengths (first args) subst -> max1 min1) + (maximum-and-minimum-clause-lengths-neg (second args) subst -> max2 min2) + (values (max max1 max2) (min min1 min2)))) + (implied-by + (prog-> + (args wff -> args) + (maximum-and-minimum-clause-lengths (second args) subst -> max1 min1) + (maximum-and-minimum-clause-lengths-neg (first args) subst -> max2 min2) + (values (max max1 max2) (min min1 min2)))) + ((iff xor if answer-if) + (unimplemented)) + ((nil) + (values 1 1)))))) + +;;; eval.lisp EOF diff --git a/snark-20120808r02/src/feature-system.lisp b/snark-20120808r02/src/feature-system.lisp new file mode 100644 index 0000000..e213106 --- /dev/null +++ b/snark-20120808r02/src/feature-system.lisp @@ -0,0 +1,37 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: common-lisp-user -*- +;;; File: feature-system.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2005. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :common-lisp-user) + +(defpackage :snark-feature + (:use :common-lisp :snark-lisp) + (:export + #:initialize-features + #:make-feature #:declare-feature + #:declare-features-incompatible + #:feature? #:feature-parent + #:the-feature + #:delete-feature #:feature-live? + #:feature-union #:feature-subsumes? + #:print-feature-tree + )) + +(loads "feature") + +;;; feature-system.lisp EOF diff --git a/snark-20120808r02/src/feature-vector-index.abcl b/snark-20120808r02/src/feature-vector-index.abcl new file mode 100644 index 0000000000000000000000000000000000000000..a9cdb5221f1a932e73de949041bc2f100c7b18ea GIT binary patch literal 59806 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

  • IvVusOSnduMRPK%A6leZ<#^h!FuW=u-tqNmwJ+7&}tW%!lzl-Z!X z`IX&1A()!)yhBDH55kzH61sP?vhGs*^R50+-Y%6E;C~R^xx15`cIU_?13TMU#wyCL zKu0)K4l*!6<+nA~Ju9qAwAV(;Ucu-2ZXA?i3lgw4hS1wmgt7pkLdifPS{I0w-7e(? zT9RK}!$Jc7Oe(7QLG60#@yJpHNKyT9d}jsma#RK`UBN!6Kz1mOE?9m^t(;k$2lT`&#FUC$hs z(!g+P)3$|-iy3xmhz21gnVz^I*yZP=oC3a1TbIOSQJg&Ofc5UY&C5ktrOH`<7S-w} zeU?yV8AO40KVFv-BMXYaB=d2{QEF&Jb`{ue=gIy_{h25-V+SO|ltZ~RuoU76-|A7L z6_`bAl7CxAxdpyqqg&>SElMG*+a_}^y(-D%8B}^b9|ju}F>wvsCg+vEC-D|XwFNuj zUF$E|($tk=r-Vq#>cX%iA(xoT*QO*$;-J0L_i#j1S}22Gp?oDtif{iO3>dZAkJ%*0 ze{w)uJQH{7Pl@yA+lRcz3`(X-DU7ARvGtnV7^h6wn7j_k*r2C0ILB31>!2+z^Mdyz z3Szk{IcME1t(Mckb9kmMcD0}tgnGo|XHgX4SKN#+xdAGUL}C>dMw?QieXEgYQW9e^ zg4bNPqVK9~_j5WguZGP{L1GH_tqU=){v~Wj>pFnjwzmV0KH2O((!WdhZ4Fl`h|7Hm z_mmFL-eIc0Dg2Gj)}?y1UleX(+AiMiiWQ@yU>eo3=ym1qy+D!UEa=+A9@9YCQW};JK1U~PqMxiv-+c!y z#)P@cel~X&UaNT52a#qpR_&m1y$c-5g7Gfer;@cEvc3TubibDVoanhXE*&%yBr9r+ zAuzA13huJnCip%n6sE5mU^DES^F+)xBQ!A}22&X63qx*`ZnGT``5Aw+=hukkJ+rOz z1_2B`W#`UWRnRXSx|J?H`b`fP^vV^4rpRc!UF7G(_(ih;W_tE?<>h8`d&N1Sui^G+ zBma1g;ug4m?GKdTg!w-;H2!De{-+hEWbU{ zYXO7U8DrZzv9l1ng7~^)Hxmmr-S>gqOqmTYhBzNI(Oh|$`HSa}=cA!v$N$N=YMf!- z@w8^2&7-`BR?T(^KguK#0wlsfp1K(D>x7hTe+048Q;QK`ND&62ZKQr-plQw;eGXB1 z-r_oYe}??0p|R0`yXrL%^Y#9E^N_0^Ul=7f1WF8p4A7qtag(VlPogwwC01Q_DZ(HH z5((O?Y|cBtV9Jf>mJwHLrLw8zf|t!vBS+J0!0EDlrM+5g_vRCK64d{=R91(T0CeaR zmFkrRI>XmCuHCHAeHgeY+J`Au%hy|mTEZ__VdI+RHQ^7KFp?oe>?bM2bd=21 z)TW^FaQdp2?^B?k#SXm-Q<*y-?Fj}se z+>^U%2?WDj@Y>5EKjjBw2#ykAW{jlX-9M!9 z$h!Ho1-52}@JLzNz*{o)^Y@%2Kjs~2ijbxVQt5BS4OtMRI|U|`Vj4qO<(+BERhQ=7 zARbJ#_#a~MvJ}t6WiQkC%pwh?k+zorR83aj{TDjVxHd~}Z7X)_HP&*e0Nqfr(sNah z>3jBBoma&Wy)RdlPqq>Z@pD?)bYCCq^Hh51Z5ZNl0@5hh2m`jE&lU5*ey4@&MQ=8B z^u%s+6U>Y zaw=RIX1f(3sr9b6oVMu1ckQ>x1b3BEA*=4N|J)i0h2{3WK0xE@UxLOzHKYH4#z(Ug zv0$5UKc_GOLFkXGBVA7_7>0 zJMgr+(WWpW;4r7W-EZ)EO}PDWbuTY^{BK_f{4X)k5+bgvOi^ynk}EK`y)TwTIKnbExO2@$(!g1|_xovBnCrmQL>6pLZ@b1BHmB-o8ZjB9f|QqsPzNzv z0;-8u^3f)&`mY(X*4CC80zYJ3Q1WG%G7j6$*V+p3dsA-J_#H8kFD!|R>2sOMWqI3S7l`RYWeg< z!LY_}9?D}nh!s$goURD|0UFVBdyesbwwa@M0H^*veTq~GYD)DjZctb2>^Zu&+IRDilj7zac(-DjoodZFA5<@_W~o&*uDqIX^Zc zi4}}z{AGgqZnA*FWGK>1@|}`3C2ECaQ&(m)Ha%vS1$f@&lEb3GCN-cFZJpDI|Wbjhk(pjRrcK#xS&xW%wZV z4PQB>5+k5p{UGu#$|f~U{=H%wl=>U~j8H&ET@a5JlgHtZlc=-?()m5`6^nU;{w4}x;>$9PtX~%ZR9?J zO+pOkt@##l>>`I`7ld=?nZPg)=6A%9&wb)o5GHE)bV8g?um;h4wQ> zfOxDD0J)fr?|2PylKT|IeQLWG)|pAB(Oy=0WY9De{obb5n(KfPoq)mFCiz3_nS=ya zerP>+He^3|U;efu)1$0u5}i4?hlYs*#a~TPfv# zwBCh8SpI<0&8d6)XG0>N>?7R>CTB}2?e#muSH+dYPh?nK@c>Y-YaPis=R1P!ol-?_ zEyeaGFG_t@zhkj3K(9SakL0hhk|c1R>_1-5;lt}0V0g`*oML@=z1rkogb^NJ;!xMe z>joH>Z9f~I7{;!mP#EUOkqLoLmC)#l(8orDUlj?yGxoY;Tfb$DNBaArLVVA<_MXq7 ze0t2P^<1aWE3ISgdsXj824;HCH#G0FxHHKFt%|X0Q+R@=-I*h0kn^M&T-okP%c8oH zP=WiBO2vaF5_?%Dl%%(CF4v@eL)-xFOtnI+G zJrTA(5_Z0;mWL$KfsJeWE*E$bnfFt^eY+yV_JTasb*LWinYiy72cT8AN}{k(X?|sT zwE+G+$%uplv*D0c=>L#4E7i0~d% z0BaJ%P*y>DIk&si#5P=c{mDLV#yqAA19;~@P*rr-jWRmewsS7R5E07&WEiRP{#b=u zr*pXIuA|HKUZ=BtyqStP=c?G{H5(#>*u%f_+W*fgyrdwxKQ2}Y_3tX&{Ld;Jd|Y@| z(SmQ7;kXG8-L`wZk^1r+3tk;()rMQ8ab0udV->#O`u<+yh>8BoC~vJy3A+#>u^5&e zBko7nhU2OgwC^0*jI6_6lZvlr!h}TAFajI=!^fkk`vr*J*F;vskYL6D4PazjYP}S& z1gD6z)SLqRE$CU3QF-+LBJC`=>Rh)pn}lG&-Q9w_TY|g0Z`|D__{QBmSP1S8!6CT2 zySsaDa?ZU~)zvk6j8p&Nd)bS*=JTx2KOu`Q6sDC)iqTdKO9kXr?R#Ra0~tmc%n#Hz zm7!p~_(<+=Hv3x4{u z5SaD{iT!rz3extXQ#`Z z+T&&Bj|sEEkYNS$2@`+PJOTEQKWyA${179VuS@Gn<;s~s^C7af%OP*1;)x8j7^iKG zV3g?o97(~AnR|;HLuVT5{+b6Vfegm)ef1%2!5q>7kH)Fu39WzhYf}MBB)HiIi}7c8 zz~i5Yw8LCZ*Z+p<{UtK}$FTjMs9tvbgaFJ3qCdkn`=Y>mO0)kT)jL_qU}J{xGbpHD zUGZq+-Cc6{D<_?G2ECri*nTQp(`tXJ+f_694eL=!!!ff2o_2;r z;xnV%(;^qG753mNF;B6So1f0DZ2VD0d*l2jO}3dTTM`B$868=IqIxJct@d4=OQfZ& z%?kH&(7*BjS&hT8#t()UOc>ioB@E48@4sXH|CWy>IHe%@7H06o_72mgKs>3I~U4(lF~*nSoAXtO0vC^;GaSYk!OhI!cBi2$v?y*$L}n#ml4|AeWg9>KErz8il;)s8ygbClOM=wcKMxvNNlDzsdwsWNw# z<+0=8Gv-2mOe#86++~j4>p(9%FRcbRl_gb32h?Wd5XjZ)5ct75b-wzzT?maxFx4!d zrlg*u3DDo>$KRPJjnR9?xO%lp=#pYi^sK+zG6ew*YvD{oaF8V29{%sk5C~$) zYUrRvKZ2m%5{=NNwyDTjq|ws8WEMAkAt+2;Pd+eK`&Lhq8!ON&6~@QoOL=lk zitxEX_T$x+Bc6EOy10BU zQ6)}y@B9jGB_-4xU^1vzXM`47A$ha4V%?`BL(i4f3TUD@o)eUsTVe@GJ);QBDRT%4 zZGejEiqwW8(u2WKKR{HEMzsRjST_^_8$|U8%l=TkO$d3}x81phA!T@yAZ-?@Zyb~evEK44Vq@Ton`qIT2fnCa?Pf)EHX%7+8W3<>I6z$jet9~ zWf%5M?iE&5lFaO#&&fd-SqVX#TON^}Er2%Y)iH!>a$U6N7^(aNG3ZRV7FKGw&ulVw z=@y$bqT=B;n{HOLk67%QHnD+8HM(}zbG_j2lR%y+b#?j41}nTT_uU;lU$!@+n}IRU zrTwHh+Nf|uTn>c$LV$zZ6XY8Yxg;S^)%fR3kLho(?%zzW_uov95-i~_rib$lvGwhsS2{{mLv5M1p%;Y5MA~NlP$|!Y-ugOc9Ur*S!EmE z`2t+~YNT#C1?k57yt59szM%qyh@k)h0D(9sd1}?E7McTdnek6XPV52lpMK(*Hc1^a z0vRXm8x7D(d2??%Ol=8zV(j$Aq`S<;QV)|=3?47Ut1!@y6^qT;Dd9GQg+GHbR|>pC zD|TI0+)rl#UlvEQ&8F}7*L$0MxM2audh8h^hRj&Nc?%HJ!|w$#y(;J&4Ykj|Ia_lE zHh!hg4i>2?=?vHiDbGyjw9to@8w#s9(Ef^|I(7bGK8v*{~UyKO&AE?XAS-l zi|r57YXdPo5Bxt&?|i`|HbQ?q4#f1Bg(Lz)HwbKmD{*o8^^%)A%U@Q&DAtJl+hyHK zj}-#>UJGO%`hU{*lPVyQRy@#eOT!=*Mj`u(j4)_eaKqOx`A~G}Zw&1DLJP09 z|G;==6f`ZEIl38GBT3?(dN#CV-vJJRA4e7JZ|;4Ne9ix%MQ0uZQd_%U!dLs zDf=j2mFZ3A?WCvu@0Tk3^}^|77=YyJp^T2*Z%mIr$LJ5!Tki!0Qfls0fipIT_8t8d zal1U#PPnKb0Z<}ExsL^u*WS6%aIVj! z-Wq7691c+-t|n6*N&sySpZ_pDR$@IqbXNuhE7)IunBKXvdddMv6XOYcyF(x8CjL{j}h<)<+cGgtPG-W7##yj2CIkZ8W zIX-#!og`w@4f`0;JJuqY56_hHA{I6|sZkG3_xF)1Mvp|pDzg&5CP?)OtJ|%Qr}_4ilj?;-^8IFD zM~^(kgoTu{YGBYYsFV4Um?j^{{jBv442)!5P2;GAGj=N;l;$QLPyU%bPEFWnhMP@` zoMcFuNq)X%u{8NYYky0YIvgL`H(*}r84lQgaj)Gx__4qXzdXf^)kLOVsdbIiwrGVP zQp1$Jf29wuXk4>No_(exvnK>cq_8M1vnLMpk6?4qj(xRb&th}AR0J`-)M;>@uE&vT z5YvM)`W><>_CiUP5~&7adJSiu!`L9CcZaQ$7g=xwLVDfcPZzYsh#^}a>fICGn4ZHr zGKlHn%D^|DxepiTWw75D+ki&Wc+zihCc7x-qNEeRb?pa-B6tJo_C<{xg<$J(E(Us-y zJ!Oebb)v0qHyYoB=G~Qfchn;qlEZg_rI>Ad&tV{Rbn4a4orpNro^o*A} zVc0UO&+{VC7RyYd%nsF)Yx@k?PO5h&Z#b+sqa!q}j%w{f0^gV(CExol6P6|+ugRwj z)-jzPCa}Yzy-Vw>o6)s(syYvsAwrEnLqZkdP9KFH{L?*$Gh zyW+>1$s%V>ZZo+;QF2as3R5?G387QCk#oy>iZgS^q|ViUF@S)MCUHx{OE7K}P+AOE zFf zmzttML?=wlaWwEJ*)9B*?B1A5dil{=n9g?vc_qrKjsBw&dP|U-`}AbdWwg;`)yu^D zPv;TlBkW3%`X@8vKn#$}AZYY_#1fzP^__uj94p&ZtN^HLA`o?ODq>=$&BpJz z<}(4+y?II<023d>stXSo$Yy5KXgn>I$^EZrcTAYj$8aVNaa)d-Mr3uP{RfQ> zR(9jm_-fc($Z;=qg{dL=A>)zX_kY-JU@iMuywB6N)FDHlt%Sx=ddr7j2uYRDu>YUe^47KeX_ymj6}-slH=1&=sO z!+8L6>5_yR=#H|zw$AD;eLNJWJ4#T`-y-H;A#awO#S%Vj6jYD1gFl31zi8Ne z610xY1ig>{xo75oT&XktS3~dp-zo1mLk|n=$rmxs$hlvCUrZDI)@;9Sm&O{;&G}>7 z9s9mmfawOo8i7&E@lA(NufAof%c{j_^KFaA$m9LtBEmbY7QNtlVG^q_^m5fk+6n31 zE^&=qP|6!>A3Opej^jhA66H3$7)Bg04kg0STVW3linU~LNbB&UzQtM;-(oGRE}&RT zf3!4wKmXRPIb|r6Ar?T2VJP{H<&lsSP$kAp4||StKpDh-N;P_8c|8oiaBebdj;Ps(?z1|2em1(MqTA^MrM&alq)5m?h8|;HnNRC>-7Hdzy+qz(&ITyf zqB6gbXq!f)pNPPevOJt24Ggrf=#B~2LwA5ZbYr!^!zxlxa8MbS`}9D49ijg-QC?1x zidLGsSP{csU7EQ|O%Id#y5yWIyodjjagN$SeoG&r#XZULYfCFmkC*P0I**0ML!=DmGl1Fiwn-tqv^PV9N!`O8>h13VnqxY|e%#d8NyJQ?_s z6@R&FX~U-jP1yBkP`u@Q{4L(HylNslGKHITn4yvYGg!uEmSkDSozr_6*_M2Gsp|fe z;PVR10xq#js=jl?Liy#)B6&9f!HD0Dm|+F^2{UudJfh@)U$PRXGA${Yv(NKL=E#~s z^Cj~70(@du?H<`Dc{TB+mxD|nl|n%~eA2_$6oEy$)q4RlKiD^m-#Ns}sx<7LF0ond zK6GlAaG4pq&z}VvJ4+F_V8%_CVD|4oQxp^)q!l*C6AH(E-xp{6y zv{s+<5xx^5PFO(?gMl{Ye*cr2=YF+!Zt{x$3K8YvJj1q&35DZ4h0&BnHY4^4uW{Bv4ONq=4%&v z@a9+tsj4oHHa0P9#%iY6?h>{S!=7w943mwFz>%FXc`pT<(Y?k>XU4|-{2~~H79D%W zB!D!yIbjx_tV#G3K68dN#zY(t=Nffr#*t2Yu6NC*OuucwelR-xUTv+1hlPPfnXpgR zQ1lXu{e+~Ph?VL4F(}{CUqlGXxAcMGzvWwM(M*HjTIEuJSR>TLbWrAfju zatzgSW*oZhgYfhl{at5$1XqS5C{#-f25w4_?cqP>ic2V zCWh~m2+QJ>2oTMMi{|S@Z!%yasE@IyHDm4l{cVU(CKXKZl#|3q$JBMX+AdAT->Jvf=vMEfN7+yPp1GjQMOk2H@Qw=rRq~DVQ;dN7%zaT*GrO&ln)QCz%a((YL zY@tiGiDwkY!1#Dc%f)9$n+P?hA6EE`yh2A3%RvXd(d-zgJdqbbZRDxY|LFJnzN^Tb z6P3L`NGH9A^~E%~)C_@g4@JI0ma^M$oFzi*>(zX-v(?w^t8c(jH}|&h0j%|7A+dGj z%p-7npSBdI@|~3;$_KcN+`3On@)pphKN4+nd!A+ofBPPZC9xYW#>j1+oXVG)t=4kx zIWC3$Y{qA5Psfu5`cL2{us#w;2<)vYNlSk0H%Q8h;Mru;u|Mv#`Y&pEfhhKyser`kVz_X&1&Z0}R8;)~0QfC2O%jpgTT&H0~} znZ3DWM{>?GxorX81LdIQVKksU5&%YRt?qK1hUMgFUA-g&<7U6f3=>*-K~i25NXpwb z^8iVC#bhV@!^m`0ryP8A)Tf*`Wyre3FV_Ue(Vw500c`Sf;T7LX1G$8W+3T~RG{Er2 zY``NLO@nG#Zg*LJ!Pcv*&A7u9+hlLM)T{_KAA)w~hPQqXx|J=n(_2NA6(lQL_Ucf` zQyRg@Q|fb)Yjw8KU#g->)#UpA;JeNk^eS9lbg4)k7z)mjT3cW)O>g~~R$jz&08T0U z@6NCoU0dh5PPg|MoWY<<{_>FxW%yrkZ#^$$;=(Mn;Z^y9Nl~J^Wdh z4~@WIDuQMQ=6|*>XZlY{9wskFw6#&NRKR;;!r;Y;jfYy$h+Kd*+nnL50i5&x7UrkptA?}=a+{r@6?YN!W(lkD}~}_sg{safX^?a zx#NVsj8}=F*j+Ww5z>wJL&Yo3u&sMxIgs_3JLL?+&BG|o9Tpy))(e?l17u>b&)jte z9-~ew}zP0LpNo{Ypwpz@z={x5dGP9rpZ*LL6|_xzRgZb zE)SLK4CUSTVFrg&11vNJnT$LD?(1WISp`))Mm`p5YyVD$@CGSB!(jBU&Lg<`mc%vD z0-*&o(K^LV6H#glQ)V(;>0=x!aYv~JW{aO~S~d&8DgE_J;sYhm8LMm@ z@FGmr7Z`zQ{OpI>BM6~ReU#+4S&O;TwJ8d#IJ=f=<7JPG&n)&7uBwT@y|d}9B3A$5 zfQl)wCY%)gm8|j*8TH`1p;{&umZX|7W=UPZS|rASVY0N&AukKjDYe>lE5A|jkrGZu z+5TWN>$lBEcn>P)VQ1IE=@MIjMgl}@EL=TVQH$PV+Bv*8*;e_-rzB5Isy+DwDmib8 zr=@YK^#Zo!LPU^+#JbwMq2FWK)B(h(LPR3re5GoJxKl@i7py z!?%3>@HSL@!?23B1q~Gk|8S`IFCJdmpN7SMd3e!4f$YCBv-ruDpTJox|v)KeB;c>3Ex_G}H7U;hJ zc!t;2S;e=mdYzMqGpn?$`6)HG9MbqXLA+ImHz-^Zq`W;!S2E?y&fxdnPMEjXFa51OH$eo`ATm^(<`&IqEa5KREthS56927 zDR~8PWhHbIvN?c+|J+)gPL;0~IF$q;-9fleOf_LoBnu&%M!bD%ZIi65Y19EknUZCL zwO>0cehY6n!S=7KF~m!W&5;$cD(o)M6On6e!iHgQRVL3@rkVEnGpY;3ww*C3I04us z#KIVIJ$1$UB^sz{AQK!FZXyPV$YQR>!?#<1<&}_O+WmVoXRtfEH^7g4MkJ<7KY z!D}9}O(Q+p~w@m2S#VXYhG%v&dG@bA}dV`4dqr z{jAs48Gq>L7}sN=by=>ljwQlIsb=}m`X1Wt>n0R!q#7xHNWM5*VAENRy(F<`ib(bL zL}jQ(5w3w+Rh#^5Kv|(h)Yn}Ja#0h~vgGWC;MLMZ=>VlatPV|)XVFgPbAu`(m%M1O zqq72{yWhHAwb4@ambX@4!9CZv*r^z0ho*pnp2$n7O%zHYw5m;Ya+W4xp@&R@33x%6fZ;X9HVEgHD9j>35K zh#0CxTGQ1U9HVeiPIdR)^E=F=b+tT%Tt5jN_6PI8GFtc?XZxwGH^5;=)mQL<-@n0#c1$j8Y~E;C!{tAqOTEeSm7o?* zbLO{RC|DZRlpn=$Z3Kp$s4kbM-56asM(-w^N>eGFsJr9m3_>lc;+Q&cf9`;52-Jiu zZ5XAg=P&Fn4e%aX%bmjplk_Mv*miP!1!fYg*|dgEvNQm`J<_YOnO@Fmz*@?>S+ap4 z`Kf?G`>}y}KpjEABXYq0{CK(OO8QN3Gl*ltKNmLxf}FDnR>~pWU=3ANd~Wt!$rBDF z-(73vLYZv%jir2D9Od9PUgLqZ^N?>hg2!KkYjFTOozM-}Szk-T%X?+57SNrn9WIfg z&~77Yfmwa|lfv?0`#>ZGnkK;i;WY8LeD`$95AD626y}e%F6Z(Nc z=nj7lQqCQa1TVv04|R6NmKk4rXHX&DkJ_bmkecqe9)K}ygfn-sT@Krnt?=|9V4j7gwdMIVO^%)RBFH>jCEE%! za8`QJHVsfH32G-#b@JcEA#F0=Vr}gny&RW@?8VX|L`2b>;3y&{@wj0@L_(F4myBXYMa@V__vzeGMIk-e7&AIwZKpkCo*FzCf2fvn z7poV+020(clVZ7~KN4K&#kkqMOzq=@fWF`(4D6>Vo!iVxjFdB_A4 zqyJV_o_ZXMr>Q#SG01HnQVApFX42wPQs8r|v%CCEt|D?Y4pZWmo6!?7iXIs`LO@4g z#~kV}DLuFU0wK$77VnO7N@~>sNPyMaP&aQ3DJ1`Z`m<951xL5Cb?Da`c#kalqa^k* zdT~}SX%FAuRpsjhL7Y>di6!eFqPl-+cQzBCLPndmPk0XS6cxjq1&Ua?f^1G}=qP?< zL{(KaMs`_=A7qaLs(4^hK!uF)WY*)|{OzEV51My+#5jy^g^abk%N{GdyU$P8$B;fO zIt)UKIWbj#6*3n7cwT2w{!_>}3o2wxm_SRmzYdsPT1M<;MC!&Q$C?3t0TnV9f(jYI z-U=B{?4gmnrZSJ`P9%X^oIBvH3qYtY=@Z)U zYYR%Jm+TZ2J_C&|k`GAtw3Lf)tc7$dgewGVVMDs)0YJzUw z6jVfmVQEvzuvUI`PtEr#O%K;dFYrd{3^JWr!rUev7!UgFxE2*Z>$!>)!&MdCmIT-Y z*yy~qmalWKH@|>d%VR|`#4-$y!w~d!G$C+u6Pr(Je#&EA+?%%}|g5=LL zvN}l|UYeVVg{}ovQohH1XVdhH$!^mjIb6Y;KQwuhM1xl2e?jX0_U-=N%os>nLn1Lq zT%0-qM3#V|{nN}?t(PbOPC04#`QOEi#GiA5KX3Rw0#O3~G&8pKv~_HHUH1MB>UPp@ zSJ-b?TuyIK1_`{MpK#vMTQkzo>=|SfWlm1yrWUyvGox%~5V_BFU>*>6Aa+%aX>*K^ zlV}t*s0-j($_#zw74-K=aM`S5g9O!zIZ8{z$b6yS+7RZABQV&r4~qO5XKtc09OV?+ zKWxRS&9QDD6V?b@TrBq-xa3M+47%f$qV*#=W$MT@PY<*-OxaL@$Z7^YV-H#hf|?oo z1KmuGO-ltL2}UE(tDJeh=m<&}5?00m>{yHa#BkgZ5jZQ~!C=iOW#dgu>5I>bkoS9i zCFtLpT$uX(pu??!m43cnF}rxUT=BJ2-`WT%k%6Xl7yZaJc_2mN5SDtWwz?IUT1yR> z;KH89F;r~PXAaTKmY**n90AyR-Dxz|i`rns!1rx-NBfXc=t*hPhYfrXXVuJ!R+AHe z0`nvGl_b#f_r&tRE^3hevs;aH4@7P@T`a3 zp~+)F-Y7(DBI#O=`BIojJD0~*=q7uHvVC=u0;0(f6t20F{q$oVU|`>ZIo-Q;Yhc0^ zQyrU;FBu;qBda@O8es@u4}WO z*hT|Q@aY7aigX-&i)sf&LJR#J0Ygbif}mZT=U%5eNV40RPrZru<3j>}j2DnfaMT{e z5YB2fnSGP&OzzSPZeb*nn4e4G=cZ=LiB_YAQR{r(r=*Qu_g6XWybOjJHPCUjX#C2eD6lg=iiSnY z!+$l?$!xu01VgXkI?@@3j$eJZIg>2&GbE^_(tQ0JOdL9p7PrE-I8Ym%j;%8CTY_gq zdHWe$M41Bjwl@ZBO?>54`vX(cc7**Y3qHL;bBh7CFOwgHfRPX!>A)Nb!r2XhebimdHwVlyewM8h`kKb@F z*kn&S;}w`zH5Z<%(i~RTE*!vGM%6D^Lil~WhRFE{2XTWq2Zu{&iz$Z0!fGq|6u5)n zkQaz6TJSz2cd#8g(g7}g=X1!p6%WC_9{;-Wqjc4o!WKq49-FOBI~n}O^}tbat!sq; zE<9h8f7HIN)JiheXv-3dVvobP-jAPwnGox^@vncJeWg+%9(mBEjk*v*%a%?H1E=Ow-g`w-XqA%HT+5a~we--jzIu>P2#`tN2j6X`&p?wF*x2dBBy zdNI>$2n6c77XJoye0N@DiXMM~x&Xk^m=vhWnc7X7k(zV)b38RSQh2PO!72l*#;RTe zfEyn}W_-T(;IxDsA%~+TlD5`}Q+oO=;FzWUg-2W)HS9cF+d(rP$k=Tp(M1cq0ynm4 z*anr?as2qMZKnsi9bzA?9S7R-nID}RGNq+N^uaQ#J|qhfheAs+8pa9LGU$%k8`tJg zdT6ZBsK)2KD0q~D*4+wIH!KU-#xez3TZ78WQo;;^l*miw0sYia^>_-G=P$9RHu+gS z+F6&lcAwi^(QMVC038_JA5R#6=L;w!L{>A>1oqux8Pj*Lu0C{#ySBeIbDX*=rA56K zMt}QoAo&N>sl4P@U_pO!l4FW5pfW(SfX%%IE&t91GGSr*C0m2Yx1N!ze!0Yo7&fmQ zI1S6KSe;R?-sVtLCRqj@W;jQ{OcvGdC0I7#$?t+Mu1Z~RsCM2Z5WXlA06+46)doK} z4bbJ*AbXmCV1{OF2-$#EV&KWw4vk;)u0B6JPus=h?{Rz@;oOm}yn`!#H2IybfA65z z`IL8+DUA#ZlIxax7@kdn14Rr18pfF=;&cgkzeQe8NMKBA(>PZ?fg|vP+orL=Lo$Gt zf8#tprMhpNjt!l{?tj7QnE$(5XG$W`B{=Zr)&*Rc|8)rkk~~e|J=~%pr7zDxY&`J? zD!<^+V1)nNZP&J*wI06N=#eDzb_qqwxQ*9k^i8b$<#GD**CmuS58%C#*HZa`@Y^Mn zrnYE)w)Loq9{AoddTxWV1T7Yad~dot;WQgFf8W zFUr}K+=TU7*+X(txW<^8XwZeVJ~2z}giZ=m05x-rx3enI$!x)BSl4IL?@-^14@WwK z+&bL>)jFn+t06H$MWPh2zIh`7a(|P^jbRf45<}Xh7cfN%O_jNX!X-78`vL$ojd>1#Ij9@wj-gKD4ZKDe_o&%kRH_h$x2QI_RNrZb_m^ z(+f*9PanxUY5g@)rZ2i|xzF#P`?cY-0T{GatZH9tH&E_wCCL&S5H%!KZ>ve{O@X|tq51($d zij79Go?5gnH+^nz7h_0GY_`#???;R{=fZwQzVPcs(!i}0<3W~;v;4%oK3kTZpozRb z$dXE%6sbI=u#MT3^BmDc?kKJ8fy|}K#K}cs*8?j|eDZ6uDkNH>mo-DDL_gMqdjuN% z_LBg`0aVP0%qIa^W?aj<3-O!Z;BTs=c&+t0AnRZaW0+AblQ%+)OQ ztl$opah9JaU2A~HCwP-kvxtm{r9^-)g@7mzM{ET+$R*k2Q6-m|Zo!kTojZA#@fr$P zB@N1j_(#e~zU^-vq3+}D)T~<0x^``V1=arQ+z74mXFdCD_tCRUL|u`&UlU)_7QbRy zchD|zne}^FH$DpsTa!IGU=#GIV5u#6pn$Ge?z&vPKzScJrT^%-#yf7)@Anxtuwbm< z-L9O66@t=$BZXRkJtC^W;rOz~@EzH)=3MLv*o$D72Pw+Q1t(?eh?Ts-vDi)-8Czkq zk#a}%)(GAD6=|dwJi8jK4s;=9s$Cd<s}=6fORoomBixU#MnIOIw zbehXgKduMTze9L}Et4o5syGR#Gyho^)o85H&HC{fm9ej4{~hg>2UzyyNDL}3AQb7A zxO;6L4aktSNTxgD-Q%2t)y>oSehGBBM8bZdpWI8$P>d_Ob+d>wzJ-;z>6ayRZkMd) zA}4(!=F>HM(EL%g7F`!&>(yLh<%Z}-`JxVSKr=8L!NS|t*k6r6beTw3%B=ca$G z2f{xo%ihW~c7(o+i$yf#71;{q_CrJ1BkVeg^$esIO3{i^zT6_0k?SGI3pn#O?+Snb(c=s zU~j|jmsb9G>{X1JzKd@3fjRV0t1#Ly;1N1e{d;DXIG>tOwTsCkzbtDv2w2XCP^3M>)UfufY@)6slKULv&1U@C5-sR986*MJ-p|YP z5%kgsDtRa_FD#5~*M)fQH4YmPg>up`(R?&JnvRapyGJnL!|6L9JfQ2kK=Wc-ku0n4 zYUo4UFpNDzz$OAly70RCUKXc3lV+Hv6!Q zo)qzQlyUe((*G3t)?lSRkf|bYV_ttUpQvp(X4wZRRs4&_aO1@!Pw406OBzi3s|3=3 z$05=a(q1~GN5A~;&^C#0H+63xA-w`et{YPv=DFN%!#!F(WIH7?%_$f=!w#dYu0W|} zxN;J=>C4=jUM98Sowy2O!iFQ8g@!sU#2o6VhdFLI!DXxHL zOmp@Avcja=!+Oa_XO^D?VVO2+J z$K;yqS2j}o!Y$}MO%upc-5KUqmXcldt%4wQa^ow7VAPu*tS=%#-7+hY4q!!GojlO^ zS%Q@>x4`6-TXT0R&al#L@gPX1OH2Q-?z<+4(E^+46Q?29jt1n5v*;;(!lzf0uhy{B zW*lM-nVV|MsI`z`Y_gk<9PeTn7jkOVn4cYNNoM+Up6cW)z2I!D_1;Vs*oFQpZJ9q7 ze_8G*BoceDrICfI1oWOsvZelQqJ_%vRwI|X%5b_h>OH`kZli`ZuOj!mhnM-h_gdi5i8<>N*_yIq&G4s-3rZv;x&Q-kq z)i=s5ElPA3V?gkpJE7LYNFdO#HOnd*)c88aAa)T^ei+9uX;v1oPURTFZkd>D_Ena`h!e7*qIs~OCib=8?A*8dk2S2L;2nx8F82=b2opBYs>bb| zKP;Fe&}@!=}t|`l_7bSUuP- z9eSN*gz3s8mhxaU6Mxs1Pb|N=-Ig>aw7fX<$wLw**pb0OxjWwF#tee7yrh((Ux9iD z^*u)64|DnH_!=KcJU$p=W1cK^KjCd8hFgor0Wze^l^bOs`|Iy9Z^E-w!L^N%glj3V zh7sHEy;ij=H8Ae2J(7&TbK6r`c01|-oM6SMo?1(dADV)S7yE6dvW~W>DA}&Kw9H3` z4Tc|=jv3OB>_(Y2pHXlt({GSXFmF^f5__Z0_y;X& z@ulAEQI3NYc!g%`yB}m+g8cmnRzLUmY13050z%AgkPzw-zl9+w^k3;@E_8NM&{&P# zSXH@-HlgWeU0kb+o)WulDQpr3Puw#0^YPsOd1{WM2sOl@i{9@b|JhUfqchd2SSaEc zp?=e$o0ndytEx)`bsUr?YWjT1MwCnI6d@7+-VDPcoJQA=oJii>Fi&``aQcArw5Ix~ zydNC?)?Y(`H>#8T!{D8XMhakb-evTfbGL=U`{ntO;N8YuW;Qh$*|d>*XsMXPK@P6u z?oK}Ul@h7?b_eD{f|i2L+W3I&O4T4qs`j+xVUux`QuxA+7!V(K0c!;FNA9BWg4RSR zLQU03^wFTD8TW#iF!LZur~!_#+s-P*a|*diLeR8RF%yXo7{OO408r6OK_=mnSI6g> zM@OH-;!wlP&P$S>i*m8(0RpQx?au0;Ct_KZLbkwm;o1?nZjLg}S=?l$bTtucr3BYE zH_qwE5MT^9X}fZvz`ODSo%N{tvBj?%DVU>gY_W!1=b>`R{w9(1l4F!%ta}Go#_6O< ze-y1eNQY@GzDgS|Yah%Mkl@LNpM{@>om)i^=8i!Jw0pk{yDZvWYTY#F&@j}#-|Sv_ zBG&;k8rB&ie9)5s<$i|UwQazl5q^(6f zP;@kA@fu8G1t9Ka*>?2++xh#Vs?xhg(BLD1DzYN8S3-4euBr4L;u zoBON*eF6|VV7rFn2=C~{TlUGnULx^UEpjXwHptE3y(*7qL?|uOZ~=|z7A_&2lx2;L9S8gTANQ=v-adNV>w&N^l z^3O5|z6%`6OCZCSgd3RrV5qAOKs4OHu}>uz8m1TLN!)KzxCo^(ax3ARPQgcuzI8g8 zh*+>Ja&1{9B*3s8O`^y3;=S9qAH$Sst}Rs?2~{aP3}k#ST(5HYne{X@zS3f*7?_K@$a^Qco+tur3I84qgU$~cT7?{zjAs&mnV5u%gYYy zib_=->)T42w5Jq-kH~N;5<|L_j5hhO%@E^X#e%N{iTz|SFgLigzwo-#yN*IC!S4xt zL3xk&X|LAD*{uc*z|(1>cbC3GQ`7!T9h#xP_?}qSR@{?h?V+c`2M66IcoLtT`WJ?+ zx}AK>v0YIE@ydAv>$(4z%@=(9nn+$>vTvBbx!YVLF=;micb8FNNfsCh>s;M)Y<-fv zyNZ9A1~tcd$~%ud=L?v43Yh8X)C7fO zMHe7cKe}>vcodMaB*sS zg&()OyCTdOK#^_<30mVWDN1HTNQ#DBZbhy3ogg$g)>O|Bc86r~K7r1#{_e7h&0Iyc z>Tvn1L+>(7(r*ho39l_`h-Or`n z`j_W(I6{w=>I6N>1SX6l4BxsNx236X`O;0!3O&qgt&rEZO@=!|NToLf-l4cAtUobw zYM@Jk!@bOQair8NfH3iF00JQY##= z@w3{{^#73dj^B01TeNqZrs0m$*hXX9ww-jxw%KUMHX7TuZ8f%?G&Y{J=iKMjeRb}i zu*dk0wdd!z=3EnOR>dEXbWxBXaU8xS$V>R`Et|5rB{9x~qivjE(Vuj?f}Di%<7Zy~ zjA`b;qYOfd5wEq?=N#CYClpT?8}Myg;j%8w^U6ZaC@(Fz)|4NQaMY?y)s)g>QN&6( zH#{_ywO5Dx@zo7v^S*KA3O`4zF{i}d;)7d+V8N_j|4VCjjJa)3M#QAaR?&8=m3!Wf z{3nqlK!}ooGK6~84ZeBawq+2}c5&Po#tr@te$FXpRE^M55TK1@U3XL-eKen2hwU3y zaiF3Ani~5o{LACiypZ_&{FziOa(PCmgLgoP-c!(q z>gmU;WKZx^XH=I`I*P7KeU&} zRZ-t)tBL!ANx@)1GXdo?U_>Oq(H?!A6f7JraeKcn<)w>6P?j7jyYY_MQ(k&_S%0QD z%ZKC5f;PPTcx4L3Mge3_+m5EMI~k>=xqmD-I2JylYA1g_L0s_k9tvA3N)9p5ln%|r z<18?S<{1{`8@g+E(2_EaI7(wC&7P97a4{55gAX*HTZ^a98T~ zMc>_K(#-uzXcJ7R^A$ehJU}f^cURSu$H)xoAhZs@>*A$hIxmBC$HvwfU}SqL;=P1H z*<_%!RJ&jIeB?@6RdX!$5nHw>bFTT^Hi_Zec~*%sgWAmOj*N9tAEhPf_xd{co&6{4 zl%Kh(n81))G2odUvXnK7mIp|GQz>%eIDf1^jAq3mM5`b@Fz@cl`~7+G=ooKUKDQbj z!fTAvA#3+f#M$lWdLModO2XirUG3}Yx|k}i1w7A}>$AZ-X2C*Y=2(>2v5!@`b+5=B z%sGuz%AY zFHYs|-Vqjh=>>y$g$fFeD~&xRO&%;Rd@7WKV&6GY+P|yBCJI7=m}oLVErI9odFL>j z52d4VU;;THg>Szsdq0=p&?=5jU`A?|uJ93YXYI6=2xw*fOn@9yh5}(q3IzpW<+eI{l3zWvWXY z+=V|FD!y+1x}DHvQ!&;=x$qnnyK(=>;!Xh}!3h?RA0>!pz3x}6HnG8htF}+5OXBLU z%S&r|VMXR~?kfPa>o}=4x^7{luE`bnm!G}ZfEDchl^H*Sc#g4H%C&~ud_g1ckkn>7 z2#8@BRu0J)rW`0@KQL>CQ;HLp2o*HU&~j6k+@)s|@_C3MC+q?)-#_%Hp@sSyD!NW~ zmlQ0!amNOak7e|A)8BV4je9LdPW;}NHO7TY`f?`Y8ZoXWxtiIgn53*H+r}??-&Z=` zeGC7zWOUryocjUc|0unAytM8E!4WP#vj}FJuYmR*lq}aK5R99DMqN}}yrMvOm&wD> z&dawcl0ewI*?7{?JF@L9GXX!2IdDN8Qa>rhGSU$1&`e@A6ig;UQRJwWICqODp9?WV zNn8oVwnay_{yZev4!$8DX@@T2Giw~&iz6@Rp8!{c-c8`ofZqK<(8{wUs-C$;h{0P} z2*%p|DiikHKLtZH%1&|@_GSG%&y|xMyMnMeJl>VYb-qu#s+BU)f33|Fvh~=2dx)ne zXmsd(*O#f0$hZ4-_Y?8b61nx&jR^4T3jWqtz53tzW?4_L<^Fs~#sFoZQ_E_$| zx^E&ID;|w@YpS!R9z{EwhE1cxkrwCFoQ)AW@ewBDGA%IO+|>Vp+&dia4|>Q_u%15v zI}99zWMhYzY%3`qAO&?_@S^1ge)7C{p7s|44C10Png8kqLa33Yz-$H|y|c7U&~L{p z)>c={Cz!LbzzcvjdZ=ZeJELD$J4+knCf+TFD`pw^BDdj6MEe(s)bC;ULrYXt%0;to z47$XO2|-(5<~Y&~57**PXacvw<2>TvmabA28HR4n08h3sCKzCDTLbotbQg*YrPkja+1_mY$Cx)NF!^I5YOgK_dc4jH|6i~2= ztdrzSVLdc-6AB`I(%e34Vb@&JgS=-4Vs_|Xqis~M{*w8$xP#If)6E-0Dbv>5$FRl+SJ2{u-l}vFeRxG4S7tHwaoB zK{dw0#8(`OMd}BhbI3p;oF(YSifiZY!*4=d8LJc7iH`MOZ##^9H%wxhaidGb^g}aw zICtmHj6!d3dUSFBjq(}w?8cfYUN;7X?#mM-*&+VS5usWsAPM2aIFLlT$^cBn)R!&q zJ@`tQi3$VONn#k_$(_)Kn-segu0u*k#TAMK%U>Nzqf4{vGgQsw^7R^%_dcdI z=;lehI5pOcWh9h#c#o6gDr`JaR{^=?5%C!Bw#{qydS1b2!ZDZ^?3Tg{!VZI;p`i71 zoJrz$XHu40Qk1m=bv4oNM>z}UY|C1}_EVg}G%g(77_qI-h zMGYfM#kl*JFH^f`n0HMlzP;E`56ZS_$(J35kU`aLy{SV&XmMt5i5f_~*ROvESK{Kd zxb4T_s{h}hl=+{1u3lA34Mh$0Es|smaVJorbXxIp9*j{iT2-J9M89YXl`PTaYK9Yw z1R0BoLx$=;ZT{ze)Z<+Udu6DkROig%UEp0>?LH-?KAaV?)$-c*j>F_`X=DBQ1595o z7bZKwg15CmF(Hfb+!cL{OLatY)R$w1nzC{eLm{)t_7Zpz{d8k}GX^!OxGJ?MN-2GY zl97Xo1|ikzq6#APpsdu;e7ay$;G)%%gIB7~d{}LZ@qI#get!oE9GD+q1@L>?iU}xd z7Wmal)+E@8^q}6TyfQDv!K=godw;dq=iHGTTU|wMv{v;<83U{jQFD5rs@{S-Ez|*l zi}I&6(qCcMqMDxmYXNqm$tr;-3^0iOi7jAj!ebEH9Jax}$O;gIT{KXBm7_2drqrOo ziesRGJ~c7LshIB(c$VRHkqfH+!X*@46}H7s3@JIU*gr1@S1W!AwK#5Dg;`|6 zg4~05YP7ggi-+Vc%sn~vyK50n#{r6^Q~D#ACAaw`>0PDQ1q-k;wjiJ^lFhKGb3k2G3-vYk%-tvse(Ev(?%&CGBNDb6ZibPl^yn0R7T+iK(UYC!H zOvA%Pdg0H#0KbkLbgBKRiMvbA4q_PJ ziu?frhOLAZ8d<-MnIScc-9;+Vt8sg%VG2r^JJBjZ^tk@2wd1>r?}S^9-M|Gm1+1K; zZXCzvCVfSPlB~6|s{cV#p_sqGCeFtY0-*)H&hNMil?`=V$~Cg=_XbWRRE0g@o9mg4auxDzUJzj;< zspw_g??LOqKh*qApfNl_S^d&mSV#2(<-tbuI2z0XYHg6PST3}sR^aHHk4;f%pBG7f zUFU>k((4k-@Qq1h9;r{m3!;ky!o{1H_Io$W#6!fxPu#!KZk^c5{x<&ttAVe}A;X-j zu(tpgOL)U8)VzHk){%0;M>8~^$ce|cn^6)I#8w^rxCA;%TN&l{~q?Az59 z6&>Vn|II(<$2TFCHck}iP!@__zg9}+7)Q21tOAf$>Cn8b#Dth8u|Nk+ZRQ0jrEcl= zlTC62xTZEa$e*U0Wi@6L-x2oSOZrRv#bk5WTGlzRR0qYo<*lF^4Ef{E!MZW1*W@ ztf{Nxr)bUYS3Uy6ZlU~sWE@gVcY9{?pz*3Hk2;N=95ie%o}~&c8^k&uaR0t!YE|cC#7%c%uf*^XDKfxt zoEn?z>hA9%0V!cZ!d(i~&X|uuP9a1gSla?JzN#oigaLZDyuOo#ety`z&qWBrkY%UX zpM?nO1ypErqI4nsey3(1q2G^JEN!k}jn}06|Fs=o((B9r(RQN8P56TsRM`qF4MkmC-tTfg$_6m~)piy`nmlBGwcRxn%7?adYTNqI zb|06^|EulR^W?SMQ$Doa2$LN=3V^pdK4Q?sWSi-;u(YfU(TFWKDM_BuNHzsYem+>{ z1Px4M8@pI=aI^4M3%U}Q^duy`Ra!^CtuaDgUTX`{0(-j2W;{*)GAqS>P$W(Dm&GJ4 zXK*XErS$hhT+M_l$kIx#FSXVn5-;!UShEoyeR-bQ$QDbaLpYD8$sFl() zMsy$qA!R6Rr|yAFM(mNFM25Uj-2A1<*AFvMJRRve#P1=TaX5c3oq4aHQD|x#u%RV~ z3KJ5G&h{>A<4*N6_SgC|U@vL6FAVjyLE{GD@Fv=V1tbM|=2|t%c%E#Oh?(;t?a;xC zqtQaactRD4l29!@+ltPA65{>T@2xUd*v=bf3nTo{bOpx zQLRm4q(fv^FBM=4W~p3v1$Q<}9+gZlmm3Xx@69hnr&BV{@{>3f4Nf}Kfak+ybbGD9 zvXw>Vay}yKK=M$)dZ2l(%X@2FIo7vGYON%gM|``}VV!Qz&`HnTb3z>)Ocf>jGh>ly z(&iZgG4JZR`BF(q7JR{Wp^QcZw{_0l$rN}7ei0r~I({6`7}oDj!oQmCmZZL#RH^;o zC?i~bMg;wQ@UNyjq?GzYu}_YK0~^UF;)?A_j~1@=Zp?|;U{~+oX5o&lScTDMG+qgA z!4u&we=@%I-fb^L;<@jh=;s)>yVjXShhp~{-k}J&P7W1Jn>w5-WX*`Y$AwYlBWK&= z%)}qq`rDxvj?T;1CPSZ^>k)(8q0QroL3Dq08vY@=)jx%H-x{XJ+x(Kl*{B6)`fpz?A@T6PPSz4KNgoOj1!=^Od zhJN(vpP*Hwnu`GT)Z-pk;q91&M|5U)aj-_Smsmsmjwjf^s&4%bF5m29VpaW*s_vhc zv0ly014RYZ+a}F$hTRe=Fj&2-B>zlZb7TfJP`&_TSdl3kgMWt^Q<6aH7a0^$QyA zER{JX%^E$W+j&QG)2e!|U)WTKnnIN&rI<98M<1t&%V5$!KS324{ZIgL_`=|fR7m^K zu95b@i{V-#V&G6KE-AmMf=;l=IjXDVgmJZLXE$L$%h7yY@_HeeD~RVC1*BJbMlc2T zG`}$_QWhCLGhw7}trzj(T*avGquY@he-uZRVw|Url~6$_FWsfdj&IA38#lFpxlkma z*}}O5Y^M5KV4^A8lO$nE=hyFw1XUO`O*IwAKKX#xo?O+uN>!EEq+pCYWaC|9?#o&B z9V@e@jKD)RW$>3^)G;2)6tgu={lv!9_UZ`UXyhc2YL{hZTug|jtC|rIB_;r8r!8Ok&!T!1740nEVn})hwdXAyvUy*$nh`PELXn_rz;r45oO7b23vWRkv0e0Du)`tCC;gxF-;F_1p(1(JmGJ%*VgHdYp zh>`FY(OsHgMt*cb4fII#!C3AjQ=M9kVCc|vu-0NkrxQ7*GDp{%JtWMN>B zra-(CIN}j^Ma%Ej-L5XVJPl@Wzv!sTq?=L^owINUrdQRKQQ|-;`5%2a5 z8kr(}&rCJ-8o1bhU)i7)dVWrC?A-2b-bRCEAO2%>EKx`=SsX`k*pfJ&mcV7^Qx~e$ zXXe>`>n-60l%FK6%O=d^<<}AXaM87ZCrNqbF1sP=ZIy-PT(j_ytC7si*Ur!XlERt< znIDt_CG+vwuwdPoDq9#fc7iy;w#Cffe3eyUzcIe1;;B6U#8^I`&l`!c9r;9b3BFQa6Seydp+t@YcA}KDFkFRZe_pTWPyt9_}e}6W;YFvQ@<(!?BPiBmG&|BHm@g zCgQFMzgjd3{c;QnzDciUKWMd5E0_3Ou53DliTxXP?;=#Bw>3tWtE#4`6)27h{jfe$ zL?)~G4q&b?!ahhqHQrDY64BsKlYd53fZbU-xT#=nMm;;bO7x9k;Uxm-TWkiQGT~BC zfW>B3LcG_>5~E?_N0a+Nw#gm_!hp64W?5*6+9D%0-a#=2oS_G08*8;L%v;*rFKdM! zUMz}kSpf@eGs4+HdOXhl8TX6r@KNJC7n~uZ2ZYqGxlooD>|#ilFaxRbnkc4c>^Yz& zDV{3c{nt`s^ab|tz5E2AV{BC@ByOD-juMUR0e!(YB(9erdn^~YcO+(3iCA@EdsMBU z>AmV-y$!t|2Q`Ms#fCF*l2na<{wBtVy$aZ$050<2bVS(oNQbU$OCotZ3_PUrREXc* z#kmfh(1(+h;<1I3z{y4C+GYjx!0OuXOi{o$_VIw3z*y49qwK^GMS6$17taT0FDRU_ zM*tDLco|s`N1cURhT1a^PY7U0j-HvOv9uph{{Ged;7qN|`LN+NBK%J~ zDdvBc={XfGITVEtD_*;0D_Zk#zP;G2AZ5PxEEv&O0ctBknpkGuXe*C0*t5j%T3~!b zF5gA5pa;}mC3rCorb>j-N(Rtd$J5t19E|s$jg9ZG7w+*tfme;tt54N>i%ecihf=rj z6`r3zpgRPvpy~`e_@5wS2(^Y71q6V@e$g^H3{O@kfxjviv>y11eJZO?$gpUl zBEzze;m)m=jh@^{v2q$W(y3I)?SGxJ-?-Hp?7SWmHjNd3r0)z#0TZxlYn% z81i(8Dva>!kSKh3+uscckcHr=dErKb0xui@1GF1=3)_?xG#q~adMp}+qVv(6Rhg0$ z;0+p}F_ODHK&6qQcY(`DvJLAlK5Vg%rai@xAIKPzOEb@^3ZeS`&>X?V2w|6$OrBsbYV5jdO}ytJHwv^6db9RyvhlqEH#t2eV;WH;%5V|I zsq0kWvwl&_#n0?#WYd#M#|lFdX(n;c%)&4T(wls=wD&*GXIPWl+2NRDufx(ZlF5bB zx5}b!0-{i1fZL;-3WxC`Tj|`LW@h*PfE+rYhOkf1X0psd37zJNKB16NN~KDo=4R0& zQOSTozh~&li6oVn?4EFTQQ>0^72c|fYX=PX24=hM$w}p)J7+_I@pf z(2)jB$Y?Xdfx&PdVxFYTDsO|PrA=lzisi~{mfZsAh;%zsSUy*mvF42)JZK*wdW03E1dsVkOcF-fSFa^1#pD;KFe_aL#LI-Cqr9740gZ$r`H z8JCF9|1z~G-(KBeKRkEA|C{HI`9B75RV#)i~UsBhFT}G)olv=MUY+<7aq1h95s19S5SG<}$Z@Y`I-r#I~b5!c&J& zoA1w;95SBM4>Hy^-d?s$KIJ}uvK#fw0T%PAx|%aA7EPAQl?a0)3FhN79tX@)TEDH< zkh?J8>n^0HMEJSBj56X#)?Ey(YHO9mPf8sA>_p*(0=!*+xKQaBaiDE3g?(fN$-zF? z0nvNk&>~9|(5lk1bt1?~94{X{E>L?zRJBUVbl67RhgVX667*JXQI}uwRX;ntSFWIW zyty=L7uOY5A5++4~)HALiTMCwI=HYDE8d)qV7BGm(k?15~7-BIy)Q zvQiQe9OFYqX+P_M@sD;o8Ler|oUJ|;D;;cFi~SMXfdlTG}1kE%GL#0>O_TRiz+hx7{MX7d$sZJM4QHVY8N>g9nxqTi@NI- znr8DBx@lir*dO49tb=DQFzn-1CL)bYd!fI6kFd1U_tKMD)3+Bsm&Uwxs0bm8C5C{;3nVhF_;h=B#~}TAH;xpj~V!Nk!PD>j1g&l zvJ#l&rWG2u4yjMc!bGsGk8-7i97}7TKv-9t{B>h1A@i(F*umaPqa_92(;St*Zq zM(&>(BqVKN_f3u)g{cA0#Z%jl`b!>KPx=Wni7m@pj|4=pkzgf&LCp@bHw8brOAT_u zr*vH~=-%16<>gpwqxyVCAhaPBOKH(0h9~kBR>LW)<&xQ=5H~?fNMrj=KVeSLZ}D6_ zU7A5!kGmR^xQt&{mVLG4xGSJ+Vxs%gM+a6&ZjWtCqE5Xv=?7C4a4Fa@$!{ZFan{` zvKi?x-Er3s;fmaqSH3=PHfc7NT)8%SANgq6nohnR$YEbd_9D^aL+mnxBHv3Xe>iE` zC&3Oq+c)^#=t|!tve#XD+$%PEY~aRD7^m(dn*NXvdR;~+bCoSRxoOi-dzv=M65HLU zz}7>kM>4KeiK1NJZQR{mcwPsh`@k2cva40X&MAI3MMt!L&XS3o#jdA3`N47sYcUu? z-!GV*yLmAyZt>#2{FCds>GwDT9eJgh-{o^o)C^ZHZvWX_W|K|88$RgS>VKr?fA0Qz zHE5TQ@%N_tkDfor{QUW2ZpN8{=BwEVnqcVkcNUb;&kVA0+2A#^W_|>I&$QbWMNL9$ z3Cc>S0=9bIKluh6W}l78nE98xkUZ@7JN7zSJzd-?JKtZ&DLE0D>|r;u`~E6dHNH1h2bJ+j0y{&sQQd8y(N^3B@Af%?OdLU<_GIPaxTS0 zQ+4=9&U3pOLHi6Z^L6>DPq2PVUT#aYNM*}f5TXn0^!TtCXyG<}E&nCwME(-2I+#Pa z;suVW;1f(7uZ-Z0TH4Jx_cK%dsu4oDT{Ny#%!0g{UDf%_GZkd6gwF}xzfl*nPZgJE zB%QNlCM@!5pL-HSP>g-3Ng((3^g;VnmMhAnf5|x}pMyr$ySR1d*C_aRplP&0_uXBE z5nBb~baz}1t`z2e8e4OqTJ5QI9}Hw-ZkRy$gZ0{B z)I*+W*@B4}TS6;NTy94eZs|a}hQLG_L%PQ3CKfu!=M#+Y>$c)()fv|wTcy!6r277Z zdt{*3_vz8mPd(!}0a^o5k=;}T;&3$Crtxbs_5Gmf6Mm@1D<%n<0L!uBE#2(G5>Ok`Cv;U&Az+9He2Re@`!?{Fmt<*~k zclz20M)mD}X0ZV;kdr`HMp|j2p@JycfM3^k7UvHIYEBMBC%I^akW|7#y3U<(mzq4r zk`gh3GQRIgF-5u5;`)EXIU{2B{|C>tzQD64JGRg*q7QhcJs(*6fam)M?&*m5PA^^? zW}KLu4srRbp!sKO;;=hq^;tswO5k++ET1!`>*>LQ9Pzn9vRwv_P5>@~vbZ|cHla{Y zuQD6XUwr1QuNu}{ITgFam<$*!o`20Qvhk-Q+Lp+b%qW@qO}YIu`v5c4ohmJh#C={o z=Kw>q6q8ECb2@lq;UKpd=Qf~?clZPv+>lGR2vPdzGM4bcsKsV-A5^yAc#B#S;z^YR zXK|twFj^{_fuo;{dUGSm7IaF88v)DB94H4wVsy;ke@k>h|+&&9jwRwLoZ!! z+U5beG8gUgAQ7BqHj*P^6Gt+yuw2*+YaEI7#>DSdfLtG>@4X4HQR4ZdYa~8zPKB}- zyZ_Y*3HpJMcU$F=fi#O83tn=skBg1f*;CUOEr0R=LQ{_(=glW=!{{(VWF1?KcJED# zc9YuMOsSU&7_UgKFvZN0_Mt9%_RUl~f-5iK7Cih?2eJ~SiiCvltbS?+E524cBGD$L zNtRy|$!^E{=Un5qv#62H?58bkkCWcAiIiX0)92?zo#+I$H5W86@NE}DfNh(!V1gBw zVNn@AsnC?%6soMhJA9?dzRP>)GlCFe^dmg#R{ua}EH|diH@oBjjW!}P=CHynS%kD3 z(l|W&BO$Ui3&rs~%(%NWM}LWh?~|=R?P!=`IdPpTH}hBCk{pB4+>**RONx8^LhjoQkWxL$4aI2AUS>DZ#6ozEhB9 zEtRC#i+&4`mSG5oiFV1f?Tb_c0R+vc%c zpjRWi$aJ_EI#l{v3mNoE7W@wz=2jwizMy;YGAJXCGK7K>CJx0UAFg0|9=-D`BPeXq zy?lr@gErp(t^Y;5=L`SR^W6VP&;Qaj{}+0mQH1dmp{2_AQ(YEZmYjLuZ#Y9jU#6k` zFFgl?@07lg;DFPC%-m>QLJLA9{}eOV3gaj-oQ(V?6?;8TfYm;GD_JqA^ZuOA4?MKIl0q z9YfRUKlDuhm!9X^{?aoyveRFB4*f^Z{XL1P2hIPb=gINyOrgK@OxyjBo-2m`(KCy4 zaaj^6Q>8hFidJDxU2d<$;3_~DgPN`f~J$gGDk`m8{Sel^2BW{{wCGwKZA3ocLixjZ10ZVIT2e7RmM+&?p$ z15NXiTum@!*U!g^FkMqNoD-42ixE%qyVnLZDROq*7X!eD+sZ0Wr0yGOYjK&N|P7zfj&>5SECPl4*Cy0)2OUjb_t+Iv-iX$-_ukK zj{c?R&VFw{-pLUVtegphJ;PbzrN4e_BUwnRFV;#2cxiaM^Adn05GNLSB z6ciwpX~d9VBW<;!EV4_ZHTvk#J1ao@b`kjJUaOPIv;U{>^fV^lG5&UDx9j;id>^4# z`0~*y$NhQp!6jFx2dmHe^CR0Qo`=Zn`qME-?1?fC9wRJSm*LdR6WOGZ>u-aWxGXpZ z^NuoNp9~gfx)`MpK92*WO%^k(eq`&U{-R2X6o(>47J&j2+AT8DI{yveT1n!VW}qbu zRR_qZ_f|FgW}7E~ml>I=GHF1cG`~A7c2zYhNbD_flp4xH=0gWFy-a%-D7*xf@Lj#9 z(kNYbdh8L`Q-UH~1Ewfi!e;09VlnGZ%|vE0`X$6uR`r(jaAzySC~dj!6KI0xbvJ^FLd^B8@1kVOtG^LwEqc z;Kn9WK~lqLXk$5A&M@({&FbunbejyIB36!>-wsWcgkq2j6IEon@RWsyB6HVq zM9Y{xsi`BGh|?M_IckD4e1uG=>VChUI0l&uzB)2N?dNEeH7Q>ufE@Ssn~SgG4SVs* z-<*WXj@P9efgT3zKgkm(R@lB>ko2}-{+^RGa#^KN8SD8B;yI%hI~>f$c(QG}w316Y zbNejDJ_r!&QR-mO*-hMHU@14TFOjA|*sr-N3N~;`zL&zdVUS}&eIpJp?UvYLhhsX` zoOb5P*fXFM^86!xpj@uh7t%6@Ac1ko^bxy}iq+_%n6_E}&C`V$NuyC9SD`W+6NJ_) zF=ZMNQFxUy`$KhWD3WieGU>r*WYQ*Y=jKW$s{F3N z1ag6^m|Tvyp@yA1R2ES$>{~ZxsA-KKt-5)JYq*m2aMtJ!c00AMAFi` z6>1kv)^v_(^6o!)QUMv}YVWn>959VE2};Sx6`P639tS{FTFtu7;7lM2tG3c;)>GT`d8J&C4d2Q#BO56wi|a85Z? z+U#MIc5EO{Eco0fLg4Pd;DPw#Aftskb0}BlUSLznN)i9?&!n1}1n|vHROD%kguVMf zrg^c^Fz@ifuC5Z3E5!P&^@|bzYOI!#QJtPw>3_q5mvx+@r$>|w@E)B0Lr5;j!p($8 z=$|c|2ilSNxS3P3-F$+G5`&%fs$B!B#$J>%tN_1`gF3$baM9Petp|st;F*0HvZ`y47w-NO-Xd zFY6k!XM9ekk;NIgk;iQ9PT(yw2_>;f#M4Q*6kzk8`+bLBO5}DwV0+@(LMJ%YZkiJm(-61hl7Zd(K?&4o@6dz#cl(0=ExXG^n<5FK`UW_To2T0xUjcUL@3R46N8o`R!yV^j=VGhE3e9Uo5tgVY`eH`M`?)4f0f1 zl_(8XsBSnK*keOpc4_}hx7K@IA5IQgA*=!ESr+)`9CT|} z3}@D~yi}sskPdk&(-r3x=f#Fvkv<;4iId30ZPYK-8c|`oZ)M5=T=;OD>uUuK+wCft zQjQ=N02hw7hg6{5hjHRdi>5rBlOod8&?avln#ztsEtJ$?<@6dO2@rSQW2?6vu#ygC znjcbAfukD6ffe-=4zOZDTA%aOz8L(B`2s(IK8E}tOSoWvT7 zD{mY^I=tSkbtsQ@bWl^Q0&oc(;cfN+4DKPgT7)3pfQsU~#BvvZ2T9v`w@2_0qRSEz0MNEt4revofrafD{Y-!quC-f=?4Ilqv${n*kg>xq-4 zQ-4Upz<6vM>s)mWRMr|##>bmp{^kx>d7WoN|KjYjaJ`nat)(4mqolAiogCouh|_wx z4kKITCGZ&^v15r-h0enc8ovU(Q>|-IS6c(As8*}1P*-~|OJ%91f?A|^=00|GO&1Kg zV#|T|obK=wPyF2JsHB$-r5Fq%W1Kb&NhjH0uD-zM&hAD$m>b-+PX^`+AxW?Xp&7A* z%pLBr`863TL{#q=D?3o?J5b3xi@jfRVhoRRu_-&FrYTNM%bQDx_A9rO=!!$H6n^gT?*e=cVcY*l4fzm-fu9{i7;j(I( z?+|!w_4` z%jx4f1anY5n_cGK@(`(M^SoVyuHZXQ5S_>B`9?LvS!&_JdD>#U^uo1qmnG{3+0Hm# zw%@NCme_2%&Suy5e+!a;hrDGKhwNgnWP-gfX&r>P=;Y`?}FTSv{EWuN24 z>^whE*O&S+-;;?OqZxP~r}j#Kl~RAPQ2DX2JrVm=^06Og;?l=ECYHwsF8AfWA4d0f zfvyj#*7aI-ig9~l``6Y90mLb~XJ>HmA;zpe;}w1!C@`!3+(_OoQd-+u`Qi;uiH2`# z#j0eNyWNLGD=72rA0bMFj}5DRoJA{y```Af|B@}`%71IjF?d|Qj0_;U#h|;1&9=)A zkinn`4}hnH*I33GUiQvdEohu_&NzMaAUWKW!h`2b|9Sc-LTcJ#ahc zxaV&CIE?lNLGY8k*HVJ+!Ki)cT7&k)TZIz;iP*eYd-~B*dw!3It%>$013-hofElWa zsS35%bPO!UQ)w)5_8a=g=93>A92BV{q7=>of_8}mOm@J+v;V5f4g*esQBaorw1#L! zjcA@SnC}Fg0GL!`CHsX$_8vjZpS=JZYjkDvoq67S?>(ueZ;kR^g%Ih7gK*0c>2}f$ zti-k1rfwqC(Ud|M&hpDpy^c~%KNUcC#2V$cAc@i|W42Qx1lNhInVn?YAAq<5CX|Bf z-vDAX39XT8RZ5tq{>`C;x*9?Y(G=jAB0sM5oXt+;m)fS$&HA71yEOuROk%?Mc_zVp zd=uY6;I5`IMe#7;f>Pb2pyEBbWQQ);7$5;A0(orO_M0(DeG($E$7KGj zAo&ZxOM)_e5efU!mIz7Kg{W&PR~}O*%-oLSUXymJA#knw%cJ;RX^rXyIoz7#)>U}n zkw8n32)WgPS8S~GpZUD+tyP8%o#>;09W_(Q_L=5%^owYL%|UK8hG6-DE2uZ1VOSOE zT<6n|Z&B&$-OF=*$MT;~X4~v}C#%*&l}}XI5bcP<$pLH4p??>wqlKa_dMP?V@^@$% zsp*X&(JQr+Q_ZPL*zaWx;*@gF^C(Kpv?`$*6@|NHl1vkZ#W@ELiTd8*%$)LNE?Md) zU2YD9H?dN$H~00xMdpZg&^TFc;V;=s_zYh{QN6eT`pP$|)w@mT{b#f%KXg}Hzo|jZ zpD*ul@B&$hpZXdqtNK0f=&JHd54nS=%?eX=9HQGgII2U}pS&Ww-BWb!DP|~YWkkjp zVbO!n-R10*kXQT*ldn`5uHhr8_BV1ZDng_G0HP+VQVMMMQ3`lx4^L+n1>`nqA{1qI z*6IE_6CPFMTrWS41X=!XM}k=XMJvXY|Km(3XtWw7B7(6;5t!Abq#+=3rG#3}L)XVf z)(0##h-ufJ#ac-nhsnJWl!J$hZrqYT{z$hfrL)$M_Oz|#Xf>Jebm&OA{`GjbvxEN0 zj+<=kc)(klfhtEEH5BRh?6QER&~FPkp)qS}kRp;3P@JGAIM5^&5?U7Q8`O>&Y}8As zq{4!#QPb9C_t%ikv4WWZN@^P>-HHdr_~Y=4ZX2Q}D1&wh$wP8ihm}BO+O*xO_*jOY z*SzVy1l_d-s&h{~J+)nwyOzm|-wXY?7(uqv2#~Z$Aey$?5;9=lSg?gHW^MpxY52{E zZ%N42pRoaGy)Sa*4evVvs_*41dT68G#Y(vnd}OwP-{ec!G~5egG}KCs>RTomn?lX- zdyS!Td3L0d_j=byc!o(}8Lg9zIwI2oqQ7o8%OAIOuM^^DSf5_<<}^1l(-Dea?71*q zK8#%T_zS&8_<%!I97U2C) zcj>;aY>rd#bUU=?j~Zn68gssz@b@|OvGZ1(6>#likZE;BKsEdxe$Dbw%UnfNQ2|PG zoVm;eY*7iz;(fz9>SI%}+3AL&gE4vxLwl6fvk+_qsnqxM)u8#94*@d?da&SCg!R1- z?y!&x9`D3i?;6#?Fy-XyjY)JJ5>C(DT(s(5@muw#OaH-+Z>OQTmZ%z)Ft1#|T9UL2Dj}xBH zmzS_V+3`?}oecO2Fup0!!t@85nV%6fWFOUo2#p)R2^9yo(32nn`+Ath{lUq7VFE7e z0>$1`@{24+8CNeJHvNQcjg`!L;u9J%>C`+aC7nbcHrbH80;<`z}T(x#R3tdX3XYcIUdp;+3N&Pi?$Frt0QPA4Jukpt+iR)&D^K<4J<>$44 z3jO85D$E|!$p>WP$ErqqImThXaBSn0${jL7Ltj_gcut!tm!Y6SY>&1m({q|WQgG;w z7i%&+JKPt;wFS|<%EW-j851>>GVrN9D(Q{`4MDm6q0Gwd{G_5 z4lT)>Q_h#DB>x5%ug@+o$%91MowM`+g>o13zJ7!oVHa(T_5cqu_mnA@ABUt0rKAzB zSOV1@JSGI|aJY57qfJpNe4~aDD!5SRwse}5W@`mI%TuGCRT5fg&bNesyt$GgRw@x7 zYJARs!mC?5FupI*TvoI-C(>CM*DB0?0^lz|#@4--(R5jr_c%H1Wr{1&V0mE~+__I& zkLVh8*m@VR_%gZ$*R~qyTX4;UV-^x5-S-F`xrWw8Gjw*}0}Z-HO3I(JGP_mR7{{&2 zwk28aQTMPq1y{lq_5U6dq$8SkQI9Diw1uEPEF5`BfXmraZ<+TM zJd=17VIvNOxF5j+F*`w$@I9Czgd{Os?>WY`Un;DfmEz!z`MA4z#xP4~XG%Oi>2n8lz~De1T8sZ||Xz*m7yDew8Hdr2*} ze#xLrRD<;q?#75*7s{XFVtm!TX1eIf#&L0k}(*Dj69;ETiV2L3o z(n}l_H>JO87YbzTbL_Wj_^y@w&5VU+av22)z>uz9gEQJ%D#)Ae)8}k1)oVtw{eWbG zF(CN6R52|~Kba6$a0O}gM7+9Pj9blGE0R*za&ki0Hj+@)&G`9roF_W#$} zoySAn?QsB~atm3)BYQNFB@s=D3a@OFERmSW+9YWzOOhl@gp%;6NVXQHlI`hQ(zVto zgcM2Hmt5IXnw|%7kEuU?zj4k#7ytO@?R$PcXJ&rqoZmSw{*eHuWP9s%<(CaBtIyY$ z1sO8^dl{swtO)WK60@$j`AJFFU4zX(8ts2ZiFWemPf=`BsuQ%;2R7Pjj~&VW_;2Gk z8o~;aBeN8-??vluZmqMC9M)@kcyf53zeA4;wKZa(?q|f{mGo&!XNyCaeraBD34ImG z%7VtXFDYwSxtX6yw2(gVJwQg~$Xs}9_C}gcWIb(j;`a9RPXhTvxx{GcVEeiXmc^-^ zc`7XN3f-|3?y%&y8qzXnQ)sRFmienz8IAGU{8QBF*Rf^n=1i>W?bGy;@z}Q$TUGX_ zt)Gf3l5zXcTWn$0zuy3=IH^Jk_K#xvUC8N)|%H?Q@|1k&SFRF${ zWkNBrWT(G}L%O>rp9W2@IA~0aT?6K%kNak3z8Ab!r4c_i+Ep4XHIec8y#5`{WOENq zqnlEGUZ2)F-1Xdfqd7X%B(ToM=xNK=@SM|3#eDz9@!Cjg!Q6|_uiIjBlLOjo-i%A$ zjps?Omk&N?Dm~S)r|x5V14}`GxPhD?W5mDOdb!~(yOcs!NJRC%DA!4$kQlxwGhL5< zuKjU;*m!CFlp^h|WK8QYnpA^KhtDRYhcK+JhRt&8oA{gfD5ptSy;BeNk1h!9qd$6P z(&QbhXU?Ti(?cuY+WI0wUGaW*ue~_Qso~7ycgFJq!Lw#lsv|FgCT>r6D(GAoVeg=O zXbZh;9~gVT^nbn!v6q8_e(58!*e|a?ob%rHDlIwbnAT7n*ZSQe^6p{Idkl8n5c-#S zS_mVuOPG8!!aniF3^~1D*2px${;aLuh5X)9N2ke6lr^Jbg|GBu^^4CZ{qC4EvrTb? zEe|yt>=rv_kuB($6uzvk=O#f9k{^jb>c~2LuHeggiK~77xvBYj{I02e1|9VKPg_Ke z8hR^v)Ojj7-6QkVNGfKIuc}dRU*lQUYw_&QxSQ$Ug3^miy3E@g$?c7;3-i~NS6H3M zw~r|6wg$`@!yaoNWiN1ps zJhZSrBg^*Y@&^X8jSH{*4pW#1tM6%Fl#{s6^$m1P-T@iIEf-h^yq^qRE)VK2O4FsM z^bdlK^4K-Q(G>oHX5r7*A`kXhxF<>NUEQY? zdEJRI>61-PaF$Lko*|LFNhP%|H^w*S8J}9wmQ}r5sot(eB)BGA$lX8C+rzf!t4#v< zxyL%eI8ZU|UY0GFb8_UlU)sflqARjL>^fU_hEx8ZTB6w5!maV8~mmouIOs zN*n*0NP9q8VZ5Fdku|qt+>@e}LkY0?@VqZEu+iyb@tMtnlU8(9(nSX`wW#@e;TaDB zRlT4D;`S@*<9XoZBmSXo-RF(R|85=1({z;jXi3Z=g;$%=rX5ErntIOB7n;WNU9MV) zf@Mi!OqGlw?RRg3MI`>)Z&=RVX36wY4(MKeEcoRgrTl%VG=ZaCj|D~^$KTk^zqP}x zS!~cbo0z)8i~4CzZqfNzVsYk^q<|SW{cJnuFB-mdMY>qn%CDIe=VrxnmbK5hbuC<` zOmdydh8p2#T6+&Ew~Pqqmb(!B^!&!S?p;cXa*{oEI)pf-ptT^&cZqsnMvdW~5KJD{ zVf5Gp%;y?tu9|R}+uA2t7j@*Mx%I5}Pg(t$NcXIjJGq#fg5qE9c^zEEYz~wo1vNBQ zGMj=nvEs+&+sN~4Cn~Myt^}Nlo8{J(iD7#lKTP{ivCGha@ z5Z)$+o2otBMAZTV3}zApf*9E65&w16jplpC$4$-8&DGb-M~&`z#LZtFtkS|8rlZ!O zsbCQK6hDC=g#!YB{M&H(Ww@{n7xu?ZPDf~g`}5>70^tg%74JBM;c2MDek12}{)(0# zdkH=r#Dc$$cM?E_P>21(!|5z9v39fq&SlUxypsVY?4b^O?JcLX{q}A>RZvS4Xa(Nc zDS~j=i`Y0F`QeQPwVo~}nY>~Sql$B{zkvjI*VXqPlDhYcGLjwbsy zpA&L@_P$yT6!RW53=bVsMnTX-A2=vz)eb7k1Q;IbRzpG1Nb3}u^w0owdr8xlX`&!# zrnCMd_`(rXqXV9%##fY0LP5|_6Adi~&x4A-EUCy!2L(Y>O&ya?TO8u#TT+qeE))cf zHAyR_7Jjh{ccUO^u1|ls$An+(HX{@S4fZ#A#bkTv#SSH-AZW6?2%9tD7hAys0d0XM zJJHa)$qst4Kkq|9&}0ukYCPTo{{86y!{_LdEee7r`)qSSoCAPvEy+;^6$L?)-SArQ zn+>Rjv?NDl2NVQNHuea2eA5OFp&)3ovBwVMp;T8C1Wh*fh*mtLNk>7@WMdD~#6y-R zQ4loQ*mK|T(3B?%f+ib#4i_GZ_C-Ly4vph{&Bh)egNKaHq9ACpv8RCGp?85O2%2o{ zK@NC`8iInL$;R$?kB7QLQ4loQzL?#-@em;b1woUI-Aoq`ow$sGpvlJWX^Drn#h@T) zvawsh;h`V#C-Y+ zy2C(0&}3tuP{TvfIVcF4Z0xfhc&H~I1woUIT}g|Fx(iVdG}+kIgLtT}6a_((ja^xT zhh!^J5H#7?DPTNgR*iz7$;Qrz;i1tw6a-B+cCG;rZD>S5zoyeTlZ_q5#Y3WRP!K%X qm~kgOw7dlcL6eQWRmMZf?@`e2WUl}djRb-g_@;upLyh*u-~I>x-!b(7 literal 0 HcmV?d00001 diff --git a/snark-20120808r02/src/feature-vector-index.lisp b/snark-20120808r02/src/feature-vector-index.lisp new file mode 100644 index 0000000..4e48972 --- /dev/null +++ b/snark-20120808r02/src/feature-vector-index.lisp @@ -0,0 +1,157 @@ +;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: snark -*- +;;; File: feature-vector-index.lisp +;;; The contents of this file are subject to the Mozilla Public License +;;; Version 1.1 (the "License"); you may not use this file except in +;;; compliance with the License. You may obtain a copy of the License at +;;; http://www.mozilla.org/MPL/ +;;; +;;; Software distributed under the License is distributed on an "AS IS" +;;; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +;;; License for the specific language governing rights and limitations +;;; under the License. +;;; +;;; The Original Code is SNARK. +;;; The Initial Developer of the Original Code is SRI International. +;;; Portions created by the Initial Developer are Copyright (C) 1981-2012. +;;; All Rights Reserved. +;;; +;;; Contributor(s): Mark E. Stickel . + +(in-package :snark) + +(defvar *feature-vector-row-index*) +(defvar *feature-vector-term-index*) + +(defstruct (feature-vector-index + (:include trie) + (:constructor make-feature-vector-index0) + (:copier nil)) + (entry-counter (make-counter) :read-only t) + (retrieve-generalization-calls 0 :type integer) ;forward subsumption + (retrieve-generalization-count 0 :type integer) + (retrieve-instance-calls 0 :type integer) ;backward subsumption + (retrieve-instance-count 0 :type integer)) + +(defun make-feature-vector-row-index () + (setf *feature-vector-row-index* (make-feature-vector-index0))) + +(defun make-feature-vector-term-index () + (setf *feature-vector-term-index* (make-feature-vector-index0))) + +(defun feature-vector-index-entry-number (entry) + (cond + ((row-p entry) + (row-number entry)) + (t + (tme-number entry)))) + +(defun feature-vector-index-entry-keys (entry) + (cond + ((row-p entry) + (clause-feature-vector (row-wff entry))) + (t + (atom-or-term-feature-vector (index-entry-term entry))))) + +(defun feature-vector-index-insert (entry index) + (let* ((entry# (feature-vector-index-entry-number entry)) + (keys (feature-vector-index-entry-keys entry)) + (entries (trieref index keys))) + (cond + ((null entries) + (setf (sparef (setf (trieref index keys) (make-sparse-vector)) entry#) entry) + (increment-counter (feature-vector-index-entry-counter index))) + (t + (let ((c (sparse-vector-count entries))) + (setf (sparef entries entry#) entry) + (let ((c* (sparse-vector-count entries))) + (when (< c c*) + (increment-counter (feature-vector-index-entry-counter index))))))) + nil)) + +(defun feature-vector-index-delete (entry index) + (let* ((entry# (feature-vector-index-entry-number entry)) + (keys (feature-vector-index-entry-keys entry)) + (entries (trieref index keys))) + (unless (null entries) + (let ((c (sparse-vector-count entries))) + (setf (sparef entries entry#) nil) + (let ((c* (sparse-vector-count entries))) + (when (> c c*) + (decrement-counter (feature-vector-index-entry-counter index)) + (when (= 0 c*) + (setf (trieref index keys) nil)))))) + nil)) + +(defun map-feature-vector-row-index-forward-subsumption-candidates (function row) + (prog-> + (identity *feature-vector-row-index* -> index) + (incf (feature-vector-index-retrieve-generalization-calls index)) + (map-fv-trie<= index (clause-feature-vector (row-wff row)) ->* entries) + (incf (feature-vector-index-retrieve-generalization-count index) (sparse-vector-count entries)) + (map-sparse-vector function entries))) + +(defun map-feature-vector-row-index-backward-subsumption-candidates (function row) + (prog-> + (identity *feature-vector-row-index* -> index) + (incf (feature-vector-index-retrieve-instance-calls index)) + (map-fv-trie>= index (clause-feature-vector (row-wff row)) ->* entries) + (incf (feature-vector-index-retrieve-instance-count index) (sparse-vector-count entries)) + (map-sparse-vector function entries))) + +(defun map-feature-vector-term-index-generalizations (function term &optional subst) + (prog-> + (dereference term subst :if-variable none :if-constant term :if-compound (head term) -> head) + (identity *feature-vector-term-index* -> index) + (incf (feature-vector-index-retrieve-generalization-calls index)) + (map-fv-trie<= index (atom-or-term-feature-vector term subst) ->* entries) + (map-sparse-vector entries ->* entry) + (index-entry-term entry -> term2) + (dereference term2 nil :if-variable head :if-constant term2 :if-compound (head term2) -> head2) + (when (eql head head2) + (incf (feature-vector-index-retrieve-generalization-count index)) + (funcall function entry)))) + +(defun map-feature-vector-term-index-instances (function term &optional subst) + (prog-> + (dereference term subst :if-variable none :if-constant term :if-compound (head term) -> head) + (identity *feature-vector-term-index* -> index) + (incf (feature-vector-index-retrieve-instance-calls index)) + (map-fv-trie>= index (atom-or-term-feature-vector term subst) ->* entries) + (map-sparse-vector entries ->* entry) + (index-entry-term entry -> term2) + (dereference term2 nil :if-variable none :if-constant term2 :if-compound (head term2) -> head2) + (when (or (eq none head) (eql head head2)) + (incf (feature-vector-index-retrieve-instance-count index)) + (funcall function entry)))) + +(defun print-feature-vector-index1 (index format1 format2 format3 format4) + (let ((entries-count 0)) + (prog-> + (map-trie index ->* entries) + (setf entries-count (+ entries-count (sparse-vector-count entries)))) + (mvlet (((:values current peak added deleted) (counter-values (feature-vector-index-entry-counter index)))) + (format t format1 current peak added deleted)) + (mvlet (((:values current peak added deleted) (counter-values (feature-vector-index-node-counter index)))) + (format t format2 current peak added deleted)) + (unless (eql 0 (feature-vector-index-retrieve-generalization-calls index)) + (format t format3 (feature-vector-index-retrieve-generalization-count index) (feature-vector-index-retrieve-generalization-calls index))) + (unless (eql 0 (feature-vector-index-retrieve-instance-calls index)) + (format t format4 (feature-vector-index-retrieve-instance-count index) (feature-vector-index-retrieve-instance-calls index))))) + +(defun print-feature-vector-row-index () + (print-feature-vector-index1 + *feature-vector-row-index* + "~%; Feature-vector-row-index has ~:D entr~:@P (~:D at peak, ~:D added, ~:D deleted)." + "~%; Feature-vector-row-index has ~:D node~:P (~:D at peak, ~:D added, ~:D deleted)." + "~%; Retrieved ~:D possibly forward subsuming row~:P in ~:D call~:P." + "~%; Retrieved ~:D possibly backward subsumed row~:P in ~:D call~:P.")) + +(defun print-feature-vector-term-index () + (print-feature-vector-index1 + *feature-vector-term-index* + "~%; Feature-vector-term-index has ~:D entr~:@P (~:D at peak, ~:D added, ~:D deleted)." + "~%; Feature-vector-term-index has ~:D node~:P (~:D at peak, ~:D added, ~:D deleted)." + "~%; Retrieved ~:D possibly generalization term~:P in ~:D call~:P." + "~%; Retrieved ~:D possibly instance term~:P in ~:D call~:P.")) + +;;; feature-vector-index.lisp EOF diff --git a/snark-20120808r02/src/feature-vector-trie.abcl b/snark-20120808r02/src/feature-vector-trie.abcl new file mode 100644 index 0000000000000000000000000000000000000000..6ff4635095b1d623996d64668779e9f8cf2ca31d GIT binary patch literal 13058 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 o@_*p`t(1SSB7bsXssDlVUoAtv)*TQK. + +(in-package :snark) + +;;; feature vector tries are indexed by keys in ascending value +;;; where each key combines a feature number and its value + +(definline fv-trie-key (feature-number feature-value) + (+ (* (+ $fv-maximum-feature-value 1) feature-number) feature-value)) + +(definline fv-trie-key-feature (key) + (nth-value 0 (floor key (+ $fv-maximum-feature-value 1)))) + +(definline fv-trie-key-value (key) + (mod key (+ $fv-maximum-feature-value 1))) + +(defun map-fv-trie<= (function trie keys) + (labels + ((mfvt (node keys done) + (unless done + (let ((d (trie-node-data node))) + (when d + (funcall function d)))) + (when keys + (prog-> + (rest keys -> r) + (mfvt node r t) + (trie-node-branches node ->nonnil b) + (first keys -> key) + ;; map over subtries for key-feature = 1 ... key-feature = key-value + (+ key (- 1 (fv-trie-key-value key)) -> key1) + (cond + ((= key1 key) + (sparef b key ->nonnil node) + (mfvt node r nil)) + (t + (map-sparse-vector b :min key1 :max key ->* node) + (mfvt node r nil))))))) + (mfvt (trie-top-node trie) keys nil))) + +(defun map-fv-trie>= (function trie keys) + (labels + ((mfvt (node keys) + (if (null keys) + (map-trie function node) + (prog-> + (trie-node-branches node ->nonnil b) + (rest keys -> r) + (first keys -> key) + (- key (fv-trie-key-value key) -> key0) + (map-sparse-vector-with-indexes b :max (+ key0 $fv-maximum-feature-value) ->* node k) + (cond + ((< k key0) + (mfvt node keys)) + ((>= k key) + (mfvt node r))))))) + (mfvt (trie-top-node trie) keys))) + +;;; feature-vector-trie.lisp EOF diff --git a/snark-20120808r02/src/feature-vector.abcl b/snark-20120808r02/src/feature-vector.abcl new file mode 100644 index 0000000000000000000000000000000000000000..c52f093ad6415b86c7d213a2ce7aaefe6e56766f GIT binary patch literal 24704 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 fd>hdPzK{6->O{EO3m-hdzq)F#0s`uF{<-@. + +(in-package :snark) + +(defconstant $fv-maximum-feature-value 999) +(defconstant $fv-features-per-symbol 10) +(defconstant $fv-offset-pos-count 0) ;number of occurrences in positive literals +(defconstant $fv-offset-neg-count 1) ;number of occurrences in negative literals +(defconstant $fv-offset-pos-max-depth 2) ;maximum depth of occurrences in positive literals +(defconstant $fv-offset-neg-max-depth 3) ;maximum depth of occurrences in negative literals +(defconstant $fv-offset-pos-min-depth 4) ;minimum depth of occurrences in positive literals (negated) +(defconstant $fv-offset-neg-min-depth 5) ;minimum depth of occurrences in negative literals (negated) +(defconstant $fv-number-ground 0) ;pseudo symbol-number for ground literal counts, doesn't match any actual symbol-number + +(declare-snark-option feature-vector-symbol-number-folding 10 10) + +(defun new-feature-vector () + (make-sparse-vector :default-value 0)) + +(defun feature-vector-list (fv) + ;; convert to list form suitable for input to trie.lisp operations + (let ((fv* nil)) + (prog-> + (map-sparse-vector-with-indexes fv :reverse t ->* v k) + (cl:assert (< 0 v)) + (setf fv* (list* (fv-trie-key k v) fv*))) + fv*)) + +(defun update-feature-vector (symbol-number relation-symbol? arity polarity count depth fv) + (let* ((symbol-number* (let ((n (feature-vector-symbol-number-folding?))) + (if n + (+ (mod symbol-number n) + (if relation-symbol? ;fold relations and functions separately + (+ 1 (case arity (0 (* 1 n)) (1 (* 2 n)) (2 (* 3 n)) (otherwise (* 4 n)))) + (+ 1 (case arity (0 (* 5 n)) (1 (* 6 n)) (2 (* 7 n)) (otherwise (* 8 n)))))) + symbol-number))) + (base (* $fv-features-per-symbol symbol-number*)) + (pos (ecase polarity (:pos t) (:neg nil)))) + (cl:assert (and (<= 1 count) (<= 0 depth))) + (cond + (relation-symbol? + (let* ((count-index (+ base (if pos $fv-offset-pos-count $fv-offset-neg-count))) + (v (sparef fv count-index)) + (v* (min $fv-maximum-feature-value (+ v count)))) + (unless (= v v*) + (setf (sparef fv count-index) v*)))) + (t + (let* ((max-depth-index (+ base (if pos $fv-offset-pos-max-depth $fv-offset-neg-max-depth))) + (v (sparef fv max-depth-index)) + (v* (min $fv-maximum-feature-value (max v depth)))) + (unless (= v v*) + (setf (sparef fv max-depth-index) v*))) + (cond + ((test-option49?) + (let* ((count-index (+ base (if pos $fv-offset-pos-count $fv-offset-neg-count))) + (v (sparef fv count-index)) + (v* (min $fv-maximum-feature-value (+ v count)))) + (unless (= v v*) + (setf (sparef fv count-index) v*)))) + (t + (let* ((min-depth-index (+ base (if pos $fv-offset-pos-min-depth $fv-offset-neg-min-depth))) + (v (sparef fv min-depth-index)) ;translate lower depths to higher feature values + (v* (max 1 (max v (- $fv-maximum-feature-value depth))))) + (unless (= v v*) + (setf (sparef fv min-depth-index) v*)) + (cond + ((and (= 0 v) (< 1 count)) + (let ((count-index (+ base (if pos $fv-offset-pos-count $fv-offset-neg-count)))) + (setf (sparef fv count-index) (min $fv-maximum-feature-value count)))) + ((< 0 v) ;don't store count for single occurrence + (let* ((count-index (+ base (if pos $fv-offset-pos-count $fv-offset-neg-count))) + (v (sparef fv count-index)) + (v* (min $fv-maximum-feature-value (if (= 0 v) (+ 1 count) (+ v count))))) + (unless (= v v*) + (setf (sparef fv count-index) v*)))))))))) + fv)) + +(defun clause-feature-vector (clause &optional subst (convert-to-list? t)) + (let ((fv (new-feature-vector))) + (prog-> + (map-atoms-in-clause clause ->* atom polarity) + (atom-feature-vector atom subst polarity fv) + (unless (test-option50?) + (when (ground-p atom subst) + (incf (sparef fv (+ $fv-number-ground (if (eq :pos polarity) $fv-offset-pos-count $fv-offset-neg-count))))))) + (if convert-to-list? (feature-vector-list fv) fv))) + +(defun atom-or-term-feature-vector (x &optional subst (convert-to-list? t)) + (let ((fv (new-feature-vector))) + (if (dereference + x subst + :if-constant (constant-boolean-valued-p x) + :if-compound-appl (function-boolean-valued-p (heada x))) + (atom-feature-vector x subst :pos fv) + (term-feature-vector x subst :pos 0 fv)) + (if convert-to-list? (feature-vector-list fv) fv))) + +(defun atom-feature-vector (atom &optional subst (polarity :pos) (fv (new-feature-vector))) + (dereference + atom subst + :if-constant (update-feature-vector (constant-number atom) t 0 polarity 1 0 fv) + :if-compound (progn + (update-feature-vector (function-number (head atom)) t (function-arity (head atom)) polarity 1 0 fv) + (mapc #'(lambda (arg) (term-feature-vector arg subst polarity 0 fv)) (args atom)))) + fv) + +(defun term-feature-vector (term &optional subst (polarity :pos) (depth 0) (fv (new-feature-vector))) + ;; in (p a (f b)), depth(p)=depth(a)=depth(f)=0, depth(b)=1 + ;; compute count of associative function symbols as if term is in unflattened form + ;; count(f)=2 for f(a,b,c) + ;; compute depth of terms with associatve function symbols as if term is in flattened form + ;; depth(a)=1 for f(f(a,b),c) + (labels + ((tfv (term depth) + (dereference + term subst + :if-constant (update-feature-vector (constant-number term) nil 0 polarity 1 depth fv) + :if-compound (prog-> + (head term -> head) + (args term -> args) + (if (function-associative head) head nil -> head-if-associative) + (if head-if-associative + (update-feature-vector (function-number head) nil (function-arity head) polarity (max (- (length args) 1) 1) depth fv) + (update-feature-vector (function-number head) nil (function-arity head) polarity 1 depth fv)) + (mapc #'(lambda (arg) + (if (and head-if-associative + (dereference + arg subst + :if-compound (and head-if-associative (eq head-if-associative (head arg))))) + (tfv arg depth) + (tfv arg (+ depth 1)))) + args))))) + (tfv term depth)) + fv) + +;;; feature-vector.lisp EOF diff --git a/snark-20120808r02/src/feature.abcl b/snark-20120808r02/src/feature.abcl new file mode 100644 index 0000000000000000000000000000000000000000..8ab87dac270807e88f7547d0d00fc71cbc7449e6 GIT binary patch literal 189510 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