@stevenvo780/st-lang 4.0.1 → 4.2.0
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/dist/belief-revision/agm.d.ts +76 -0
- package/dist/belief-revision/agm.d.ts.map +1 -0
- package/dist/belief-revision/agm.js +249 -0
- package/dist/belief-revision/agm.js.map +1 -0
- package/dist/belief-revision/index.d.ts +6 -0
- package/dist/belief-revision/index.d.ts.map +1 -0
- package/dist/belief-revision/index.js +33 -0
- package/dist/belief-revision/index.js.map +1 -0
- package/dist/belief-revision/parser.d.ts +16 -0
- package/dist/belief-revision/parser.d.ts.map +1 -0
- package/dist/belief-revision/parser.js +199 -0
- package/dist/belief-revision/parser.js.map +1 -0
- package/dist/belief-revision/sat.d.ts +19 -0
- package/dist/belief-revision/sat.d.ts.map +1 -0
- package/dist/belief-revision/sat.js +90 -0
- package/dist/belief-revision/sat.js.map +1 -0
- package/dist/belief-revision/types.d.ts +51 -0
- package/dist/belief-revision/types.d.ts.map +1 -0
- package/dist/belief-revision/types.js +10 -0
- package/dist/belief-revision/types.js.map +1 -0
- package/dist/curry-howard/index.d.ts +7 -0
- package/dist/curry-howard/index.d.ts.map +1 -0
- package/dist/curry-howard/index.js +46 -0
- package/dist/curry-howard/index.js.map +1 -0
- package/dist/curry-howard/infer.d.ts +9 -0
- package/dist/curry-howard/infer.d.ts.map +1 -0
- package/dist/curry-howard/infer.js +129 -0
- package/dist/curry-howard/infer.js.map +1 -0
- package/dist/curry-howard/proof.d.ts +7 -0
- package/dist/curry-howard/proof.d.ts.map +1 -0
- package/dist/curry-howard/proof.js +282 -0
- package/dist/curry-howard/proof.js.map +1 -0
- package/dist/curry-howard/reduce.d.ts +7 -0
- package/dist/curry-howard/reduce.d.ts.map +1 -0
- package/dist/curry-howard/reduce.js +266 -0
- package/dist/curry-howard/reduce.js.map +1 -0
- package/dist/curry-howard/types.d.ts +91 -0
- package/dist/curry-howard/types.d.ts.map +1 -0
- package/dist/curry-howard/types.js +149 -0
- package/dist/curry-howard/types.js.map +1 -0
- package/dist/fol-prover-equality/demodulate.d.ts +29 -0
- package/dist/fol-prover-equality/demodulate.d.ts.map +1 -0
- package/dist/fol-prover-equality/demodulate.js +197 -0
- package/dist/fol-prover-equality/demodulate.js.map +1 -0
- package/dist/fol-prover-equality/index.d.ts +8 -0
- package/dist/fol-prover-equality/index.d.ts.map +1 -0
- package/dist/fol-prover-equality/index.js +24 -0
- package/dist/fol-prover-equality/index.js.map +1 -0
- package/dist/fol-prover-equality/paramodulate.d.ts +46 -0
- package/dist/fol-prover-equality/paramodulate.d.ts.map +1 -0
- package/dist/fol-prover-equality/paramodulate.js +159 -0
- package/dist/fol-prover-equality/paramodulate.js.map +1 -0
- package/dist/fol-prover-equality/prove.d.ts +7 -0
- package/dist/fol-prover-equality/prove.d.ts.map +1 -0
- package/dist/fol-prover-equality/prove.js +307 -0
- package/dist/fol-prover-equality/prove.js.map +1 -0
- package/dist/fol-prover-equality/term-utils.d.ts +43 -0
- package/dist/fol-prover-equality/term-utils.d.ts.map +1 -0
- package/dist/fol-prover-equality/term-utils.js +230 -0
- package/dist/fol-prover-equality/term-utils.js.map +1 -0
- package/dist/fol-prover-equality/types.d.ts +20 -0
- package/dist/fol-prover-equality/types.d.ts.map +1 -0
- package/dist/fol-prover-equality/types.js +5 -0
- package/dist/fol-prover-equality/types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/profiles/ctl/check.d.ts +13 -0
- package/dist/profiles/ctl/check.d.ts.map +1 -0
- package/dist/profiles/ctl/check.js +359 -0
- package/dist/profiles/ctl/check.js.map +1 -0
- package/dist/profiles/ctl/index.d.ts +5 -0
- package/dist/profiles/ctl/index.d.ts.map +1 -0
- package/dist/profiles/ctl/index.js +23 -0
- package/dist/profiles/ctl/index.js.map +1 -0
- package/dist/profiles/ctl/types.d.ts +74 -0
- package/dist/profiles/ctl/types.d.ts.map +1 -0
- package/dist/profiles/ctl/types.js +53 -0
- package/dist/profiles/ctl/types.js.map +1 -0
- package/dist/profiles/ctl/witness.d.ts +20 -0
- package/dist/profiles/ctl/witness.d.ts.map +1 -0
- package/dist/profiles/ctl/witness.js +149 -0
- package/dist/profiles/ctl/witness.js.map +1 -0
- package/dist/profiles/default-logic/entailment.d.ts +14 -0
- package/dist/profiles/default-logic/entailment.d.ts.map +1 -0
- package/dist/profiles/default-logic/entailment.js +36 -0
- package/dist/profiles/default-logic/entailment.js.map +1 -0
- package/dist/profiles/default-logic/extensions.d.ts +35 -0
- package/dist/profiles/default-logic/extensions.d.ts.map +1 -0
- package/dist/profiles/default-logic/extensions.js +276 -0
- package/dist/profiles/default-logic/extensions.js.map +1 -0
- package/dist/profiles/default-logic/index.d.ts +5 -0
- package/dist/profiles/default-logic/index.d.ts.map +1 -0
- package/dist/profiles/default-logic/index.js +33 -0
- package/dist/profiles/default-logic/index.js.map +1 -0
- package/dist/profiles/default-logic/types.d.ts +29 -0
- package/dist/profiles/default-logic/types.d.ts.map +1 -0
- package/dist/profiles/default-logic/types.js +25 -0
- package/dist/profiles/default-logic/types.js.map +1 -0
- package/dist/profiles/description-logic/index.d.ts +5 -0
- package/dist/profiles/description-logic/index.d.ts.map +1 -0
- package/dist/profiles/description-logic/index.js +39 -0
- package/dist/profiles/description-logic/index.js.map +1 -0
- package/dist/profiles/description-logic/nnf.d.ts +13 -0
- package/dist/profiles/description-logic/nnf.d.ts.map +1 -0
- package/dist/profiles/description-logic/nnf.js +123 -0
- package/dist/profiles/description-logic/nnf.js.map +1 -0
- package/dist/profiles/description-logic/tableau.d.ts +27 -0
- package/dist/profiles/description-logic/tableau.d.ts.map +1 -0
- package/dist/profiles/description-logic/tableau.js +491 -0
- package/dist/profiles/description-logic/tableau.js.map +1 -0
- package/dist/profiles/description-logic/types.d.ts +45 -0
- package/dist/profiles/description-logic/types.d.ts.map +1 -0
- package/dist/profiles/description-logic/types.js +71 -0
- package/dist/profiles/description-logic/types.js.map +1 -0
- package/dist/profiles/hybrid-logic/index.d.ts +5 -0
- package/dist/profiles/hybrid-logic/index.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/index.js +34 -0
- package/dist/profiles/hybrid-logic/index.js.map +1 -0
- package/dist/profiles/hybrid-logic/sat.d.ts +15 -0
- package/dist/profiles/hybrid-logic/sat.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/sat.js +142 -0
- package/dist/profiles/hybrid-logic/sat.js.map +1 -0
- package/dist/profiles/hybrid-logic/semantics.d.ts +20 -0
- package/dist/profiles/hybrid-logic/semantics.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/semantics.js +107 -0
- package/dist/profiles/hybrid-logic/semantics.js.map +1 -0
- package/dist/profiles/hybrid-logic/types.d.ts +78 -0
- package/dist/profiles/hybrid-logic/types.d.ts.map +1 -0
- package/dist/profiles/hybrid-logic/types.js +107 -0
- package/dist/profiles/hybrid-logic/types.js.map +1 -0
- package/dist/profiles/ltl-sat/index.d.ts +4 -0
- package/dist/profiles/ltl-sat/index.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/index.js +40 -0
- package/dist/profiles/ltl-sat/index.js.map +1 -0
- package/dist/profiles/ltl-sat/sat.d.ts +8 -0
- package/dist/profiles/ltl-sat/sat.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/sat.js +140 -0
- package/dist/profiles/ltl-sat/sat.js.map +1 -0
- package/dist/profiles/ltl-sat/tableau.d.ts +19 -0
- package/dist/profiles/ltl-sat/tableau.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/tableau.js +358 -0
- package/dist/profiles/ltl-sat/tableau.js.map +1 -0
- package/dist/profiles/ltl-sat/types.d.ts +52 -0
- package/dist/profiles/ltl-sat/types.d.ts.map +1 -0
- package/dist/profiles/ltl-sat/types.js +101 -0
- package/dist/profiles/ltl-sat/types.js.map +1 -0
- package/dist/profiles/sequent-g3/index.d.ts +5 -0
- package/dist/profiles/sequent-g3/index.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/index.js +23 -0
- package/dist/profiles/sequent-g3/index.js.map +1 -0
- package/dist/profiles/sequent-g3/latex.d.ts +7 -0
- package/dist/profiles/sequent-g3/latex.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/latex.js +107 -0
- package/dist/profiles/sequent-g3/latex.js.map +1 -0
- package/dist/profiles/sequent-g3/normalize.d.ts +15 -0
- package/dist/profiles/sequent-g3/normalize.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/normalize.js +121 -0
- package/dist/profiles/sequent-g3/normalize.js.map +1 -0
- package/dist/profiles/sequent-g3/prover.d.ts +16 -0
- package/dist/profiles/sequent-g3/prover.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/prover.js +348 -0
- package/dist/profiles/sequent-g3/prover.js.map +1 -0
- package/dist/profiles/sequent-g3/types.d.ts +30 -0
- package/dist/profiles/sequent-g3/types.d.ts.map +1 -0
- package/dist/profiles/sequent-g3/types.js +16 -0
- package/dist/profiles/sequent-g3/types.js.map +1 -0
- package/dist/runtime/countermodel-min/index.d.ts +3 -0
- package/dist/runtime/countermodel-min/index.d.ts.map +1 -0
- package/dist/runtime/countermodel-min/index.js +9 -0
- package/dist/runtime/countermodel-min/index.js.map +1 -0
- package/dist/runtime/countermodel-min/minimize.d.ts +17 -0
- package/dist/runtime/countermodel-min/minimize.d.ts.map +1 -0
- package/dist/runtime/countermodel-min/minimize.js +0 -0
- package/dist/runtime/countermodel-min/minimize.js.map +1 -0
- package/dist/runtime/countermodel-min/types.d.ts +40 -0
- package/dist/runtime/countermodel-min/types.d.ts.map +1 -0
- package/dist/runtime/countermodel-min/types.js +6 -0
- package/dist/runtime/countermodel-min/types.js.map +1 -0
- package/dist/runtime/mus/extract.d.ts +34 -0
- package/dist/runtime/mus/extract.d.ts.map +1 -0
- package/dist/runtime/mus/extract.js +243 -0
- package/dist/runtime/mus/extract.js.map +1 -0
- package/dist/runtime/mus/index.d.ts +4 -0
- package/dist/runtime/mus/index.d.ts.map +1 -0
- package/dist/runtime/mus/index.js +12 -0
- package/dist/runtime/mus/index.js.map +1 -0
- package/dist/runtime/mus/quickxplain.d.ts +10 -0
- package/dist/runtime/mus/quickxplain.d.ts.map +1 -0
- package/dist/runtime/mus/quickxplain.js +100 -0
- package/dist/runtime/mus/quickxplain.js.map +1 -0
- package/dist/runtime/mus/types.d.ts +59 -0
- package/dist/runtime/mus/types.d.ts.map +1 -0
- package/dist/runtime/mus/types.js +20 -0
- package/dist/runtime/mus/types.js.map +1 -0
- package/dist/solver/cdcl-v2-incremental/index.d.ts +3 -0
- package/dist/solver/cdcl-v2-incremental/index.d.ts.map +1 -0
- package/dist/solver/cdcl-v2-incremental/index.js +16 -0
- package/dist/solver/cdcl-v2-incremental/index.js.map +1 -0
- package/dist/solver/cdcl-v2-incremental/solver.d.ts +83 -0
- package/dist/solver/cdcl-v2-incremental/solver.d.ts.map +1 -0
- package/dist/solver/cdcl-v2-incremental/solver.js +727 -0
- package/dist/solver/cdcl-v2-incremental/solver.js.map +1 -0
- package/dist/solver/cdcl-v2-incremental/types.d.ts +47 -0
- package/dist/solver/cdcl-v2-incremental/types.d.ts.map +1 -0
- package/dist/solver/cdcl-v2-incremental/types.js +13 -0
- package/dist/solver/cdcl-v2-incremental/types.js.map +1 -0
- package/dist/tests/belief-revision/agm.test.d.ts +2 -0
- package/dist/tests/belief-revision/agm.test.d.ts.map +1 -0
- package/dist/tests/belief-revision/agm.test.js +173 -0
- package/dist/tests/belief-revision/agm.test.js.map +1 -0
- package/dist/tests/countermodel-min/minimize.test.d.ts +2 -0
- package/dist/tests/countermodel-min/minimize.test.d.ts.map +1 -0
- package/dist/tests/countermodel-min/minimize.test.js +241 -0
- package/dist/tests/countermodel-min/minimize.test.js.map +1 -0
- package/dist/tests/coverage-95/api-and-interpreter-e2e.test.d.ts +2 -0
- package/dist/tests/coverage-95/api-and-interpreter-e2e.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/api-and-interpreter-e2e.test.js +255 -0
- package/dist/tests/coverage-95/api-and-interpreter-e2e.test.js.map +1 -0
- package/dist/tests/coverage-95/argumentation.test.d.ts +2 -0
- package/dist/tests/coverage-95/argumentation.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/argumentation.test.js +105 -0
- package/dist/tests/coverage-95/argumentation.test.js.map +1 -0
- package/dist/tests/coverage-95/arithmetic.test.d.ts +2 -0
- package/dist/tests/coverage-95/arithmetic.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/arithmetic.test.js +139 -0
- package/dist/tests/coverage-95/arithmetic.test.js.map +1 -0
- package/dist/tests/coverage-95/belnap.test.d.ts +2 -0
- package/dist/tests/coverage-95/belnap.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/belnap.test.js +145 -0
- package/dist/tests/coverage-95/belnap.test.js.map +1 -0
- package/dist/tests/coverage-95/cdcl-v2-solver.test.d.ts +2 -0
- package/dist/tests/coverage-95/cdcl-v2-solver.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/cdcl-v2-solver.test.js +61 -0
- package/dist/tests/coverage-95/cdcl-v2-solver.test.js.map +1 -0
- package/dist/tests/coverage-95/classical-propositional-direct.test.d.ts +2 -0
- package/dist/tests/coverage-95/classical-propositional-direct.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/classical-propositional-direct.test.js +175 -0
- package/dist/tests/coverage-95/classical-propositional-direct.test.js.map +1 -0
- package/dist/tests/coverage-95/compat.test.d.ts +2 -0
- package/dist/tests/coverage-95/compat.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/compat.test.js +82 -0
- package/dist/tests/coverage-95/compat.test.js.map +1 -0
- package/dist/tests/coverage-95/examples-runner.test.d.ts +2 -0
- package/dist/tests/coverage-95/examples-runner.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/examples-runner.test.js +34 -0
- package/dist/tests/coverage-95/examples-runner.test.js.map +1 -0
- package/dist/tests/coverage-95/first-order.test.d.ts +2 -0
- package/dist/tests/coverage-95/first-order.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/first-order.test.js +138 -0
- package/dist/tests/coverage-95/first-order.test.js.map +1 -0
- package/dist/tests/coverage-95/fol-prover.test.d.ts +2 -0
- package/dist/tests/coverage-95/fol-prover.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/fol-prover.test.js +228 -0
- package/dist/tests/coverage-95/fol-prover.test.js.map +1 -0
- package/dist/tests/coverage-95/interpreter-commands.test.d.ts +2 -0
- package/dist/tests/coverage-95/interpreter-commands.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/interpreter-commands.test.js +332 -0
- package/dist/tests/coverage-95/interpreter-commands.test.js.map +1 -0
- package/dist/tests/coverage-95/lsp-server.test.d.ts +2 -0
- package/dist/tests/coverage-95/lsp-server.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/lsp-server.test.js +181 -0
- package/dist/tests/coverage-95/lsp-server.test.js.map +1 -0
- package/dist/tests/coverage-95/modal-tableau-profiles.test.d.ts +2 -0
- package/dist/tests/coverage-95/modal-tableau-profiles.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/modal-tableau-profiles.test.js +157 -0
- package/dist/tests/coverage-95/modal-tableau-profiles.test.js.map +1 -0
- package/dist/tests/coverage-95/parallel-sat.test.d.ts +2 -0
- package/dist/tests/coverage-95/parallel-sat.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/parallel-sat.test.js +42 -0
- package/dist/tests/coverage-95/parallel-sat.test.js.map +1 -0
- package/dist/tests/coverage-95/parser-extra.test.d.ts +2 -0
- package/dist/tests/coverage-95/parser-extra.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/parser-extra.test.js +210 -0
- package/dist/tests/coverage-95/parser-extra.test.js.map +1 -0
- package/dist/tests/coverage-95/propositional-utilities.test.d.ts +2 -0
- package/dist/tests/coverage-95/propositional-utilities.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/propositional-utilities.test.js +281 -0
- package/dist/tests/coverage-95/propositional-utilities.test.js.map +1 -0
- package/dist/tests/coverage-95/protocol-handler.test.d.ts +2 -0
- package/dist/tests/coverage-95/protocol-handler.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/protocol-handler.test.js +275 -0
- package/dist/tests/coverage-95/protocol-handler.test.js.map +1 -0
- package/dist/tests/coverage-95/smt-mock-backend.test.d.ts +2 -0
- package/dist/tests/coverage-95/smt-mock-backend.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/smt-mock-backend.test.js +201 -0
- package/dist/tests/coverage-95/smt-mock-backend.test.js.map +1 -0
- package/dist/tests/coverage-95/smt-serializer.test.d.ts +2 -0
- package/dist/tests/coverage-95/smt-serializer.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/smt-serializer.test.js +143 -0
- package/dist/tests/coverage-95/smt-serializer.test.js.map +1 -0
- package/dist/tests/coverage-95/smt-subprocess.test.d.ts +2 -0
- package/dist/tests/coverage-95/smt-subprocess.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/smt-subprocess.test.js +96 -0
- package/dist/tests/coverage-95/smt-subprocess.test.js.map +1 -0
- package/dist/tests/coverage-95/tableau-engine.test.d.ts +2 -0
- package/dist/tests/coverage-95/tableau-engine.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/tableau-engine.test.js +125 -0
- package/dist/tests/coverage-95/tableau-engine.test.js.map +1 -0
- package/dist/tests/coverage-95/temporal-ltl.test.d.ts +2 -0
- package/dist/tests/coverage-95/temporal-ltl.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/temporal-ltl.test.js +94 -0
- package/dist/tests/coverage-95/temporal-ltl.test.js.map +1 -0
- package/dist/tests/coverage-95/typecheck-checker.test.d.ts +2 -0
- package/dist/tests/coverage-95/typecheck-checker.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/typecheck-checker.test.js +191 -0
- package/dist/tests/coverage-95/typecheck-checker.test.js.map +1 -0
- package/dist/tests/coverage-95/undecidability-detector.test.d.ts +2 -0
- package/dist/tests/coverage-95/undecidability-detector.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/undecidability-detector.test.js +149 -0
- package/dist/tests/coverage-95/undecidability-detector.test.js.map +1 -0
- package/dist/tests/coverage-95/visitor.test.d.ts +2 -0
- package/dist/tests/coverage-95/visitor.test.d.ts.map +1 -0
- package/dist/tests/coverage-95/visitor.test.js +140 -0
- package/dist/tests/coverage-95/visitor.test.js.map +1 -0
- package/dist/tests/ctl/check.test.d.ts +2 -0
- package/dist/tests/ctl/check.test.d.ts.map +1 -0
- package/dist/tests/ctl/check.test.js +337 -0
- package/dist/tests/ctl/check.test.js.map +1 -0
- package/dist/tests/curry-howard/infer.test.d.ts +2 -0
- package/dist/tests/curry-howard/infer.test.d.ts.map +1 -0
- package/dist/tests/curry-howard/infer.test.js +93 -0
- package/dist/tests/curry-howard/infer.test.js.map +1 -0
- package/dist/tests/curry-howard/proof.test.d.ts +2 -0
- package/dist/tests/curry-howard/proof.test.d.ts.map +1 -0
- package/dist/tests/curry-howard/proof.test.js +105 -0
- package/dist/tests/curry-howard/proof.test.js.map +1 -0
- package/dist/tests/curry-howard/reduce.test.d.ts +2 -0
- package/dist/tests/curry-howard/reduce.test.d.ts.map +1 -0
- package/dist/tests/curry-howard/reduce.test.js +109 -0
- package/dist/tests/curry-howard/reduce.test.js.map +1 -0
- package/dist/tests/default-logic/extensions.test.d.ts +2 -0
- package/dist/tests/default-logic/extensions.test.d.ts.map +1 -0
- package/dist/tests/default-logic/extensions.test.js +323 -0
- package/dist/tests/default-logic/extensions.test.js.map +1 -0
- package/dist/tests/description-logic/alc.test.d.ts +2 -0
- package/dist/tests/description-logic/alc.test.d.ts.map +1 -0
- package/dist/tests/description-logic/alc.test.js +253 -0
- package/dist/tests/description-logic/alc.test.js.map +1 -0
- package/dist/tests/fol-prover-equality/prove.test.d.ts +2 -0
- package/dist/tests/fol-prover-equality/prove.test.d.ts.map +1 -0
- package/dist/tests/fol-prover-equality/prove.test.js +179 -0
- package/dist/tests/fol-prover-equality/prove.test.js.map +1 -0
- package/dist/tests/hybrid-logic/semantics.test.d.ts +2 -0
- package/dist/tests/hybrid-logic/semantics.test.d.ts.map +1 -0
- package/dist/tests/hybrid-logic/semantics.test.js +169 -0
- package/dist/tests/hybrid-logic/semantics.test.js.map +1 -0
- package/dist/tests/ltl-sat/sat.test.d.ts +2 -0
- package/dist/tests/ltl-sat/sat.test.d.ts.map +1 -0
- package/dist/tests/ltl-sat/sat.test.js +160 -0
- package/dist/tests/ltl-sat/sat.test.js.map +1 -0
- package/dist/tests/mus/extract.test.d.ts +2 -0
- package/dist/tests/mus/extract.test.d.ts.map +1 -0
- package/dist/tests/mus/extract.test.js +352 -0
- package/dist/tests/mus/extract.test.js.map +1 -0
- package/dist/tests/sat-v2-incremental/basic.test.d.ts +2 -0
- package/dist/tests/sat-v2-incremental/basic.test.d.ts.map +1 -0
- package/dist/tests/sat-v2-incremental/basic.test.js +352 -0
- package/dist/tests/sat-v2-incremental/basic.test.js.map +1 -0
- package/dist/tests/sequent-g3/prover.test.d.ts +2 -0
- package/dist/tests/sequent-g3/prover.test.d.ts.map +1 -0
- package/dist/tests/sequent-g3/prover.test.js +205 -0
- package/dist/tests/sequent-g3/prover.test.js.map +1 -0
- package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.d.ts +2 -0
- package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.d.ts.map +1 -0
- package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.js +200 -0
- package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.js.map +1 -0
- package/dist/text-layer/v2/index.d.ts +2 -0
- package/dist/text-layer/v2/index.d.ts.map +1 -1
- package/dist/text-layer/v2/index.js +7 -1
- package/dist/text-layer/v2/index.js.map +1 -1
- package/dist/text-layer/v2/mdx-bridge/diff.d.ts +13 -0
- package/dist/text-layer/v2/mdx-bridge/diff.d.ts.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/diff.js +69 -0
- package/dist/text-layer/v2/mdx-bridge/diff.js.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/index.d.ts +14 -0
- package/dist/text-layer/v2/mdx-bridge/index.d.ts.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/index.js +21 -0
- package/dist/text-layer/v2/mdx-bridge/index.js.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/parser.d.ts +33 -0
- package/dist/text-layer/v2/mdx-bridge/parser.d.ts.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/parser.js +192 -0
- package/dist/text-layer/v2/mdx-bridge/parser.js.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/serializer.d.ts +17 -0
- package/dist/text-layer/v2/mdx-bridge/serializer.d.ts.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/serializer.js +69 -0
- package/dist/text-layer/v2/mdx-bridge/serializer.js.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/types.d.ts +53 -0
- package/dist/text-layer/v2/mdx-bridge/types.d.ts.map +1 -0
- package/dist/text-layer/v2/mdx-bridge/types.js +19 -0
- package/dist/text-layer/v2/mdx-bridge/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST LTL-SAT — Decisor SAT vía búsqueda de lazo aceptante
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Algoritmo (Vardi-Wolper en versión explícita):
|
|
6
|
+
//
|
|
7
|
+
// 1. NNF + clausura + enumerar atoms localmente consistentes.
|
|
8
|
+
// 2. Construir relación de transición sobre atoms.
|
|
9
|
+
// 3. Filtrar atoms iniciales: aquellos que contienen φ.
|
|
10
|
+
// 4. SAT(φ) ⇔ existe lazo (prefix → loop) accesible desde un
|
|
11
|
+
// atom inicial donde, para cada eventualidad presente en
|
|
12
|
+
// cualquier atom del lazo, hay un atom del lazo donde el
|
|
13
|
+
// "witness" está presente.
|
|
14
|
+
//
|
|
15
|
+
// La construcción es exponencial en |φ|; suficiente para fórmulas
|
|
16
|
+
// pedagógicas y tests (≤ ~15 operadores). No es competitivo con
|
|
17
|
+
// SPOT, pero es correcto y didáctico.
|
|
18
|
+
// ============================================================
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.isSatisfiable = isSatisfiable;
|
|
21
|
+
exports.isValid = isValid;
|
|
22
|
+
exports.toBuchi = toBuchi;
|
|
23
|
+
const tableau_1 = require("./tableau");
|
|
24
|
+
const types_1 = require("./types");
|
|
25
|
+
function buildModel(phi) {
|
|
26
|
+
const nnf = (0, tableau_1.toNNF)(phi);
|
|
27
|
+
const close = (0, tableau_1.closure)(nnf);
|
|
28
|
+
const atoms = (0, tableau_1.enumerateAtoms)(close);
|
|
29
|
+
const succ = (0, tableau_1.transitions)(atoms);
|
|
30
|
+
const initialKey = (0, types_1.formulaKey)(nnf);
|
|
31
|
+
const initialIds = atoms.filter((a) => a.formulas.has(initialKey)).map((a) => a.id);
|
|
32
|
+
return { atoms, succ, initialIds };
|
|
33
|
+
}
|
|
34
|
+
// Para cada eventualidad que aparece en algún atom del ciclo, debe haber
|
|
35
|
+
// un atom del ciclo donde el witness se cumple. Verificamos sobre la
|
|
36
|
+
// secuencia ordenada `loop`.
|
|
37
|
+
function fulfillsAllEventualities(atoms, loop) {
|
|
38
|
+
// Recolectamos las eventualidades que aparecen en TODOS los estados
|
|
39
|
+
// del lazo (porque cuando una eventualidad cruza el corte X-F φ del lazo
|
|
40
|
+
// debe cumplirse). Más simple: para cada eventualidad presente en al
|
|
41
|
+
// menos un estado del ciclo, debe haber un estado con el witness.
|
|
42
|
+
const pendingByEv = new Map();
|
|
43
|
+
for (const id of loop) {
|
|
44
|
+
const a = atoms[id];
|
|
45
|
+
for (const ev of (0, tableau_1.eventualitiesIn)(a)) {
|
|
46
|
+
if (!pendingByEv.has(ev.key))
|
|
47
|
+
pendingByEv.set(ev.key, ev.witnessFormulaKey);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
for (const [, witnessKey] of pendingByEv) {
|
|
51
|
+
let satisfied = false;
|
|
52
|
+
for (const id of loop) {
|
|
53
|
+
if (atoms[id].formulas.has(witnessKey)) {
|
|
54
|
+
satisfied = true;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (!satisfied)
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
// Búsqueda: DFS desde cada inicial, explorando todos los caminos
|
|
64
|
+
// simples extendidos en busca de un lazo aceptante. Como los grafos son
|
|
65
|
+
// pequeños (caps internos), una exploración exhaustiva acotada basta.
|
|
66
|
+
function searchLasso(model) {
|
|
67
|
+
const { atoms, succ, initialIds } = model;
|
|
68
|
+
const N = atoms.length;
|
|
69
|
+
if (N === 0 || initialIds.length === 0)
|
|
70
|
+
return null;
|
|
71
|
+
// Soft cap para evitar explosión combinatoria.
|
|
72
|
+
const MAX_PATH_LEN = Math.min(N + 6, 60);
|
|
73
|
+
for (const start of initialIds) {
|
|
74
|
+
const path = [start];
|
|
75
|
+
const pathPos = new Map();
|
|
76
|
+
pathPos.set(start, 0);
|
|
77
|
+
const found = dfs(start, path, pathPos);
|
|
78
|
+
if (found)
|
|
79
|
+
return found;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
function dfs(node, path, pathPos) {
|
|
83
|
+
const successors = succ.get(node) ?? [];
|
|
84
|
+
for (const next of successors) {
|
|
85
|
+
const cycleIdx = pathPos.get(next);
|
|
86
|
+
if (cycleIdx !== undefined) {
|
|
87
|
+
// Tenemos lazo: prefix = path[0..idx-1], loop = path[idx..end].
|
|
88
|
+
const prefix = path.slice(0, cycleIdx);
|
|
89
|
+
const loop = path.slice(cycleIdx);
|
|
90
|
+
if (loop.length > 0 && fulfillsAllEventualities(atoms, loop)) {
|
|
91
|
+
return { prefix, loop };
|
|
92
|
+
}
|
|
93
|
+
// Si no aceptante, intentamos otros sucesores (no recursamos por
|
|
94
|
+
// este nodo ya visitado en el path actual).
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (path.length >= MAX_PATH_LEN)
|
|
98
|
+
continue;
|
|
99
|
+
path.push(next);
|
|
100
|
+
pathPos.set(next, path.length - 1);
|
|
101
|
+
const r = dfs(next, path, pathPos);
|
|
102
|
+
if (r)
|
|
103
|
+
return r;
|
|
104
|
+
path.pop();
|
|
105
|
+
pathPos.delete(next);
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function atomLabel(a) {
|
|
111
|
+
return (0, tableau_1.describeAtom)(a);
|
|
112
|
+
}
|
|
113
|
+
function isSatisfiable(phi) {
|
|
114
|
+
const model = buildModel(phi);
|
|
115
|
+
const lasso = searchLasso(model);
|
|
116
|
+
if (!lasso)
|
|
117
|
+
return { sat: false };
|
|
118
|
+
const witness = {
|
|
119
|
+
prefix: lasso.prefix.map((id) => atomLabel(model.atoms[id])),
|
|
120
|
+
loop: lasso.loop.map((id) => atomLabel(model.atoms[id])),
|
|
121
|
+
};
|
|
122
|
+
return { sat: true, witness };
|
|
123
|
+
}
|
|
124
|
+
function isValid(phi) {
|
|
125
|
+
const negated = (0, types_1.not)(phi);
|
|
126
|
+
return !isSatisfiable(negated).sat;
|
|
127
|
+
}
|
|
128
|
+
// Estimación de tamaño del autómata estilo Büchi: cuenta atoms (estados)
|
|
129
|
+
// y cuántos de ellos pueden ser "aceptantes" para alguna eventualidad
|
|
130
|
+
// (heurística simple: estados que no tienen eventualidades pendientes).
|
|
131
|
+
function toBuchi(phi) {
|
|
132
|
+
const model = buildModel(phi);
|
|
133
|
+
let accepting = 0;
|
|
134
|
+
for (const a of model.atoms) {
|
|
135
|
+
if ((0, tableau_1.eventualitiesIn)(a).length === 0)
|
|
136
|
+
accepting += 1;
|
|
137
|
+
}
|
|
138
|
+
return { states: model.atoms.length, accepting };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=sat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sat.js","sourceRoot":"","sources":["../../../src/profiles/ltl-sat/sat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LTLFormula } from './types';
|
|
2
|
+
export declare function toNNF(f: LTLFormula): LTLFormula;
|
|
3
|
+
export declare function closure(f: LTLFormula): LTLFormula[];
|
|
4
|
+
export interface Atom {
|
|
5
|
+
id: number;
|
|
6
|
+
formulas: Map<string, LTLFormula>;
|
|
7
|
+
positiveLiterals: string[];
|
|
8
|
+
negativeLiterals: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function enumerateAtoms(closureFormulas: LTLFormula[]): Atom[];
|
|
11
|
+
export declare function transitions(atoms: Atom[]): Map<number, number[]>;
|
|
12
|
+
export interface Eventuality {
|
|
13
|
+
key: string;
|
|
14
|
+
witnessFormulaKey: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function eventualitiesIn(atom: Atom): Eventuality[];
|
|
17
|
+
export declare function describeAtom(a: Atom): string;
|
|
18
|
+
export declare function describeFormula(f: LTLFormula): string;
|
|
19
|
+
//# sourceMappingURL=tableau.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableau.d.ts","sourceRoot":"","sources":["../../../src/profiles/ltl-sat/tableau.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,UAAU,EAA+B,MAAM,SAAS,CAAC;AAIlE,wBAAgB,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,CAE/C;AAgED,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CA6CnD;AAID,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IAEX,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAElC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAqFD,wBAAgB,cAAc,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,CAgEpE;AAWD,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAwBhE;AAOD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IAGZ,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,EAAE,CAUzD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAK5C;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST LTL-SAT — Tableau / construcción de autómata estilo Büchi
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Procedimiento de decisión clásico (Wolper, Vardi-Wolper):
|
|
6
|
+
//
|
|
7
|
+
// 1. Normalizar a NNF (negaciones empujadas hasta átomos).
|
|
8
|
+
// 2. Cerrar bajo subfórmulas y duales.
|
|
9
|
+
// 3. Generar "atoms" = subconjuntos máximalmente consistentes
|
|
10
|
+
// de la clausura que cumplen las reglas locales de tableau
|
|
11
|
+
// (α/β rules: una ∧ requiere ambas conyuntas; una ∨
|
|
12
|
+
// requiere ≥1 disyunta; etc.).
|
|
13
|
+
// 4. Construir transición: atom A → atom B sii cada Xφ ∈ A
|
|
14
|
+
// cumple φ ∈ B (y nada más restringe el siguiente estado).
|
|
15
|
+
// 5. Decidir SAT: existe lazo accesible desde un átomo que
|
|
16
|
+
// contiene φ tal que cada eventualidad (F ψ o φ U ψ) se
|
|
17
|
+
// cumple en el ciclo (presencia de ψ).
|
|
18
|
+
//
|
|
19
|
+
// El procedimiento es decidible: 2^O(|φ|) atoms, búsqueda de
|
|
20
|
+
// lazo en el grafo resultante (NL en el tamaño del grafo).
|
|
21
|
+
// ============================================================
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.toNNF = toNNF;
|
|
24
|
+
exports.closure = closure;
|
|
25
|
+
exports.enumerateAtoms = enumerateAtoms;
|
|
26
|
+
exports.transitions = transitions;
|
|
27
|
+
exports.eventualitiesIn = eventualitiesIn;
|
|
28
|
+
exports.describeAtom = describeAtom;
|
|
29
|
+
exports.describeFormula = describeFormula;
|
|
30
|
+
const types_1 = require("./types");
|
|
31
|
+
// --- NNF: negation normal form -----------------------------------------------
|
|
32
|
+
function toNNF(f) {
|
|
33
|
+
return pushNot(f, false);
|
|
34
|
+
}
|
|
35
|
+
function pushNot(f, negated) {
|
|
36
|
+
switch (f.kind) {
|
|
37
|
+
case 'atom':
|
|
38
|
+
return negated ? { kind: 'not', arg: f } : f;
|
|
39
|
+
case 'not':
|
|
40
|
+
return pushNot(f.arg, !negated);
|
|
41
|
+
case 'and':
|
|
42
|
+
if (negated) {
|
|
43
|
+
return { kind: 'or', args: f.args.map((a) => pushNot(a, true)) };
|
|
44
|
+
}
|
|
45
|
+
return { kind: 'and', args: f.args.map((a) => pushNot(a, false)) };
|
|
46
|
+
case 'or':
|
|
47
|
+
if (negated) {
|
|
48
|
+
return { kind: 'and', args: f.args.map((a) => pushNot(a, true)) };
|
|
49
|
+
}
|
|
50
|
+
return { kind: 'or', args: f.args.map((a) => pushNot(a, false)) };
|
|
51
|
+
case 'X':
|
|
52
|
+
// ¬X φ ≡ X ¬φ (en LTL lineal el next es funcional).
|
|
53
|
+
return { kind: 'X', arg: pushNot(f.arg, negated) };
|
|
54
|
+
case 'F':
|
|
55
|
+
// ¬F φ ≡ G ¬φ
|
|
56
|
+
return negated
|
|
57
|
+
? { kind: 'G', arg: pushNot(f.arg, true) }
|
|
58
|
+
: { kind: 'F', arg: pushNot(f.arg, false) };
|
|
59
|
+
case 'G':
|
|
60
|
+
// ¬G φ ≡ F ¬φ
|
|
61
|
+
return negated
|
|
62
|
+
? { kind: 'F', arg: pushNot(f.arg, true) }
|
|
63
|
+
: { kind: 'G', arg: pushNot(f.arg, false) };
|
|
64
|
+
case 'U':
|
|
65
|
+
// ¬(φ U ψ) ≡ (¬ψ) R (¬φ)
|
|
66
|
+
if (negated) {
|
|
67
|
+
return {
|
|
68
|
+
kind: 'R',
|
|
69
|
+
left: pushNot(f.right, true),
|
|
70
|
+
right: pushNot(f.left, true),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
kind: 'U',
|
|
75
|
+
left: pushNot(f.left, false),
|
|
76
|
+
right: pushNot(f.right, false),
|
|
77
|
+
};
|
|
78
|
+
case 'R':
|
|
79
|
+
// ¬(φ R ψ) ≡ (¬φ) U (¬ψ)
|
|
80
|
+
if (negated) {
|
|
81
|
+
return {
|
|
82
|
+
kind: 'U',
|
|
83
|
+
left: pushNot(f.left, true),
|
|
84
|
+
right: pushNot(f.right, true),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
kind: 'R',
|
|
89
|
+
left: pushNot(f.left, false),
|
|
90
|
+
right: pushNot(f.right, false),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// --- Closure ----------------------------------------------------------------
|
|
95
|
+
function closure(f) {
|
|
96
|
+
const seen = new Map();
|
|
97
|
+
function visit(g) {
|
|
98
|
+
const k = (0, types_1.formulaKey)(g);
|
|
99
|
+
if (seen.has(k))
|
|
100
|
+
return;
|
|
101
|
+
seen.set(k, g);
|
|
102
|
+
switch (g.kind) {
|
|
103
|
+
case 'atom':
|
|
104
|
+
return;
|
|
105
|
+
case 'not':
|
|
106
|
+
visit(g.arg);
|
|
107
|
+
return;
|
|
108
|
+
case 'and':
|
|
109
|
+
case 'or':
|
|
110
|
+
g.args.forEach(visit);
|
|
111
|
+
return;
|
|
112
|
+
case 'X':
|
|
113
|
+
visit(g.arg);
|
|
114
|
+
return;
|
|
115
|
+
case 'F':
|
|
116
|
+
// F φ ≡ φ ∨ X F φ; añadimos también X F φ a la clausura.
|
|
117
|
+
visit(g.arg);
|
|
118
|
+
visit({ kind: 'X', arg: g });
|
|
119
|
+
return;
|
|
120
|
+
case 'G':
|
|
121
|
+
// G φ ≡ φ ∧ X G φ
|
|
122
|
+
visit(g.arg);
|
|
123
|
+
visit({ kind: 'X', arg: g });
|
|
124
|
+
return;
|
|
125
|
+
case 'U':
|
|
126
|
+
// φ U ψ ≡ ψ ∨ (φ ∧ X(φ U ψ))
|
|
127
|
+
visit(g.left);
|
|
128
|
+
visit(g.right);
|
|
129
|
+
visit({ kind: 'X', arg: g });
|
|
130
|
+
return;
|
|
131
|
+
case 'R':
|
|
132
|
+
// φ R ψ ≡ ψ ∧ (φ ∨ X(φ R ψ))
|
|
133
|
+
visit(g.left);
|
|
134
|
+
visit(g.right);
|
|
135
|
+
visit({ kind: 'X', arg: g });
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
visit(f);
|
|
140
|
+
return Array.from(seen.values());
|
|
141
|
+
}
|
|
142
|
+
// Devuelve true si la asignación parcial `present` es localmente consistente
|
|
143
|
+
// con respecto a las reglas tableau y *contiene* todas las fórmulas que se
|
|
144
|
+
// derivan obligatoriamente de las que ya están dentro.
|
|
145
|
+
function isLocallyConsistent(present, byKey) {
|
|
146
|
+
for (const [k, f] of byKey) {
|
|
147
|
+
if (!present.has(k))
|
|
148
|
+
continue;
|
|
149
|
+
switch (f.kind) {
|
|
150
|
+
case 'atom': {
|
|
151
|
+
const negKey = `n:${k}`;
|
|
152
|
+
if (present.has(negKey))
|
|
153
|
+
return false;
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case 'not': {
|
|
157
|
+
if (f.arg.kind === 'atom') {
|
|
158
|
+
// ¬p: p no debe estar.
|
|
159
|
+
if (present.has((0, types_1.formulaKey)(f.arg)))
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
// Cualquier otro `not` no debería existir tras NNF.
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
case 'and':
|
|
166
|
+
for (const a of f.args) {
|
|
167
|
+
if (!present.has((0, types_1.formulaKey)(a)))
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
case 'or': {
|
|
172
|
+
// Al menos una disyunta presente.
|
|
173
|
+
let ok = false;
|
|
174
|
+
for (const a of f.args) {
|
|
175
|
+
if (present.has((0, types_1.formulaKey)(a))) {
|
|
176
|
+
ok = true;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (!ok)
|
|
181
|
+
return false;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
case 'X':
|
|
185
|
+
// X φ no impone condiciones locales en el átomo actual; lo
|
|
186
|
+
// valida la relación de transición.
|
|
187
|
+
break;
|
|
188
|
+
case 'F': {
|
|
189
|
+
// F φ ≡ φ ∨ X F φ: φ presente o X(F φ) presente.
|
|
190
|
+
const phiKey = (0, types_1.formulaKey)(f.arg);
|
|
191
|
+
const xFphiKey = `X:${k}`;
|
|
192
|
+
if (!present.has(phiKey) && !present.has(xFphiKey))
|
|
193
|
+
return false;
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
case 'G': {
|
|
197
|
+
// G φ ≡ φ ∧ X G φ: ambas.
|
|
198
|
+
const phiKey = (0, types_1.formulaKey)(f.arg);
|
|
199
|
+
const xGphiKey = `X:${k}`;
|
|
200
|
+
if (!present.has(phiKey) || !present.has(xGphiKey))
|
|
201
|
+
return false;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case 'U': {
|
|
205
|
+
// φ U ψ ≡ ψ ∨ (φ ∧ X(φ U ψ))
|
|
206
|
+
const psiKey = (0, types_1.formulaKey)(f.right);
|
|
207
|
+
const phiKey = (0, types_1.formulaKey)(f.left);
|
|
208
|
+
const xUKey = `X:${k}`;
|
|
209
|
+
const optA = present.has(psiKey);
|
|
210
|
+
const optB = present.has(phiKey) && present.has(xUKey);
|
|
211
|
+
if (!optA && !optB)
|
|
212
|
+
return false;
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
case 'R': {
|
|
216
|
+
// φ R ψ ≡ ψ ∧ (φ ∨ X(φ R ψ))
|
|
217
|
+
const psiKey = (0, types_1.formulaKey)(f.right);
|
|
218
|
+
const phiKey = (0, types_1.formulaKey)(f.left);
|
|
219
|
+
const xRKey = `X:${k}`;
|
|
220
|
+
if (!present.has(psiKey))
|
|
221
|
+
return false;
|
|
222
|
+
if (!present.has(phiKey) && !present.has(xRKey))
|
|
223
|
+
return false;
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
// Genera todos los atoms (subconjuntos de la clausura) localmente
|
|
231
|
+
// consistentes. Para evitar explosión usamos enumeración por elección
|
|
232
|
+
// de subfórmulas en orden tópico con poda temprana.
|
|
233
|
+
function enumerateAtoms(closureFormulas) {
|
|
234
|
+
const byKey = new Map();
|
|
235
|
+
for (const g of closureFormulas)
|
|
236
|
+
byKey.set((0, types_1.formulaKey)(g), g);
|
|
237
|
+
// Particionamos en: átomos atómicos (incluyendo sus negaciones), y el resto.
|
|
238
|
+
// Para cada átomo proposicional decidimos true/false. Para el resto, lo
|
|
239
|
+
// derivamos por reglas; pero algunas elecciones quedan: ∨, U, R, F
|
|
240
|
+
// tienen disyunciones internas. Las enumeramos por subset de la clausura.
|
|
241
|
+
//
|
|
242
|
+
// Estrategia: enumerar sobre todos los subconjuntos de la clausura y
|
|
243
|
+
// filtrar por consistencia local. La clausura |Φ| ≤ O(|φ|*2). Para
|
|
244
|
+
// fórmulas pequeñas (~5-10 ops) esto da 2^20 ≈ 1M ⇒ aceptable en tests.
|
|
245
|
+
const keys = closureFormulas.map(types_1.formulaKey);
|
|
246
|
+
const atoms = [];
|
|
247
|
+
const n = keys.length;
|
|
248
|
+
// Búsqueda por backtracking con poda.
|
|
249
|
+
const present = new Set();
|
|
250
|
+
// Helper para chequeo de consistencia parcial: dado que el orden de
|
|
251
|
+
// selección es arbitrario, sólo evaluamos consistencia completa al final.
|
|
252
|
+
// (La poda más simple: cláusulas atom/¬atom contradictorias.)
|
|
253
|
+
function backtrack(i) {
|
|
254
|
+
if (atoms.length > 200000)
|
|
255
|
+
return; // safety hard cap
|
|
256
|
+
if (i === n) {
|
|
257
|
+
if (isLocallyConsistent(present, byKey)) {
|
|
258
|
+
const formulas = new Map();
|
|
259
|
+
const pos = [];
|
|
260
|
+
const neg = [];
|
|
261
|
+
for (const k of present) {
|
|
262
|
+
const ff = byKey.get(k);
|
|
263
|
+
if (!ff)
|
|
264
|
+
continue;
|
|
265
|
+
formulas.set(k, ff);
|
|
266
|
+
if (ff.kind === 'atom')
|
|
267
|
+
pos.push(ff.name);
|
|
268
|
+
else if (ff.kind === 'not' && ff.arg.kind === 'atom')
|
|
269
|
+
neg.push(ff.arg.name);
|
|
270
|
+
}
|
|
271
|
+
atoms.push({
|
|
272
|
+
id: atoms.length,
|
|
273
|
+
formulas,
|
|
274
|
+
positiveLiterals: pos.sort(),
|
|
275
|
+
negativeLiterals: neg.sort(),
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
// Decide no incluir keys[i].
|
|
281
|
+
backtrack(i + 1);
|
|
282
|
+
// Decide incluir keys[i].
|
|
283
|
+
const k = keys[i];
|
|
284
|
+
const f = byKey.get(k);
|
|
285
|
+
if (!f)
|
|
286
|
+
return;
|
|
287
|
+
// Poda inmediata: si f es atom p y ¬p ya está, no incluir.
|
|
288
|
+
if (f.kind === 'atom') {
|
|
289
|
+
if (present.has(`n:${k}`))
|
|
290
|
+
return; // poda
|
|
291
|
+
}
|
|
292
|
+
else if (f.kind === 'not' && f.arg.kind === 'atom') {
|
|
293
|
+
if (present.has((0, types_1.formulaKey)(f.arg)))
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
present.add(k);
|
|
297
|
+
backtrack(i + 1);
|
|
298
|
+
present.delete(k);
|
|
299
|
+
}
|
|
300
|
+
backtrack(0);
|
|
301
|
+
return atoms;
|
|
302
|
+
}
|
|
303
|
+
// --- Transition relation ----------------------------------------------------
|
|
304
|
+
// A → B sii: para toda Xφ ∈ A, φ ∈ B. (No exigimos lo recíproco porque B
|
|
305
|
+
// puede contener fórmulas "iniciales" de su estado.)
|
|
306
|
+
//
|
|
307
|
+
// IMPORTANTE: además, las fórmulas obligatorias de la siguiente generación
|
|
308
|
+
// (F, G, U, R) deben mantenerse consistentes. La regla X-φ ∈ A ⇒ φ ∈ B
|
|
309
|
+
// es suficiente porque la clausura ya contiene X(F φ), X(G φ), X(φ U ψ),
|
|
310
|
+
// X(φ R ψ) explícitamente.
|
|
311
|
+
function transitions(atoms) {
|
|
312
|
+
const out = new Map();
|
|
313
|
+
for (const a of atoms) {
|
|
314
|
+
// Recolectamos las obligaciones "next".
|
|
315
|
+
const nextObligations = [];
|
|
316
|
+
for (const f of a.formulas.values()) {
|
|
317
|
+
if (f.kind === 'X') {
|
|
318
|
+
nextObligations.push((0, types_1.formulaKey)(f.arg));
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
const succ = [];
|
|
322
|
+
for (const b of atoms) {
|
|
323
|
+
let ok = true;
|
|
324
|
+
for (const obl of nextObligations) {
|
|
325
|
+
if (!b.formulas.has(obl)) {
|
|
326
|
+
ok = false;
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
if (ok)
|
|
331
|
+
succ.push(b.id);
|
|
332
|
+
}
|
|
333
|
+
out.set(a.id, succ);
|
|
334
|
+
}
|
|
335
|
+
return out;
|
|
336
|
+
}
|
|
337
|
+
function eventualitiesIn(atom) {
|
|
338
|
+
const ev = [];
|
|
339
|
+
for (const [k, f] of atom.formulas) {
|
|
340
|
+
if (f.kind === 'F') {
|
|
341
|
+
ev.push({ key: k, witnessFormulaKey: (0, types_1.formulaKey)(f.arg) });
|
|
342
|
+
}
|
|
343
|
+
else if (f.kind === 'U') {
|
|
344
|
+
ev.push({ key: k, witnessFormulaKey: (0, types_1.formulaKey)(f.right) });
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return ev;
|
|
348
|
+
}
|
|
349
|
+
function describeAtom(a) {
|
|
350
|
+
const pos = a.positiveLiterals.join(',');
|
|
351
|
+
const neg = a.negativeLiterals.map((n) => `¬${n}`).join(',');
|
|
352
|
+
const all = [pos, neg].filter((s) => s.length > 0).join(',');
|
|
353
|
+
return all || '∅';
|
|
354
|
+
}
|
|
355
|
+
function describeFormula(f) {
|
|
356
|
+
return (0, types_1.formulaToString)(f);
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=tableau.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableau.js","sourceRoot":"","sources":["../../../src/profiles/ltl-sat/tableau.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,+DAA+D;AAC/D,4DAA4D;AAC5D,EAAE;AACF,6DAA6D;AAC7D,yCAAyC;AACzC,gEAAgE;AAChE,gEAAgE;AAChE,yDAAyD;AACzD,oCAAoC;AACpC,6DAA6D;AAC7D,gEAAgE;AAChE,6DAA6D;AAC7D,6DAA6D;AAC7D,4CAA4C;AAC5C,EAAE;AACF,6DAA6D;AAC7D,2DAA2D;AAC3D,+DAA+D;;AAM/D,sBAEC;AAgED,0BA6CC;AAgGD,wCAgEC;AAWD,kCAwBC;AAcD,0CAUC;AAED,oCAKC;AAED,0CAEC;AAzVD,mCAAkE;AAElE,gFAAgF;AAEhF,SAAgB,KAAK,CAAC,CAAa;IACjC,OAAO,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,OAAO,CAAC,CAAa,EAAE,OAAgB;IAC9C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,KAAK;YACR,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,KAAK;YACR,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACnE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACrE,KAAK,IAAI;YACP,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACpE,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACpE,KAAK,GAAG;YACN,qDAAqD;YACrD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QACrD,KAAK,GAAG;YACN,cAAc;YACd,OAAO,OAAO;gBACZ,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;gBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QAChD,KAAK,GAAG;YACN,cAAc;YACd,OAAO,OAAO;gBACZ,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;gBAC1C,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;QAChD,KAAK,GAAG;YACN,yBAAyB;YACzB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;oBACL,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;oBAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;iBAC7B,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;aAC/B,CAAC;QACJ,KAAK,GAAG;YACN,yBAAyB;YACzB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO;oBACL,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC3B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;iBAC9B,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;gBAC5B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC;aAC/B,CAAC;IACN,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E,SAAgB,OAAO,CAAC,CAAa;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC3C,SAAS,KAAK,CAAC,CAAa;QAC1B,MAAM,CAAC,GAAG,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO;QACxB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACf,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO;YACT,KAAK,KAAK;gBACR,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,OAAO;YACT,KAAK,KAAK,CAAC;YACX,KAAK,IAAI;gBACP,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtB,OAAO;YACT,KAAK,GAAG;gBACN,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,OAAO;YACT,KAAK,GAAG;gBACN,yDAAyD;gBACzD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7B,OAAO;YACT,KAAK,GAAG;gBACN,kBAAkB;gBAClB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7B,OAAO;YACT,KAAK,GAAG;gBACN,6BAA6B;gBAC7B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACf,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7B,OAAO;YACT,KAAK,GAAG;gBACN,6BAA6B;gBAC7B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACd,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACf,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7B,OAAO;QACX,CAAC;IACH,CAAC;IACD,KAAK,CAAC,CAAC,CAAC,CAAC;IACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC;AAaD,6EAA6E;AAC7E,2EAA2E;AAC3E,uDAAuD;AACvD,SAAS,mBAAmB,CAAC,OAAoB,EAAE,KAA8B;IAC/E,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAE9B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACtC,MAAM;YACR,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,uBAAuB;oBACvB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAAE,OAAO,KAAK,CAAC;gBACnD,CAAC;gBACD,oDAAoD;gBACpD,MAAM;YACR,CAAC;YACD,KAAK,KAAK;gBACR,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC;wBAAE,OAAO,KAAK,CAAC;gBAChD,CAAC;gBACD,MAAM;YACR,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,kCAAkC;gBAClC,IAAI,EAAE,GAAG,KAAK,CAAC;gBACf,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACvB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/B,EAAE,GAAG,IAAI,CAAC;wBACV,MAAM;oBACR,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,EAAE;oBAAE,OAAO,KAAK,CAAC;gBACtB,MAAM;YACR,CAAC;YACD,KAAK,GAAG;gBACN,2DAA2D;gBAC3D,oCAAoC;gBACpC,MAAM;YACR,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,iDAAiD;gBACjD,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjE,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,0BAA0B;gBAC1B,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACjE,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,6BAA6B;gBAC7B,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,6BAA6B;gBAC7B,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC9D,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kEAAkE;AAClE,sEAAsE;AACtE,oDAAoD;AACpD,SAAgB,cAAc,CAAC,eAA6B;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,eAAe;QAAE,KAAK,CAAC,GAAG,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7D,6EAA6E;IAC7E,wEAAwE;IACxE,mEAAmE;IACnE,0EAA0E;IAC1E,EAAE;IACF,qEAAqE;IACrE,mEAAmE;IACnE,wEAAwE;IAExE,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,kBAAU,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,sCAAsC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,oEAAoE;IACpE,0EAA0E;IAC1E,8DAA8D;IAC9D,SAAS,SAAS,CAAC,CAAS;QAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;YAAE,OAAO,CAAC,kBAAkB;QACrD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,IAAI,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;gBAC/C,MAAM,GAAG,GAAa,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAa,EAAE,CAAC;gBACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,CAAC,EAAE;wBAAE,SAAS;oBAClB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpB,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;wBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;yBACrC,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM;wBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9E,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,EAAE,EAAE,KAAK,CAAC,MAAM;oBAChB,QAAQ;oBACR,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE;oBAC5B,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QACD,6BAA6B;QAC7B,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjB,0BAA0B;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,2DAA2D;QAC3D,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,OAAO,CAAC,OAAO;QAC5C,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO;QAC7C,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,CAAC,CAAC,CAAC;IACb,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAE/E,yEAAyE;AACzE,qDAAqD;AACrD,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,yEAAyE;AACzE,2BAA2B;AAC3B,SAAgB,WAAW,CAAC,KAAa;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,wCAAwC;QACxC,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBACnB,eAAe,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,EAAE,GAAG,IAAI,CAAC;YACd,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gBAClC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,EAAE,GAAG,KAAK,CAAC;oBACX,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAcD,SAAgB,eAAe,CAAC,IAAU;IACxC,MAAM,EAAE,GAAkB,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACnB,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAA,kBAAU,EAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC1B,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAA,kBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,YAAY,CAAC,CAAO;IAClC,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC;AAED,SAAgB,eAAe,CAAC,CAAa;IAC3C,OAAO,IAAA,uBAAe,EAAC,CAAC,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export type LTLFormula = {
|
|
2
|
+
kind: 'atom';
|
|
3
|
+
name: string;
|
|
4
|
+
} | {
|
|
5
|
+
kind: 'not';
|
|
6
|
+
arg: LTLFormula;
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'and';
|
|
9
|
+
args: LTLFormula[];
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'or';
|
|
12
|
+
args: LTLFormula[];
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'X';
|
|
15
|
+
arg: LTLFormula;
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'F';
|
|
18
|
+
arg: LTLFormula;
|
|
19
|
+
} | {
|
|
20
|
+
kind: 'G';
|
|
21
|
+
arg: LTLFormula;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'U';
|
|
24
|
+
left: LTLFormula;
|
|
25
|
+
right: LTLFormula;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'R';
|
|
28
|
+
left: LTLFormula;
|
|
29
|
+
right: LTLFormula;
|
|
30
|
+
};
|
|
31
|
+
export declare const atom: (name: string) => LTLFormula;
|
|
32
|
+
export declare const not: (arg: LTLFormula) => LTLFormula;
|
|
33
|
+
export declare const and: (...args: LTLFormula[]) => LTLFormula;
|
|
34
|
+
export declare const or: (...args: LTLFormula[]) => LTLFormula;
|
|
35
|
+
export declare const next: (arg: LTLFormula) => LTLFormula;
|
|
36
|
+
export declare const eventually: (arg: LTLFormula) => LTLFormula;
|
|
37
|
+
export declare const globally: (arg: LTLFormula) => LTLFormula;
|
|
38
|
+
export declare const until: (left: LTLFormula, right: LTLFormula) => LTLFormula;
|
|
39
|
+
export declare const release: (left: LTLFormula, right: LTLFormula) => LTLFormula;
|
|
40
|
+
export declare const weakUntil: (left: LTLFormula, right: LTLFormula) => LTLFormula;
|
|
41
|
+
export declare const implies: (left: LTLFormula, right: LTLFormula) => LTLFormula;
|
|
42
|
+
export interface Witness {
|
|
43
|
+
prefix: string[];
|
|
44
|
+
loop: string[];
|
|
45
|
+
}
|
|
46
|
+
export interface SatResult {
|
|
47
|
+
sat: boolean;
|
|
48
|
+
witness?: Witness;
|
|
49
|
+
}
|
|
50
|
+
export declare function formulaToString(f: LTLFormula): string;
|
|
51
|
+
export declare function formulaKey(f: LTLFormula): string;
|
|
52
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/profiles/ltl-sat/types.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAGvD,eAAO,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,UAAsC,CAAC;AAC3E,eAAO,MAAM,GAAG,GAAI,KAAK,UAAU,KAAG,UAAoC,CAAC;AAC3E,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,UAAU,EAAE,KAAG,UAAqC,CAAC;AAClF,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,UAAU,EAAE,KAAG,UAAoC,CAAC;AAChF,eAAO,MAAM,IAAI,GAAI,KAAK,UAAU,KAAG,UAAkC,CAAC;AAC1E,eAAO,MAAM,UAAU,GAAI,KAAK,UAAU,KAAG,UAAkC,CAAC;AAChF,eAAO,MAAM,QAAQ,GAAI,KAAK,UAAU,KAAG,UAAkC,CAAC;AAC9E,eAAO,MAAM,KAAK,GAAI,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UAI1D,CAAC;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UAI5D,CAAC;AAEH,eAAO,MAAM,SAAS,GAAI,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UACxB,CAAC;AAGzC,eAAO,MAAM,OAAO,GAAI,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UAAkC,CAAC;AAEjG,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAqBrD;AASD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAqBhD"}
|