@stevenvo780/st-lang 3.2.3 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -7
- package/dist/api.d.ts +2 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +5 -1
- package/dist/api.js.map +1 -1
- package/dist/argumentation/dot.d.ts +3 -0
- package/dist/argumentation/dot.d.ts.map +1 -0
- package/dist/argumentation/dot.js +25 -0
- package/dist/argumentation/dot.js.map +1 -0
- package/dist/argumentation/extensions.d.ts +11 -0
- package/dist/argumentation/extensions.d.ts.map +1 -0
- package/dist/argumentation/extensions.js +173 -0
- package/dist/argumentation/extensions.js.map +1 -0
- package/dist/argumentation/framework.d.ts +13 -0
- package/dist/argumentation/framework.d.ts.map +1 -0
- package/dist/argumentation/framework.js +117 -0
- package/dist/argumentation/framework.js.map +1 -0
- package/dist/argumentation/index.d.ts +6 -0
- package/dist/argumentation/index.d.ts.map +1 -0
- package/dist/argumentation/index.js +33 -0
- package/dist/argumentation/index.js.map +1 -0
- package/dist/argumentation/types.d.ts +11 -0
- package/dist/argumentation/types.d.ts.map +1 -0
- package/dist/argumentation/types.js +8 -0
- package/dist/argumentation/types.js.map +1 -0
- package/dist/ast/visitor.d.ts +95 -0
- package/dist/ast/visitor.d.ts.map +1 -0
- package/dist/ast/visitor.js +223 -0
- package/dist/ast/visitor.js.map +1 -0
- package/dist/citation-reasoning/derive.d.ts +31 -0
- package/dist/citation-reasoning/derive.d.ts.map +1 -0
- package/dist/citation-reasoning/derive.js +157 -0
- package/dist/citation-reasoning/derive.js.map +1 -0
- package/dist/citation-reasoning/index.d.ts +4 -0
- package/dist/citation-reasoning/index.d.ts.map +1 -0
- package/dist/citation-reasoning/index.js +10 -0
- package/dist/citation-reasoning/index.js.map +1 -0
- package/dist/citation-reasoning/types.d.ts +36 -0
- package/dist/citation-reasoning/types.d.ts.map +1 -0
- package/dist/citation-reasoning/types.js +6 -0
- package/dist/citation-reasoning/types.js.map +1 -0
- package/dist/educational/checker.d.ts +3 -0
- package/dist/educational/checker.d.ts.map +1 -0
- package/dist/educational/checker.js +244 -0
- package/dist/educational/checker.js.map +1 -0
- package/dist/educational/generator.d.ts +4 -0
- package/dist/educational/generator.d.ts.map +1 -0
- package/dist/educational/generator.js +158 -0
- package/dist/educational/generator.js.map +1 -0
- package/dist/educational/index.d.ts +6 -0
- package/dist/educational/index.d.ts.map +1 -0
- package/dist/educational/index.js +21 -0
- package/dist/educational/index.js.map +1 -0
- package/dist/educational/normalize.d.ts +6 -0
- package/dist/educational/normalize.d.ts.map +1 -0
- package/dist/educational/normalize.js +124 -0
- package/dist/educational/normalize.js.map +1 -0
- package/dist/educational/rng.d.ts +10 -0
- package/dist/educational/rng.d.ts.map +1 -0
- package/dist/educational/rng.js +47 -0
- package/dist/educational/rng.js.map +1 -0
- package/dist/educational/templates.d.ts +30 -0
- package/dist/educational/templates.d.ts.map +1 -0
- package/dist/educational/templates.js +567 -0
- package/dist/educational/templates.js.map +1 -0
- package/dist/educational/types.d.ts +44 -0
- package/dist/educational/types.d.ts.map +1 -0
- package/dist/educational/types.js +20 -0
- package/dist/educational/types.js.map +1 -0
- package/dist/exporters/coq/index.d.ts +35 -0
- package/dist/exporters/coq/index.d.ts.map +1 -0
- package/dist/exporters/coq/index.js +299 -0
- package/dist/exporters/coq/index.js.map +1 -0
- package/dist/fol-prover/cnf.d.ts +10 -0
- package/dist/fol-prover/cnf.d.ts.map +1 -0
- package/dist/fol-prover/cnf.js +357 -0
- package/dist/fol-prover/cnf.js.map +1 -0
- package/dist/fol-prover/index.d.ts +7 -0
- package/dist/fol-prover/index.d.ts.map +1 -0
- package/dist/fol-prover/index.js +27 -0
- package/dist/fol-prover/index.js.map +1 -0
- package/dist/fol-prover/prove.d.ts +4 -0
- package/dist/fol-prover/prove.d.ts.map +1 -0
- package/dist/fol-prover/prove.js +34 -0
- package/dist/fol-prover/prove.js.map +1 -0
- package/dist/fol-prover/resolve.d.ts +27 -0
- package/dist/fol-prover/resolve.d.ts.map +1 -0
- package/dist/fol-prover/resolve.js +234 -0
- package/dist/fol-prover/resolve.js.map +1 -0
- package/dist/fol-prover/types.d.ts +34 -0
- package/dist/fol-prover/types.d.ts.map +1 -0
- package/dist/fol-prover/types.js +38 -0
- package/dist/fol-prover/types.js.map +1 -0
- package/dist/fol-prover/unify.d.ts +9 -0
- package/dist/fol-prover/unify.d.ts.map +1 -0
- package/dist/fol-prover/unify.js +110 -0
- package/dist/fol-prover/unify.js.map +1 -0
- package/dist/hyperreal/index.d.ts +45 -0
- package/dist/hyperreal/index.d.ts.map +1 -0
- package/dist/hyperreal/index.js +183 -0
- package/dist/hyperreal/index.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -1
- package/dist/index.js.map +1 -1
- package/dist/lsp/index.d.ts +6 -0
- package/dist/lsp/index.d.ts.map +1 -0
- package/dist/lsp/index.js +29 -0
- package/dist/lsp/index.js.map +1 -0
- package/dist/lsp/protocol.d.ts +20 -0
- package/dist/lsp/protocol.d.ts.map +1 -0
- package/dist/lsp/protocol.js +64 -0
- package/dist/lsp/protocol.js.map +1 -0
- package/dist/lsp/server.d.ts +47 -0
- package/dist/lsp/server.d.ts.map +1 -0
- package/dist/lsp/server.js +529 -0
- package/dist/lsp/server.js.map +1 -0
- package/dist/lsp/types.d.ts +152 -0
- package/dist/lsp/types.d.ts.map +1 -0
- package/dist/lsp/types.js +70 -0
- package/dist/lsp/types.js.map +1 -0
- package/dist/parser/formulas.d.ts +7 -0
- package/dist/parser/formulas.d.ts.map +1 -0
- package/dist/parser/formulas.js +511 -0
- package/dist/parser/formulas.js.map +1 -0
- package/dist/parser/parser.d.ts +11 -41
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +410 -1037
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/state.d.ts +34 -0
- package/dist/parser/state.d.ts.map +1 -0
- package/dist/parser/state.js +163 -0
- package/dist/parser/state.js.map +1 -0
- package/dist/plugin-system/demo-min-logic.d.ts +3 -0
- package/dist/plugin-system/demo-min-logic.d.ts.map +1 -0
- package/dist/plugin-system/demo-min-logic.js +116 -0
- package/dist/plugin-system/demo-min-logic.js.map +1 -0
- package/dist/plugin-system/errors.d.ts +9 -0
- package/dist/plugin-system/errors.d.ts.map +1 -0
- package/dist/plugin-system/errors.js +24 -0
- package/dist/plugin-system/errors.js.map +1 -0
- package/dist/plugin-system/index.d.ts +6 -0
- package/dist/plugin-system/index.d.ts.map +1 -0
- package/dist/plugin-system/index.js +14 -0
- package/dist/plugin-system/index.js.map +1 -0
- package/dist/plugin-system/registry.d.ts +12 -0
- package/dist/plugin-system/registry.d.ts.map +1 -0
- package/dist/plugin-system/registry.js +46 -0
- package/dist/plugin-system/registry.js.map +1 -0
- package/dist/plugin-system/types.d.ts +23 -0
- package/dist/plugin-system/types.d.ts.map +1 -0
- package/dist/plugin-system/types.js +3 -0
- package/dist/plugin-system/types.js.map +1 -0
- package/dist/plugin-system/validate.d.ts +4 -0
- package/dist/plugin-system/validate.d.ts.map +1 -0
- package/dist/plugin-system/validate.js +60 -0
- package/dist/plugin-system/validate.js.map +1 -0
- package/dist/profiles/classical/parallel-sat.js +3 -3
- package/dist/profiles/classical/parallel-sat.js.map +1 -1
- package/dist/proof-exchange/index.d.ts +24 -0
- package/dist/proof-exchange/index.d.ts.map +1 -0
- package/dist/proof-exchange/index.js +98 -0
- package/dist/proof-exchange/index.js.map +1 -0
- package/dist/runtime/memo/cache.d.ts +32 -0
- package/dist/runtime/memo/cache.d.ts.map +1 -0
- package/dist/runtime/memo/cache.js +129 -0
- package/dist/runtime/memo/cache.js.map +1 -0
- package/dist/runtime/memo/hash.d.ts +9 -0
- package/dist/runtime/memo/hash.d.ts.map +1 -0
- package/dist/runtime/memo/hash.js +87 -0
- package/dist/runtime/memo/hash.js.map +1 -0
- package/dist/runtime/memo/index.d.ts +4 -0
- package/dist/runtime/memo/index.d.ts.map +1 -0
- package/dist/runtime/memo/index.js +8 -0
- package/dist/runtime/memo/index.js.map +1 -0
- package/dist/runtime/parallel/index.d.ts +34 -0
- package/dist/runtime/parallel/index.d.ts.map +1 -0
- package/dist/runtime/parallel/index.js +220 -0
- package/dist/runtime/parallel/index.js.map +1 -0
- package/dist/runtime/parallel/worker.d.ts +22 -0
- package/dist/runtime/parallel/worker.d.ts.map +1 -0
- package/dist/runtime/parallel/worker.js +43 -0
- package/dist/runtime/parallel/worker.js.map +1 -0
- package/dist/runtime/smt/index.d.ts +6 -0
- package/dist/runtime/smt/index.d.ts.map +1 -0
- package/dist/runtime/smt/index.js +18 -0
- package/dist/runtime/smt/index.js.map +1 -0
- package/dist/runtime/smt/mock-backend.d.ts +30 -0
- package/dist/runtime/smt/mock-backend.d.ts.map +1 -0
- package/dist/runtime/smt/mock-backend.js +460 -0
- package/dist/runtime/smt/mock-backend.js.map +1 -0
- package/dist/runtime/smt/serializer.d.ts +21 -0
- package/dist/runtime/smt/serializer.d.ts.map +1 -0
- package/dist/runtime/smt/serializer.js +314 -0
- package/dist/runtime/smt/serializer.js.map +1 -0
- package/dist/runtime/smt/subprocess-backend.d.ts +62 -0
- package/dist/runtime/smt/subprocess-backend.d.ts.map +1 -0
- package/dist/runtime/smt/subprocess-backend.js +261 -0
- package/dist/runtime/smt/subprocess-backend.js.map +1 -0
- package/dist/runtime/smt/types.d.ts +57 -0
- package/dist/runtime/smt/types.d.ts.map +1 -0
- package/dist/runtime/smt/types.js +6 -0
- package/dist/runtime/smt/types.js.map +1 -0
- package/dist/runtime/streaming/index.d.ts +4 -0
- package/dist/runtime/streaming/index.d.ts.map +1 -0
- package/dist/runtime/streaming/index.js +9 -0
- package/dist/runtime/streaming/index.js.map +1 -0
- package/dist/runtime/streaming/stream-eval.d.ts +31 -0
- package/dist/runtime/streaming/stream-eval.d.ts.map +1 -0
- package/dist/runtime/streaming/stream-eval.js +155 -0
- package/dist/runtime/streaming/stream-eval.js.map +1 -0
- package/dist/runtime/streaming/types.d.ts +33 -0
- package/dist/runtime/streaming/types.d.ts.map +1 -0
- package/dist/runtime/streaming/types.js +6 -0
- package/dist/runtime/streaming/types.js.map +1 -0
- package/dist/runtime/typecheck/checker.d.ts +72 -0
- package/dist/runtime/typecheck/checker.d.ts.map +1 -0
- package/dist/runtime/typecheck/checker.js +462 -0
- package/dist/runtime/typecheck/checker.js.map +1 -0
- package/dist/runtime/typecheck/index.d.ts +4 -0
- package/dist/runtime/typecheck/index.d.ts.map +1 -0
- package/dist/runtime/typecheck/index.js +13 -0
- package/dist/runtime/typecheck/index.js.map +1 -0
- package/dist/runtime/typecheck/levenshtein.d.ts +11 -0
- package/dist/runtime/typecheck/levenshtein.d.ts.map +1 -0
- package/dist/runtime/typecheck/levenshtein.js +49 -0
- package/dist/runtime/typecheck/levenshtein.js.map +1 -0
- package/dist/runtime/typecheck/types.d.ts +14 -0
- package/dist/runtime/typecheck/types.d.ts.map +1 -0
- package/dist/runtime/typecheck/types.js +26 -0
- package/dist/runtime/typecheck/types.js.map +1 -0
- package/dist/solver/cdcl-v2/clause-learning.d.ts +33 -0
- package/dist/solver/cdcl-v2/clause-learning.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/clause-learning.js +110 -0
- package/dist/solver/cdcl-v2/clause-learning.js.map +1 -0
- package/dist/solver/cdcl-v2/index.d.ts +9 -0
- package/dist/solver/cdcl-v2/index.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/index.js +39 -0
- package/dist/solver/cdcl-v2/index.js.map +1 -0
- package/dist/solver/cdcl-v2/lbd.d.ts +34 -0
- package/dist/solver/cdcl-v2/lbd.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/lbd.js +72 -0
- package/dist/solver/cdcl-v2/lbd.js.map +1 -0
- package/dist/solver/cdcl-v2/luby.d.ts +28 -0
- package/dist/solver/cdcl-v2/luby.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/luby.js +70 -0
- package/dist/solver/cdcl-v2/luby.js.map +1 -0
- package/dist/solver/cdcl-v2/phase-saving.d.ts +14 -0
- package/dist/solver/cdcl-v2/phase-saving.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/phase-saving.js +44 -0
- package/dist/solver/cdcl-v2/phase-saving.js.map +1 -0
- package/dist/solver/cdcl-v2/solver.d.ts +10 -0
- package/dist/solver/cdcl-v2/solver.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/solver.js +442 -0
- package/dist/solver/cdcl-v2/solver.js.map +1 -0
- package/dist/solver/cdcl-v2/state.d.ts +54 -0
- package/dist/solver/cdcl-v2/state.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/state.js +22 -0
- package/dist/solver/cdcl-v2/state.js.map +1 -0
- package/dist/solver/cdcl-v2/vsids.d.ts +19 -0
- package/dist/solver/cdcl-v2/vsids.d.ts.map +1 -0
- package/dist/solver/cdcl-v2/vsids.js +77 -0
- package/dist/solver/cdcl-v2/vsids.js.map +1 -0
- package/dist/tests/agora-integration-fixtures.test.js.map +1 -1
- package/dist/tests/argumentation/dung.test.d.ts +2 -0
- package/dist/tests/argumentation/dung.test.d.ts.map +1 -0
- package/dist/tests/argumentation/dung.test.js +219 -0
- package/dist/tests/argumentation/dung.test.js.map +1 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.d.ts +2 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.d.ts.map +1 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.js +240 -0
- package/dist/tests/citation-reasoning/citation-reasoning.test.js.map +1 -0
- package/dist/tests/coverage-fill-api.test.d.ts +7 -0
- package/dist/tests/coverage-fill-api.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-api.test.js +310 -0
- package/dist/tests/coverage-fill-api.test.js.map +1 -0
- package/dist/tests/coverage-fill-aristotelian.test.d.ts +7 -0
- package/dist/tests/coverage-fill-aristotelian.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-aristotelian.test.js +377 -0
- package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -0
- package/dist/tests/coverage-fill-belnap.test.d.ts +6 -0
- package/dist/tests/coverage-fill-belnap.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-belnap.test.js +277 -0
- package/dist/tests/coverage-fill-belnap.test.js.map +1 -0
- package/dist/tests/coverage-fill-cross-system.test.d.ts +6 -0
- package/dist/tests/coverage-fill-cross-system.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-cross-system.test.js +75 -0
- package/dist/tests/coverage-fill-cross-system.test.js.map +1 -0
- package/dist/tests/coverage-fill-fallacies.test.d.ts +6 -0
- package/dist/tests/coverage-fill-fallacies.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-fallacies.test.js +287 -0
- package/dist/tests/coverage-fill-fallacies.test.js.map +1 -0
- package/dist/tests/coverage-fill-format.test.d.ts +7 -0
- package/dist/tests/coverage-fill-format.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-format.test.js +455 -0
- package/dist/tests/coverage-fill-format.test.js.map +1 -0
- package/dist/tests/coverage-fill-intuitionistic.test.d.ts +6 -0
- package/dist/tests/coverage-fill-intuitionistic.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-intuitionistic.test.js +293 -0
- package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -0
- package/dist/tests/coverage-fill-probabilistic.test.d.ts +7 -0
- package/dist/tests/coverage-fill-probabilistic.test.d.ts.map +1 -0
- package/dist/tests/coverage-fill-probabilistic.test.js +314 -0
- package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -0
- package/dist/tests/educational/checker.test.d.ts +2 -0
- package/dist/tests/educational/checker.test.d.ts.map +1 -0
- package/dist/tests/educational/checker.test.js +212 -0
- package/dist/tests/educational/checker.test.js.map +1 -0
- package/dist/tests/educational/generator.test.d.ts +2 -0
- package/dist/tests/educational/generator.test.d.ts.map +1 -0
- package/dist/tests/educational/generator.test.js +137 -0
- package/dist/tests/educational/generator.test.js.map +1 -0
- package/dist/tests/exporters/coq/coq-exporter.test.d.ts +2 -0
- package/dist/tests/exporters/coq/coq-exporter.test.d.ts.map +1 -0
- package/dist/tests/exporters/coq/coq-exporter.test.js +353 -0
- package/dist/tests/exporters/coq/coq-exporter.test.js.map +1 -0
- package/dist/tests/fol-prover/cnf.test.d.ts +2 -0
- package/dist/tests/fol-prover/cnf.test.d.ts.map +1 -0
- package/dist/tests/fol-prover/cnf.test.js +74 -0
- package/dist/tests/fol-prover/cnf.test.js.map +1 -0
- package/dist/tests/fol-prover/prove.test.d.ts +2 -0
- package/dist/tests/fol-prover/prove.test.d.ts.map +1 -0
- package/dist/tests/fol-prover/prove.test.js +106 -0
- package/dist/tests/fol-prover/prove.test.js.map +1 -0
- package/dist/tests/fol-prover/unify.test.d.ts +2 -0
- package/dist/tests/fol-prover/unify.test.d.ts.map +1 -0
- package/dist/tests/fol-prover/unify.test.js +66 -0
- package/dist/tests/fol-prover/unify.test.js.map +1 -0
- package/dist/tests/hyperreal/hyperreal.test.d.ts +2 -0
- package/dist/tests/hyperreal/hyperreal.test.d.ts.map +1 -0
- package/dist/tests/hyperreal/hyperreal.test.js +219 -0
- package/dist/tests/hyperreal/hyperreal.test.js.map +1 -0
- package/dist/tests/lsp/server.test.d.ts +2 -0
- package/dist/tests/lsp/server.test.d.ts.map +1 -0
- package/dist/tests/lsp/server.test.js +406 -0
- package/dist/tests/lsp/server.test.js.map +1 -0
- package/dist/tests/memo/cache.test.d.ts +2 -0
- package/dist/tests/memo/cache.test.d.ts.map +1 -0
- package/dist/tests/memo/cache.test.js +252 -0
- package/dist/tests/memo/cache.test.js.map +1 -0
- package/dist/tests/parallel/parallel-pool.test.d.ts +11 -0
- package/dist/tests/parallel/parallel-pool.test.d.ts.map +1 -0
- package/dist/tests/parallel/parallel-pool.test.js +192 -0
- package/dist/tests/parallel/parallel-pool.test.js.map +1 -0
- package/dist/tests/plugin-system/demo-min-logic.test.d.ts +2 -0
- package/dist/tests/plugin-system/demo-min-logic.test.d.ts.map +1 -0
- package/dist/tests/plugin-system/demo-min-logic.test.js +85 -0
- package/dist/tests/plugin-system/demo-min-logic.test.js.map +1 -0
- package/dist/tests/plugin-system/registry.test.d.ts +2 -0
- package/dist/tests/plugin-system/registry.test.d.ts.map +1 -0
- package/dist/tests/plugin-system/registry.test.js +88 -0
- package/dist/tests/plugin-system/registry.test.js.map +1 -0
- package/dist/tests/plugin-system/validate.test.d.ts +2 -0
- package/dist/tests/plugin-system/validate.test.d.ts.map +1 -0
- package/dist/tests/plugin-system/validate.test.js +101 -0
- package/dist/tests/plugin-system/validate.test.js.map +1 -0
- package/dist/tests/proof-exchange/proof-exchange.test.d.ts +2 -0
- package/dist/tests/proof-exchange/proof-exchange.test.d.ts.map +1 -0
- package/dist/tests/proof-exchange/proof-exchange.test.js +161 -0
- package/dist/tests/proof-exchange/proof-exchange.test.js.map +1 -0
- package/dist/tests/sat-v2/clause-learning.test.d.ts +2 -0
- package/dist/tests/sat-v2/clause-learning.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/clause-learning.test.js +73 -0
- package/dist/tests/sat-v2/clause-learning.test.js.map +1 -0
- package/dist/tests/sat-v2/lbd.test.d.ts +2 -0
- package/dist/tests/sat-v2/lbd.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/lbd.test.js +82 -0
- package/dist/tests/sat-v2/lbd.test.js.map +1 -0
- package/dist/tests/sat-v2/luby.test.d.ts +2 -0
- package/dist/tests/sat-v2/luby.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/luby.test.js +58 -0
- package/dist/tests/sat-v2/luby.test.js.map +1 -0
- package/dist/tests/sat-v2/phase-saving.test.d.ts +2 -0
- package/dist/tests/sat-v2/phase-saving.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/phase-saving.test.js +38 -0
- package/dist/tests/sat-v2/phase-saving.test.js.map +1 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.d.ts +2 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.js +199 -0
- package/dist/tests/sat-v2/solver-end-to-end.test.js.map +1 -0
- package/dist/tests/sat-v2/vsids.test.d.ts +2 -0
- package/dist/tests/sat-v2/vsids.test.d.ts.map +1 -0
- package/dist/tests/sat-v2/vsids.test.js +69 -0
- package/dist/tests/sat-v2/vsids.test.js.map +1 -0
- package/dist/tests/smt/mock-backend.test.d.ts +2 -0
- package/dist/tests/smt/mock-backend.test.d.ts.map +1 -0
- package/dist/tests/smt/mock-backend.test.js +129 -0
- package/dist/tests/smt/mock-backend.test.js.map +1 -0
- package/dist/tests/smt/serializer.test.d.ts +2 -0
- package/dist/tests/smt/serializer.test.d.ts.map +1 -0
- package/dist/tests/smt/serializer.test.js +94 -0
- package/dist/tests/smt/serializer.test.js.map +1 -0
- package/dist/tests/smt/subprocess-backend.test.d.ts +2 -0
- package/dist/tests/smt/subprocess-backend.test.d.ts.map +1 -0
- package/dist/tests/smt/subprocess-backend.test.js +89 -0
- package/dist/tests/smt/subprocess-backend.test.js.map +1 -0
- package/dist/tests/streaming/stream-eval.test.d.ts +2 -0
- package/dist/tests/streaming/stream-eval.test.d.ts.map +1 -0
- package/dist/tests/streaming/stream-eval.test.js +170 -0
- package/dist/tests/streaming/stream-eval.test.js.map +1 -0
- package/dist/tests/text-layer-v2/claim-graph.test.d.ts +2 -0
- package/dist/tests/text-layer-v2/claim-graph.test.d.ts.map +1 -0
- package/dist/tests/text-layer-v2/claim-graph.test.js +255 -0
- package/dist/tests/text-layer-v2/claim-graph.test.js.map +1 -0
- package/dist/tests/time-travel/snapshot.test.d.ts +2 -0
- package/dist/tests/time-travel/snapshot.test.d.ts.map +1 -0
- package/dist/tests/time-travel/snapshot.test.js +75 -0
- package/dist/tests/time-travel/snapshot.test.js.map +1 -0
- package/dist/tests/time-travel/store.test.d.ts +2 -0
- package/dist/tests/time-travel/store.test.d.ts.map +1 -0
- package/dist/tests/time-travel/store.test.js +242 -0
- package/dist/tests/time-travel/store.test.js.map +1 -0
- package/dist/tests/typecheck-core.test.d.ts +2 -0
- package/dist/tests/typecheck-core.test.d.ts.map +1 -0
- package/dist/tests/typecheck-core.test.js +339 -0
- package/dist/tests/typecheck-core.test.js.map +1 -0
- package/dist/text-layer/v2/claim-graph.d.ts +45 -0
- package/dist/text-layer/v2/claim-graph.d.ts.map +1 -0
- package/dist/text-layer/v2/claim-graph.js +270 -0
- package/dist/text-layer/v2/claim-graph.js.map +1 -0
- package/dist/text-layer/v2/index.d.ts +6 -0
- package/dist/text-layer/v2/index.d.ts.map +1 -0
- package/dist/text-layer/v2/index.js +10 -0
- package/dist/text-layer/v2/index.js.map +1 -0
- package/dist/text-layer/v2/types.d.ts +32 -0
- package/dist/text-layer/v2/types.d.ts.map +1 -0
- package/dist/text-layer/v2/types.js +11 -0
- package/dist/text-layer/v2/types.js.map +1 -0
- package/dist/time-travel/index.d.ts +4 -0
- package/dist/time-travel/index.d.ts.map +1 -0
- package/dist/time-travel/index.js +8 -0
- package/dist/time-travel/index.js.map +1 -0
- package/dist/time-travel/snapshot.d.ts +9 -0
- package/dist/time-travel/snapshot.d.ts.map +1 -0
- package/dist/time-travel/snapshot.js +24 -0
- package/dist/time-travel/snapshot.js.map +1 -0
- package/dist/time-travel/store.d.ts +14 -0
- package/dist/time-travel/store.d.ts.map +1 -0
- package/dist/time-travel/store.js +119 -0
- package/dist/time-travel/store.js.map +1 -0
- package/dist/time-travel/types.d.ts +50 -0
- package/dist/time-travel/types.d.ts.map +1 -0
- package/dist/time-travel/types.js +3 -0
- package/dist/time-travel/types.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hashFormula = hashFormula;
|
|
4
|
+
/**
|
|
5
|
+
* Renombra alfa-canónicamente las variables ligadas de una fórmula.
|
|
6
|
+
* ∀x.P(x) y ∀y.P(y) producen la misma forma canónica.
|
|
7
|
+
*/
|
|
8
|
+
function alphaRename(f, env, counter) {
|
|
9
|
+
switch (f.kind) {
|
|
10
|
+
case 'forall':
|
|
11
|
+
case 'exists': {
|
|
12
|
+
const origVar = f.variable ?? '';
|
|
13
|
+
const canonical = `x${counter.n++}`;
|
|
14
|
+
const newEnv = new Map(env);
|
|
15
|
+
newEnv.set(origVar, canonical);
|
|
16
|
+
const renamedArgs = f.args ? f.args.map((a) => alphaRename(a, newEnv, counter)) : undefined;
|
|
17
|
+
return {
|
|
18
|
+
kind: f.kind,
|
|
19
|
+
variable: canonical,
|
|
20
|
+
args: renamedArgs,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
case 'atom': {
|
|
24
|
+
const resolved = env.get(f.name ?? '') ?? f.name;
|
|
25
|
+
return { kind: 'atom', name: resolved };
|
|
26
|
+
}
|
|
27
|
+
case 'predicate': {
|
|
28
|
+
const resolvedTerms = (f.terms ?? f.params ?? []).map((t) => env.get(t) ?? t);
|
|
29
|
+
return {
|
|
30
|
+
kind: 'predicate',
|
|
31
|
+
name: f.name,
|
|
32
|
+
terms: resolvedTerms,
|
|
33
|
+
params: resolvedTerms,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
default: {
|
|
37
|
+
if (!f.args || f.args.length === 0) {
|
|
38
|
+
return {
|
|
39
|
+
kind: f.kind,
|
|
40
|
+
name: f.name,
|
|
41
|
+
value: f.value,
|
|
42
|
+
variable: f.variable !== undefined ? (env.get(f.variable) ?? f.variable) : undefined,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
kind: f.kind,
|
|
47
|
+
name: f.name,
|
|
48
|
+
value: f.value,
|
|
49
|
+
variable: f.variable !== undefined ? (env.get(f.variable) ?? f.variable) : undefined,
|
|
50
|
+
args: f.args.map((a) => alphaRename(a, newEnvFor(f, env), counter)),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function newEnvFor(_f, env) {
|
|
56
|
+
return env;
|
|
57
|
+
}
|
|
58
|
+
/** Serializa una fórmula ya alfa-renombrada a string canónico. */
|
|
59
|
+
function serialize(f) {
|
|
60
|
+
const parts = [f.kind];
|
|
61
|
+
if (f.name !== undefined)
|
|
62
|
+
parts.push(`n:${f.name}`);
|
|
63
|
+
if (f.variable !== undefined)
|
|
64
|
+
parts.push(`v:${f.variable}`);
|
|
65
|
+
if (f.value !== undefined)
|
|
66
|
+
parts.push(`val:${f.value}`);
|
|
67
|
+
const terms = f.terms ?? f.params;
|
|
68
|
+
if (terms && terms.length > 0) {
|
|
69
|
+
parts.push(`t:[${terms.join(',')}]`);
|
|
70
|
+
}
|
|
71
|
+
if (f.args && f.args.length > 0) {
|
|
72
|
+
parts.push(`a[${f.args.map(serialize).join('|')}]`);
|
|
73
|
+
}
|
|
74
|
+
return parts.join(':');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Genera un hash canónico y estable para una fórmula.
|
|
78
|
+
* - Ignora whitespace/metadatos de source.
|
|
79
|
+
* - Aplica alpha-renaming antes de serializar: fórmulas alfa-equivalentes
|
|
80
|
+
* producen el mismo hash.
|
|
81
|
+
*/
|
|
82
|
+
function hashFormula(f) {
|
|
83
|
+
const counter = { n: 0 };
|
|
84
|
+
const renamed = alphaRename(f, new Map(), counter);
|
|
85
|
+
return serialize(renamed);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/runtime/memo/hash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/memo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hashFormula = exports.DerivationCache = void 0;
|
|
4
|
+
var cache_1 = require("./cache");
|
|
5
|
+
Object.defineProperty(exports, "DerivationCache", { enumerable: true, get: function () { return cache_1.DerivationCache; } });
|
|
6
|
+
var hash_1 = require("./hash");
|
|
7
|
+
Object.defineProperty(exports, "hashFormula", { enumerable: true, get: function () { return hash_1.hashFormula; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/memo/index.ts"],"names":[],"mappings":";;;AAAA,iCAA0C;AAAjC,wGAAA,eAAe,OAAA;AAExB,+BAAqC;AAA5B,mGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ST Parallel Profile Pool — ejecuta múltiples perfiles lógicos en paralelo.
|
|
3
|
+
*
|
|
4
|
+
* Usa Node.js worker_threads cuando está disponible; si no (browser o
|
|
5
|
+
* entorno sin soporte), cae a evaluación secuencial con Promise.resolve().
|
|
6
|
+
*/
|
|
7
|
+
import type { Formula, RunResult } from '../../types';
|
|
8
|
+
import '../../profiles';
|
|
9
|
+
export type ProfileName = string;
|
|
10
|
+
export interface ParallelEvalOptions {
|
|
11
|
+
profiles: ProfileName[];
|
|
12
|
+
poolSize?: number;
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
shareWorkPool?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface ParallelEvalResult {
|
|
17
|
+
perProfile: Record<ProfileName, RunResult | {
|
|
18
|
+
error: string;
|
|
19
|
+
}>;
|
|
20
|
+
totalMs: number;
|
|
21
|
+
speedup: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Evalúa una fórmula lógica con múltiples perfiles en paralelo.
|
|
25
|
+
*
|
|
26
|
+
* Si worker_threads no está disponible (browser), ejecuta secuencialmente.
|
|
27
|
+
*/
|
|
28
|
+
export declare function evalParallel(formula: Formula, opts: ParallelEvalOptions): Promise<ParallelEvalResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Cierra todos los workers del pool compartido.
|
|
31
|
+
* Llamar al final del proceso si shareWorkPool=true.
|
|
32
|
+
*/
|
|
33
|
+
export declare function shutdownPool(): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/parallel/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,gBAAgB,CAAC;AAKxB,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,SAAS,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ND;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAsB7B;AAED;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBlD"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ST Parallel Profile Pool — ejecuta múltiples perfiles lógicos en paralelo.
|
|
4
|
+
*
|
|
5
|
+
* Usa Node.js worker_threads cuando está disponible; si no (browser o
|
|
6
|
+
* entorno sin soporte), cae a evaluación secuencial con Promise.resolve().
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.evalParallel = evalParallel;
|
|
10
|
+
exports.shutdownPool = shutdownPool;
|
|
11
|
+
const os_1 = require("os");
|
|
12
|
+
const interface_1 = require("../../profiles/interface");
|
|
13
|
+
require("../../profiles");
|
|
14
|
+
// ── Detección de entorno ────────────────────────────────────────
|
|
15
|
+
function nodeWorkersAvailable() {
|
|
16
|
+
try {
|
|
17
|
+
if (typeof process !== 'undefined' && process.versions?.node) {
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
19
|
+
require('worker_threads');
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// worker_threads no disponible
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
function createManagedWorker() {
|
|
29
|
+
try {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
31
|
+
const wt = require('worker_threads');
|
|
32
|
+
const workerPath = require.resolve('./worker');
|
|
33
|
+
const w = new wt.Worker(workerPath);
|
|
34
|
+
const mw = {
|
|
35
|
+
busy: false,
|
|
36
|
+
pending: new Map(),
|
|
37
|
+
post: (task) => w.postMessage(task),
|
|
38
|
+
terminate: () => void w.terminate(),
|
|
39
|
+
};
|
|
40
|
+
w.on('message', (data) => {
|
|
41
|
+
const cb = mw.pending.get(data.profileName);
|
|
42
|
+
if (cb) {
|
|
43
|
+
mw.pending.delete(data.profileName);
|
|
44
|
+
mw.busy = false;
|
|
45
|
+
cb.resolve(data.result);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
w.on('error', (err) => {
|
|
49
|
+
for (const [, cb] of mw.pending) {
|
|
50
|
+
cb.resolve({ error: err.message });
|
|
51
|
+
}
|
|
52
|
+
mw.pending.clear();
|
|
53
|
+
mw.busy = false;
|
|
54
|
+
});
|
|
55
|
+
return mw;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// ── Evaluación secuencial (fallback) ────────────────────────────
|
|
62
|
+
function evalSequential(formula, profiles) {
|
|
63
|
+
const perProfile = {};
|
|
64
|
+
for (const name of profiles) {
|
|
65
|
+
const profile = interface_1.registry.get(name);
|
|
66
|
+
if (!profile) {
|
|
67
|
+
perProfile[name] = { error: `Perfil desconocido: "${name}"` };
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
perProfile[name] = profile.checkValid(formula);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
75
|
+
perProfile[name] = { error: msg };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return perProfile;
|
|
79
|
+
}
|
|
80
|
+
// ── Pool compartido (shareWorkPool=true) ────────────────────────
|
|
81
|
+
let sharedPool = null;
|
|
82
|
+
let sharedPoolSize = 0;
|
|
83
|
+
function ensureSharedPool(size) {
|
|
84
|
+
if (sharedPool !== null && sharedPoolSize === size)
|
|
85
|
+
return;
|
|
86
|
+
if (sharedPool) {
|
|
87
|
+
for (const mw of sharedPool) {
|
|
88
|
+
try {
|
|
89
|
+
mw.terminate();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// ignore
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
sharedPool = [];
|
|
97
|
+
sharedPoolSize = size;
|
|
98
|
+
for (let i = 0; i < size; i++) {
|
|
99
|
+
const mw = createManagedWorker();
|
|
100
|
+
if (mw)
|
|
101
|
+
sharedPool.push(mw);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// ── Evaluación de un perfil en un ManagedWorker ─────────────────
|
|
105
|
+
function runProfileOnWorker(mw, formula, profileName, timeoutMs, workerId) {
|
|
106
|
+
return new Promise((resolve) => {
|
|
107
|
+
const timer = setTimeout(() => {
|
|
108
|
+
if (mw.pending.has(profileName)) {
|
|
109
|
+
mw.pending.delete(profileName);
|
|
110
|
+
mw.busy = false;
|
|
111
|
+
resolve({ error: `Timeout: evaluación de "${profileName}" superó ${timeoutMs}ms` });
|
|
112
|
+
}
|
|
113
|
+
}, timeoutMs);
|
|
114
|
+
mw.pending.set(profileName, {
|
|
115
|
+
resolve: (result) => {
|
|
116
|
+
clearTimeout(timer);
|
|
117
|
+
resolve(result);
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
mw.busy = true;
|
|
121
|
+
mw.post({ profileName, formula, timeoutMs, workerId });
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
// ── Evaluación paralela ──────────────────────────────────────────
|
|
125
|
+
async function evalWithWorkers(formula, profiles, poolSize, timeoutMs, shareWorkPool) {
|
|
126
|
+
if (shareWorkPool) {
|
|
127
|
+
ensureSharedPool(poolSize);
|
|
128
|
+
const pool = sharedPool ?? [];
|
|
129
|
+
if (pool.length === 0) {
|
|
130
|
+
return evalSequential(formula, profiles);
|
|
131
|
+
}
|
|
132
|
+
const promises = profiles.map((profileName, idx) => {
|
|
133
|
+
const mw = pool[idx % pool.length];
|
|
134
|
+
if (!mw) {
|
|
135
|
+
return Promise.resolve([profileName, { error: 'Worker no disponible' }]);
|
|
136
|
+
}
|
|
137
|
+
return runProfileOnWorker(mw, formula, profileName, timeoutMs, idx).then((result) => [profileName, result]);
|
|
138
|
+
});
|
|
139
|
+
const entries = await Promise.all(promises);
|
|
140
|
+
return Object.fromEntries(entries);
|
|
141
|
+
}
|
|
142
|
+
// Pool efímero: crear un worker por slot y repartir perfiles
|
|
143
|
+
const actualPoolSize = Math.min(poolSize, profiles.length);
|
|
144
|
+
const workers = [];
|
|
145
|
+
for (let i = 0; i < actualPoolSize; i++) {
|
|
146
|
+
const mw = createManagedWorker();
|
|
147
|
+
if (mw)
|
|
148
|
+
workers.push(mw);
|
|
149
|
+
}
|
|
150
|
+
if (workers.length === 0) {
|
|
151
|
+
return evalSequential(formula, profiles);
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
const promises = profiles.map((profileName, idx) => {
|
|
155
|
+
const mw = workers[idx % workers.length];
|
|
156
|
+
if (!mw) {
|
|
157
|
+
return Promise.resolve([profileName, { error: 'Worker no disponible' }]);
|
|
158
|
+
}
|
|
159
|
+
return runProfileOnWorker(mw, formula, profileName, timeoutMs, idx).then((result) => [profileName, result]);
|
|
160
|
+
});
|
|
161
|
+
const entries = await Promise.all(promises);
|
|
162
|
+
return Object.fromEntries(entries);
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
for (const mw of workers) {
|
|
166
|
+
try {
|
|
167
|
+
mw.terminate();
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// ignore
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// ── API pública ─────────────────────────────────────────────────
|
|
176
|
+
/**
|
|
177
|
+
* Evalúa una fórmula lógica con múltiples perfiles en paralelo.
|
|
178
|
+
*
|
|
179
|
+
* Si worker_threads no está disponible (browser), ejecuta secuencialmente.
|
|
180
|
+
*/
|
|
181
|
+
async function evalParallel(formula, opts) {
|
|
182
|
+
const profiles = opts.profiles;
|
|
183
|
+
const poolSize = opts.poolSize ?? (0, os_1.cpus)().length;
|
|
184
|
+
const timeoutMs = opts.timeoutMs ?? 5000;
|
|
185
|
+
const shareWorkPool = opts.shareWorkPool ?? false;
|
|
186
|
+
const startMs = Date.now();
|
|
187
|
+
let perProfile;
|
|
188
|
+
if (!nodeWorkersAvailable() || profiles.length === 0) {
|
|
189
|
+
perProfile = evalSequential(formula, profiles);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
perProfile = await evalWithWorkers(formula, profiles, poolSize, timeoutMs, shareWorkPool);
|
|
193
|
+
}
|
|
194
|
+
const totalMs = Date.now() - startMs;
|
|
195
|
+
const speedup = profiles.length > 1 && totalMs > 0
|
|
196
|
+
? profiles.length / (totalMs / (totalMs / profiles.length))
|
|
197
|
+
: 1;
|
|
198
|
+
return { perProfile, totalMs, speedup };
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Cierra todos los workers del pool compartido.
|
|
202
|
+
* Llamar al final del proceso si shareWorkPool=true.
|
|
203
|
+
*/
|
|
204
|
+
async function shutdownPool() {
|
|
205
|
+
if (!sharedPool)
|
|
206
|
+
return;
|
|
207
|
+
const pool = sharedPool;
|
|
208
|
+
sharedPool = null;
|
|
209
|
+
sharedPoolSize = 0;
|
|
210
|
+
await Promise.all(pool.map((mw) => new Promise((resolve) => {
|
|
211
|
+
try {
|
|
212
|
+
mw.terminate();
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// ignore
|
|
216
|
+
}
|
|
217
|
+
resolve();
|
|
218
|
+
})));
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/parallel/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAuPH,oCAyBC;AAMD,oCAoBC;AAxSD,2BAA0B;AAE1B,wDAAoD;AACpD,0BAAwB;AAoBxB,mEAAmE;AAEnE,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC7D,iEAAiE;YACjE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAiBD,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAoC,CAAC;QACxE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEpC,MAAM,EAAE,GAAkB;YACxB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,GAAG,EAAE;YAClB,IAAI,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/C,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;SACpC,CAAC;QAEF,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAoB,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,EAAE,EAAE,CAAC;gBACP,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;gBAChB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC3B,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE,SAAS,cAAc,CACrB,OAAgB,EAChB,QAAuB;IAEvB,MAAM,UAAU,GAAuD,EAAE,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,oBAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,wBAAwB,IAAI,GAAG,EAAE,CAAC;YAC9D,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,mEAAmE;AAEnE,IAAI,UAAU,GAA2B,IAAI,CAAC;AAC9C,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,UAAU,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO;IAE3D,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU,GAAG,EAAE,CAAC;IAChB,cAAc,GAAG,IAAI,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;QACjC,IAAI,EAAE;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE,SAAS,kBAAkB,CACzB,EAAiB,EACjB,OAAgB,EAChB,WAAmB,EACnB,SAAiB,EACjB,QAAgB;IAEhB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC/B,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;gBAChB,OAAO,CAAC,EAAE,KAAK,EAAE,2BAA2B,WAAW,YAAY,SAAS,IAAI,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE;YAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;gBAClB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;QACf,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oEAAoE;AAEpE,KAAK,UAAU,eAAe,CAC5B,OAAgB,EAChB,QAAuB,EACvB,QAAgB,EAChB,SAAiB,EACjB,aAAsB;IAEtB,IAAI,aAAa,EAAE,CAAC;QAClB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;YACjD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAU,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,CACtE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,CAAU,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,6DAA6D;IAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAoB,EAAE,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;QACjC,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE;YACjD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAU,CAAC,CAAC;YACpF,CAAC;YACD,OAAO,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,CACtE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,CAAU,CAC3C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAChC,OAAgB,EAChB,IAAyB;IAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAA,SAAI,GAAE,CAAC,MAAM,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;IAElD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,IAAI,UAA8D,CAAC;IAEnE,IAAI,CAAC,oBAAoB,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,OAAO,GACX,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC;QAChC,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC,CAAC;IAER,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,IAAI,GAAG,UAAU,CAAC;IACxB,UAAU,GAAG,IAAI,CAAC;IAClB,cAAc,GAAG,CAAC,CAAC;IAEnB,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CACN,CAAC,EAAE,EAAE,EAAE,CACL,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,EAAE,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CACL,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ST Parallel Profile Worker — ejecutado en un hilo separado (worker_threads).
|
|
3
|
+
*
|
|
4
|
+
* Recibe un WorkerTask con la fórmula serializada y el nombre del perfil,
|
|
5
|
+
* evalúa checkValid() y devuelve WorkerResponse al hilo principal.
|
|
6
|
+
*/
|
|
7
|
+
import type { Formula, RunResult } from '../../types';
|
|
8
|
+
import '../../profiles';
|
|
9
|
+
export interface WorkerTask {
|
|
10
|
+
profileName: string;
|
|
11
|
+
formula: Formula;
|
|
12
|
+
timeoutMs: number;
|
|
13
|
+
workerId: number;
|
|
14
|
+
}
|
|
15
|
+
export interface WorkerResponse {
|
|
16
|
+
workerId: number;
|
|
17
|
+
profileName: string;
|
|
18
|
+
result: RunResult | {
|
|
19
|
+
error: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/runtime/parallel/worker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGtD,OAAO,gBAAgB,CAAC;AAGxB,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ST Parallel Profile Worker — ejecutado en un hilo separado (worker_threads).
|
|
4
|
+
*
|
|
5
|
+
* Recibe un WorkerTask con la fórmula serializada y el nombre del perfil,
|
|
6
|
+
* evalúa checkValid() y devuelve WorkerResponse al hilo principal.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
// Importar en el contexto del worker (Node.js worker_threads)
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
11
|
+
const { parentPort } = require('worker_threads');
|
|
12
|
+
// Registrar perfiles en el contexto del worker
|
|
13
|
+
require("../../profiles");
|
|
14
|
+
const interface_1 = require("../../profiles/interface");
|
|
15
|
+
if (parentPort) {
|
|
16
|
+
parentPort.on('message', (task) => {
|
|
17
|
+
const response = {
|
|
18
|
+
workerId: task.workerId,
|
|
19
|
+
profileName: task.profileName,
|
|
20
|
+
result: runProfile(task),
|
|
21
|
+
};
|
|
22
|
+
parentPort.postMessage(response);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function runProfile(task) {
|
|
26
|
+
try {
|
|
27
|
+
const profile = interface_1.registry.get(task.profileName);
|
|
28
|
+
if (!profile) {
|
|
29
|
+
return { error: `Perfil desconocido: "${task.profileName}"` };
|
|
30
|
+
}
|
|
31
|
+
const deadline = Date.now() + task.timeoutMs;
|
|
32
|
+
const result = profile.checkValid(task.formula);
|
|
33
|
+
if (Date.now() > deadline) {
|
|
34
|
+
return { error: `Timeout: evaluación superó ${task.timeoutMs}ms` };
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
40
|
+
return { error: msg };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/runtime/parallel/worker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,8DAA8D;AAC9D,iEAAiE;AACjE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAoC,CAAC;AAIpF,+CAA+C;AAC/C,0BAAwB;AACxB,wDAAoD;AAepD,IAAI,UAAU,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAgB,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAmB;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;SACzB,CAAC;QACF,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,oBAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,wBAAwB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,8BAA8B,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACrE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { SMTBackend, SMTLogic, SMTModel, SMTResult, SMTSort, ToSMTLIBOptions, DetectedSolver, DetectionResult, ConstDeclaration, ScopedAssertion, SMTScope, } from './types';
|
|
2
|
+
export { toSMTLIB, inferDeclarations, emitDeclareConst, defaultSortFor } from './serializer';
|
|
3
|
+
export { MockSMTBackend } from './mock-backend';
|
|
4
|
+
export { SubprocessSMTBackend, detectAvailableSMT, detectAvailableSMTDetailed, } from './subprocess-backend';
|
|
5
|
+
export type { SubprocessBackendOptions } from './subprocess-backend';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/smt/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,eAAe,EACf,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,QAAQ,GACT,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE7F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST SMT — Barrel de exportaciones del bridge SMT-LIB v2
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.detectAvailableSMTDetailed = exports.detectAvailableSMT = exports.SubprocessSMTBackend = exports.MockSMTBackend = exports.defaultSortFor = exports.emitDeclareConst = exports.inferDeclarations = exports.toSMTLIB = void 0;
|
|
7
|
+
var serializer_1 = require("./serializer");
|
|
8
|
+
Object.defineProperty(exports, "toSMTLIB", { enumerable: true, get: function () { return serializer_1.toSMTLIB; } });
|
|
9
|
+
Object.defineProperty(exports, "inferDeclarations", { enumerable: true, get: function () { return serializer_1.inferDeclarations; } });
|
|
10
|
+
Object.defineProperty(exports, "emitDeclareConst", { enumerable: true, get: function () { return serializer_1.emitDeclareConst; } });
|
|
11
|
+
Object.defineProperty(exports, "defaultSortFor", { enumerable: true, get: function () { return serializer_1.defaultSortFor; } });
|
|
12
|
+
var mock_backend_1 = require("./mock-backend");
|
|
13
|
+
Object.defineProperty(exports, "MockSMTBackend", { enumerable: true, get: function () { return mock_backend_1.MockSMTBackend; } });
|
|
14
|
+
var subprocess_backend_1 = require("./subprocess-backend");
|
|
15
|
+
Object.defineProperty(exports, "SubprocessSMTBackend", { enumerable: true, get: function () { return subprocess_backend_1.SubprocessSMTBackend; } });
|
|
16
|
+
Object.defineProperty(exports, "detectAvailableSMT", { enumerable: true, get: function () { return subprocess_backend_1.detectAvailableSMT; } });
|
|
17
|
+
Object.defineProperty(exports, "detectAvailableSMTDetailed", { enumerable: true, get: function () { return subprocess_backend_1.detectAvailableSMTDetailed; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/smt/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yDAAyD;AACzD,+DAA+D;;;AAgB/D,2CAA6F;AAApF,sGAAA,QAAQ,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,4GAAA,cAAc,OAAA;AAEtE,+CAAgD;AAAvC,8GAAA,cAAc,OAAA;AAEvB,2DAI8B;AAH5B,0HAAA,oBAAoB,OAAA;AACpB,wHAAA,kBAAkB,OAAA;AAClB,gIAAA,0BAA0B,OAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Formula } from '../../types';
|
|
2
|
+
import type { ConstDeclaration, SMTBackend, SMTModel, SMTResult, SMTSort } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* MockSMTBackend resuelve un subconjunto del SMT-LIB v2 sin solver externo:
|
|
5
|
+
* - constantes booleanas con asserts directos (P, ¬P, P→P, P∧¬P)
|
|
6
|
+
* - lineales triviales en una sola variable (x > c, x < c, x = c)
|
|
7
|
+
* - combinaciones con `and` / `or` / `not` recursivas
|
|
8
|
+
*
|
|
9
|
+
* No pretende ser completo. Devuelve `unknown` cuando no sabe.
|
|
10
|
+
*/
|
|
11
|
+
export declare class MockSMTBackend implements SMTBackend {
|
|
12
|
+
readonly name = "mock";
|
|
13
|
+
private scopes;
|
|
14
|
+
private lastModel;
|
|
15
|
+
reset(): void;
|
|
16
|
+
push(): void;
|
|
17
|
+
pop(levels?: number): void;
|
|
18
|
+
declareConst(name: string, sort: SMTSort): void;
|
|
19
|
+
assertFormula(smtlib: string): void;
|
|
20
|
+
/** Versión interna (no parte del contrato público) para inyectar fórmula AST. */
|
|
21
|
+
assertAst(formula: Formula, smtlib?: string): void;
|
|
22
|
+
/** Versión interna para inyectar declaraciones detectadas por el serializer. */
|
|
23
|
+
declareFromInference(decls: ConstDeclaration[]): void;
|
|
24
|
+
checkSat(): SMTResult;
|
|
25
|
+
getModel(): SMTModel | undefined;
|
|
26
|
+
getUnsatCore(): string[];
|
|
27
|
+
private currentScope;
|
|
28
|
+
private collectAssertions;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=mock-backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-backend.d.ts","sourceRoot":"","sources":["../../../src/runtime/smt/mock-backend.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,SAAS,EAET,OAAO,EAER,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,SAAS,CAAuB;IAExC,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAIZ,GAAG,CAAC,MAAM,SAAI,GAAG,IAAI;IAOrB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAK/C,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnC,iFAAiF;IACjF,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAMlD,gFAAgF;IAChF,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,IAAI;IASrD,QAAQ,IAAI,SAAS;IAsBrB,QAAQ,IAAI,QAAQ,GAAG,SAAS;IAIhC,YAAY,IAAI,MAAM,EAAE;IAQxB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,iBAAiB;CAO1B"}
|