@stevenvo780/st-lang 3.2.2 → 4.0.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/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 -40
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +410 -1017
- 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/first-order.d.ts.map +1 -1
- package/dist/profiles/classical/first-order.js +7 -1
- package/dist/profiles/classical/first-order.js.map +1 -1
- package/dist/profiles/classical/parallel-sat.js +3 -3
- package/dist/profiles/classical/parallel-sat.js.map +1 -1
- package/dist/profiles/classical/propositional.d.ts.map +1 -1
- package/dist/profiles/classical/propositional.js +40 -4
- package/dist/profiles/classical/propositional.js.map +1 -1
- package/dist/proof-exchange/index.d.ts +26 -0
- package/dist/proof-exchange/index.d.ts.map +1 -0
- package/dist/proof-exchange/index.js +94 -0
- package/dist/proof-exchange/index.js.map +1 -0
- package/dist/runtime/interpreter.d.ts.map +1 -1
- package/dist/runtime/interpreter.js +6 -4
- package/dist/runtime/interpreter.js.map +1 -1
- 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.d.ts +2 -0
- package/dist/tests/agora-integration-fixtures.test.d.ts.map +1 -0
- package/dist/tests/agora-integration-fixtures.test.js +33 -0
- package/dist/tests/agora-integration-fixtures.test.js.map +1 -0
- 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/core.test.js +51 -0
- package/dist/tests/core.test.js.map +1 -1
- 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/result-bindings.test.js +44 -0
- package/dist/tests/result-bindings.test.js.map +1 -1
- 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 +6 -1
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// checkAnswer — evaluación de respuestas del estudiante
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.checkAnswer = checkAnswer;
|
|
7
|
+
const api_1 = require("../api");
|
|
8
|
+
const normalize_1 = require("./normalize");
|
|
9
|
+
function toAnswerObject(raw) {
|
|
10
|
+
if (typeof raw === 'string')
|
|
11
|
+
return { answer: raw };
|
|
12
|
+
return raw;
|
|
13
|
+
}
|
|
14
|
+
function pickHint(ex, attemptScore) {
|
|
15
|
+
if (ex.hints.length === 0)
|
|
16
|
+
return undefined;
|
|
17
|
+
if (attemptScore >= 50)
|
|
18
|
+
return ex.hints[0];
|
|
19
|
+
if (attemptScore >= 25 && ex.hints.length >= 2)
|
|
20
|
+
return ex.hints[1];
|
|
21
|
+
return ex.hints[ex.hints.length - 1];
|
|
22
|
+
}
|
|
23
|
+
function evaluateValidity(ex) {
|
|
24
|
+
if (!ex.formula)
|
|
25
|
+
return null;
|
|
26
|
+
const source = `logic ${ex.profile}\ncheck valid ${ex.formula}`;
|
|
27
|
+
const result = (0, api_1.evaluate)(source, '<educational>');
|
|
28
|
+
const first = result.results[0];
|
|
29
|
+
if (!first)
|
|
30
|
+
return null;
|
|
31
|
+
if (first.status === 'valid')
|
|
32
|
+
return 'valid';
|
|
33
|
+
if (first.status === 'invalid')
|
|
34
|
+
return 'invalid';
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function evaluateSatisfiability(ex) {
|
|
38
|
+
if (!ex.formula)
|
|
39
|
+
return null;
|
|
40
|
+
const source = `logic ${ex.profile}\ncheck satisfiable ${ex.formula}`;
|
|
41
|
+
const result = (0, api_1.evaluate)(source, '<educational>');
|
|
42
|
+
const first = result.results[0];
|
|
43
|
+
if (!first)
|
|
44
|
+
return null;
|
|
45
|
+
if (first.status === 'satisfiable')
|
|
46
|
+
return 'satisfiable';
|
|
47
|
+
if (first.status === 'unsatisfiable')
|
|
48
|
+
return 'unsatisfiable';
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
function substituteAtoms(formula, valuation) {
|
|
52
|
+
let out = formula;
|
|
53
|
+
// Sustituir átomos por true/false. Match identifier word boundaries.
|
|
54
|
+
for (const [atom, val] of Object.entries(valuation)) {
|
|
55
|
+
const re = new RegExp(`\\b${atom}\\b`, 'g');
|
|
56
|
+
out = out.replace(re, val ? 'true' : 'false');
|
|
57
|
+
}
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
function evaluateCountermodel(ex, valuation) {
|
|
61
|
+
if (!ex.formula)
|
|
62
|
+
return false;
|
|
63
|
+
const substituted = substituteAtoms(ex.formula, valuation);
|
|
64
|
+
const source = `logic ${ex.profile}\ncheck satisfiable ${substituted}`;
|
|
65
|
+
const result = (0, api_1.evaluate)(source, '<educational>');
|
|
66
|
+
const first = result.results[0];
|
|
67
|
+
if (!first)
|
|
68
|
+
return false;
|
|
69
|
+
// Si tras sustituir la fórmula queda insatisfacible/inválida, la valuación
|
|
70
|
+
// hace falsa la fórmula original → es un contramodelo.
|
|
71
|
+
return first.status === 'unsatisfiable' || first.status === 'invalid';
|
|
72
|
+
}
|
|
73
|
+
function checkValidityAnswer(ex, raw) {
|
|
74
|
+
const truth = evaluateValidity(ex) ?? ex.solution.kind;
|
|
75
|
+
const expected = truth === 'valid' ? 'valid' : 'invalid';
|
|
76
|
+
const ok = (0, normalize_1.matchesStatus)(raw, expected);
|
|
77
|
+
if (ok) {
|
|
78
|
+
return {
|
|
79
|
+
correct: true,
|
|
80
|
+
score: 100,
|
|
81
|
+
feedback: `Correcto. ${ex.solution.explanation}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
correct: false,
|
|
86
|
+
score: 0,
|
|
87
|
+
feedback: `Incorrecto. La fórmula es ${expected === 'valid' ? 'válida' : 'inválida'} en ${ex.profile}. ${ex.solution.explanation}`,
|
|
88
|
+
nextHint: pickHint(ex, 0),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function checkSatisfiabilityAnswer(ex, raw) {
|
|
92
|
+
const truth = evaluateSatisfiability(ex) ?? ex.solution.kind;
|
|
93
|
+
const expected = truth === 'satisfiable' ? 'satisfiable' : 'unsatisfiable';
|
|
94
|
+
const ok = (0, normalize_1.matchesStatus)(raw, expected);
|
|
95
|
+
if (ok) {
|
|
96
|
+
return {
|
|
97
|
+
correct: true,
|
|
98
|
+
score: 100,
|
|
99
|
+
feedback: `Correcto. ${ex.solution.explanation}`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
correct: false,
|
|
104
|
+
score: 0,
|
|
105
|
+
feedback: `Incorrecto. La fórmula es ${expected === 'satisfiable' ? 'satisfacible' : 'insatisfacible'}. ${ex.solution.explanation}`,
|
|
106
|
+
nextHint: pickHint(ex, 0),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function checkDeriveAnswer(ex, raw) {
|
|
110
|
+
const trimmed = raw.trim().toLowerCase();
|
|
111
|
+
const expectedGoal = ex.goal ?? ex.solution.canonicalFormula ?? '';
|
|
112
|
+
if (expectedGoal && (0, normalize_1.formulasEqualText)(raw, expectedGoal)) {
|
|
113
|
+
return {
|
|
114
|
+
correct: true,
|
|
115
|
+
score: 100,
|
|
116
|
+
feedback: `Correcto. ${ex.solution.explanation}`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
if (trimmed === 'sí' ||
|
|
120
|
+
trimmed === 'si' ||
|
|
121
|
+
trimmed === 'yes' ||
|
|
122
|
+
trimmed === 'provable' ||
|
|
123
|
+
trimmed === 'derivable' ||
|
|
124
|
+
trimmed === 'true') {
|
|
125
|
+
if (ex.solution.kind === 'provable') {
|
|
126
|
+
return {
|
|
127
|
+
correct: true,
|
|
128
|
+
score: 80,
|
|
129
|
+
feedback: `Correcto en intuición, pero se esperaba que escribieras la fórmula derivada: \`${expectedGoal}\`. ${ex.solution.explanation}`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
correct: false,
|
|
135
|
+
score: 0,
|
|
136
|
+
feedback: `Incorrecto. La fórmula derivable a partir de las premisas es \`${expectedGoal}\`. ${ex.solution.explanation}`,
|
|
137
|
+
nextHint: pickHint(ex, 0),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function checkCountermodelAnswer(ex, rawText, parsedValuation) {
|
|
141
|
+
let valuation = parsedValuation;
|
|
142
|
+
if (!valuation) {
|
|
143
|
+
const parsed = (0, normalize_1.parseValuation)(rawText);
|
|
144
|
+
if (parsed)
|
|
145
|
+
valuation = parsed;
|
|
146
|
+
}
|
|
147
|
+
if (!valuation) {
|
|
148
|
+
return {
|
|
149
|
+
correct: false,
|
|
150
|
+
score: 0,
|
|
151
|
+
feedback: 'No pude interpretar tu respuesta como una asignación de valores. Usá formato como "P=V, Q=F" o un objeto JSON {"P": true, "Q": false}.',
|
|
152
|
+
nextHint: pickHint(ex, 0),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const isCountermodel = evaluateCountermodel(ex, valuation);
|
|
156
|
+
if (isCountermodel) {
|
|
157
|
+
return {
|
|
158
|
+
correct: true,
|
|
159
|
+
score: 100,
|
|
160
|
+
feedback: `Correcto. La asignación ${JSON.stringify(valuation)} hace falsa la fórmula. ${ex.solution.explanation}`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
correct: false,
|
|
165
|
+
score: 0,
|
|
166
|
+
feedback: `La asignación ${JSON.stringify(valuation)} no es un contramodelo: la fórmula sigue siendo verdadera bajo esa interpretación. ${ex.solution.explanation}`,
|
|
167
|
+
nextHint: pickHint(ex, 0),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function checkTranslateAnswer(ex, raw) {
|
|
171
|
+
const expected = ex.solution.canonicalFormula ?? '';
|
|
172
|
+
if (!expected) {
|
|
173
|
+
return {
|
|
174
|
+
correct: false,
|
|
175
|
+
score: 0,
|
|
176
|
+
feedback: 'No hay traducción canónica registrada para este ejercicio.',
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if ((0, normalize_1.formulasEqualText)(raw, expected)) {
|
|
180
|
+
return {
|
|
181
|
+
correct: true,
|
|
182
|
+
score: 100,
|
|
183
|
+
feedback: `Correcto. ${ex.solution.explanation}`,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
// Acepta variantes sin paréntesis externos
|
|
187
|
+
const stripped = expected.replace(/^\(/, '').replace(/\)$/, '');
|
|
188
|
+
if ((0, normalize_1.formulasEqualText)(raw, stripped)) {
|
|
189
|
+
return {
|
|
190
|
+
correct: true,
|
|
191
|
+
score: 95,
|
|
192
|
+
feedback: `Correcto (los paréntesis externos son opcionales). ${ex.solution.explanation}`,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
correct: false,
|
|
197
|
+
score: scoreFormulaSimilarity(raw, expected),
|
|
198
|
+
feedback: `La traducción esperada es \`${expected}\`. ${ex.solution.explanation}`,
|
|
199
|
+
nextHint: pickHint(ex, scoreFormulaSimilarity(raw, expected)),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function scoreFormulaSimilarity(a, b) {
|
|
203
|
+
const na = (0, normalize_1.normalizeFormula)(a);
|
|
204
|
+
const nb = (0, normalize_1.normalizeFormula)(b);
|
|
205
|
+
if (na === nb)
|
|
206
|
+
return 100;
|
|
207
|
+
if (na.length === 0 || nb.length === 0)
|
|
208
|
+
return 0;
|
|
209
|
+
let common = 0;
|
|
210
|
+
for (const ch of nb) {
|
|
211
|
+
if (na.includes(ch))
|
|
212
|
+
common++;
|
|
213
|
+
}
|
|
214
|
+
return Math.min(50, Math.round((common / nb.length) * 50));
|
|
215
|
+
}
|
|
216
|
+
const CHECKERS = {
|
|
217
|
+
validity: (ex, raw) => checkValidityAnswer(ex, raw),
|
|
218
|
+
satisfiability: (ex, raw) => checkSatisfiabilityAnswer(ex, raw),
|
|
219
|
+
derive: (ex, raw) => checkDeriveAnswer(ex, raw),
|
|
220
|
+
countermodel: (ex, raw, obj) => checkCountermodelAnswer(ex, raw, obj.valuation),
|
|
221
|
+
translate: (ex, raw) => checkTranslateAnswer(ex, raw),
|
|
222
|
+
};
|
|
223
|
+
function checkAnswer(exercise, studentAnswer) {
|
|
224
|
+
const obj = toAnswerObject(studentAnswer);
|
|
225
|
+
const raw = (obj.answer ?? obj.formula ?? '').toString();
|
|
226
|
+
const checker = CHECKERS[exercise.kind];
|
|
227
|
+
if (!checker) {
|
|
228
|
+
return {
|
|
229
|
+
correct: false,
|
|
230
|
+
score: 0,
|
|
231
|
+
feedback: `Tipo de ejercicio no soportado: ${exercise.kind}`,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
if (!raw && !obj.valuation) {
|
|
235
|
+
return {
|
|
236
|
+
correct: false,
|
|
237
|
+
score: 0,
|
|
238
|
+
feedback: 'No proporcionaste una respuesta.',
|
|
239
|
+
nextHint: exercise.hints[0],
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return checker(exercise, raw, obj);
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/educational/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Exercise, ExerciseKind, ExerciseLevel, GenerateOptions, ProfileName } from './types';
|
|
2
|
+
export declare function generateExercise(level: ExerciseLevel, profile: ProfileName, kind: ExerciseKind, options?: GenerateOptions): Exercise;
|
|
3
|
+
export declare function generateLessonPath(profile: ProfileName, targetLevel: ExerciseLevel, options?: GenerateOptions): Exercise[];
|
|
4
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/educational/generator.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,aAAa,EAEb,eAAe,EACf,WAAW,EAEZ,MAAM,SAAS,CAAC;AAkGjB,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,eAAoB,GAC5B,QAAQ,CA4CV;AASD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,aAAa,EAC1B,OAAO,GAAE,eAAoB,GAC5B,QAAQ,EAAE,CA2BZ"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// generateExercise + generateLessonPath
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.generateExercise = generateExercise;
|
|
7
|
+
exports.generateLessonPath = generateLessonPath;
|
|
8
|
+
const rng_1 = require("./rng");
|
|
9
|
+
const templates_1 = require("./templates");
|
|
10
|
+
function statusToSolutionKind(status) {
|
|
11
|
+
return status;
|
|
12
|
+
}
|
|
13
|
+
function expectedAnswerFor(kind, status, canonicalFormula, countermodelHint) {
|
|
14
|
+
switch (kind) {
|
|
15
|
+
case 'validity':
|
|
16
|
+
return status === 'valid'
|
|
17
|
+
? {
|
|
18
|
+
expected: 'valid',
|
|
19
|
+
acceptable: [
|
|
20
|
+
'valid',
|
|
21
|
+
'sí',
|
|
22
|
+
'si',
|
|
23
|
+
'yes',
|
|
24
|
+
'verdadero',
|
|
25
|
+
'tautología',
|
|
26
|
+
'tautologia',
|
|
27
|
+
'válida',
|
|
28
|
+
'valida',
|
|
29
|
+
],
|
|
30
|
+
}
|
|
31
|
+
: { expected: 'invalid', acceptable: ['invalid', 'no', 'falso', 'inválida', 'invalida'] };
|
|
32
|
+
case 'satisfiability':
|
|
33
|
+
return status === 'satisfiable'
|
|
34
|
+
? { expected: 'satisfiable', acceptable: ['satisfiable', 'sat', 'consistente'] }
|
|
35
|
+
: {
|
|
36
|
+
expected: 'unsatisfiable',
|
|
37
|
+
acceptable: [
|
|
38
|
+
'unsatisfiable',
|
|
39
|
+
'unsat',
|
|
40
|
+
'inconsistente',
|
|
41
|
+
'contradicción',
|
|
42
|
+
'contradiccion',
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
case 'derive':
|
|
46
|
+
return {
|
|
47
|
+
expected: canonicalFormula ?? 'provable',
|
|
48
|
+
acceptable: status === 'provable'
|
|
49
|
+
? ['provable', 'derivable', 'demostrable', 'sí', 'si', canonicalFormula ?? '']
|
|
50
|
+
: ['refutable', 'no derivable', 'no'],
|
|
51
|
+
};
|
|
52
|
+
case 'countermodel':
|
|
53
|
+
if (countermodelHint) {
|
|
54
|
+
const text = Object.entries(countermodelHint)
|
|
55
|
+
.map(([k, v]) => `${k}=${v ? 'V' : 'F'}`)
|
|
56
|
+
.join(', ');
|
|
57
|
+
return { expected: text, acceptable: [text, JSON.stringify(countermodelHint)] };
|
|
58
|
+
}
|
|
59
|
+
return { expected: 'countermodel', acceptable: [] };
|
|
60
|
+
case 'translate':
|
|
61
|
+
return {
|
|
62
|
+
expected: canonicalFormula ?? '',
|
|
63
|
+
acceptable: canonicalFormula ? [canonicalFormula] : [],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function makeSolution(template, buildResult) {
|
|
68
|
+
const { expected, acceptable } = expectedAnswerFor(template.kind, buildResult.expectedStatus, buildResult.canonicalFormula, buildResult.countermodelHint);
|
|
69
|
+
return {
|
|
70
|
+
kind: statusToSolutionKind(buildResult.expectedStatus),
|
|
71
|
+
expectedAnswer: expected,
|
|
72
|
+
acceptableAnswers: acceptable,
|
|
73
|
+
canonicalFormula: buildResult.canonicalFormula,
|
|
74
|
+
explanation: buildResult.explanation,
|
|
75
|
+
countermodelHint: buildResult.countermodelHint,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function makeId(template, rng) {
|
|
79
|
+
const suffix = Math.floor(rng.next() * 1e8)
|
|
80
|
+
.toString(36)
|
|
81
|
+
.padStart(6, '0');
|
|
82
|
+
return `${template.id}-${suffix}`;
|
|
83
|
+
}
|
|
84
|
+
function generateExercise(level, profile, kind, options = {}) {
|
|
85
|
+
const seed = options.seed ?? (0, rng_1.autoSeed)();
|
|
86
|
+
const rng = new rng_1.SeededRng(seed);
|
|
87
|
+
let candidates;
|
|
88
|
+
if (options.templateId) {
|
|
89
|
+
const t = (0, templates_1.findTemplateById)(options.templateId);
|
|
90
|
+
if (!t) {
|
|
91
|
+
throw new Error(`Template "${options.templateId}" no encontrada`);
|
|
92
|
+
}
|
|
93
|
+
if (!t.profiles.includes(profile)) {
|
|
94
|
+
throw new Error(`Template "${options.templateId}" no soporta el perfil "${profile}"`);
|
|
95
|
+
}
|
|
96
|
+
if (t.kind !== kind) {
|
|
97
|
+
throw new Error(`Template "${options.templateId}" es de tipo "${t.kind}", no "${kind}"`);
|
|
98
|
+
}
|
|
99
|
+
if (t.level !== level) {
|
|
100
|
+
throw new Error(`Template "${options.templateId}" es de nivel ${t.level}, no ${level}`);
|
|
101
|
+
}
|
|
102
|
+
candidates = [t];
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
candidates = (0, templates_1.findTemplatesFor)(level, profile, kind);
|
|
106
|
+
}
|
|
107
|
+
if (candidates.length === 0) {
|
|
108
|
+
throw new Error(`No hay plantillas para level=${level}, profile=${profile}, kind=${kind}`);
|
|
109
|
+
}
|
|
110
|
+
const template = rng.pick(candidates);
|
|
111
|
+
const vars = (0, templates_1.pickVars)(rng, Math.max(template.minVars, 2));
|
|
112
|
+
const build = template.build({ vars, rng });
|
|
113
|
+
return {
|
|
114
|
+
id: makeId(template, rng),
|
|
115
|
+
level,
|
|
116
|
+
profile,
|
|
117
|
+
kind,
|
|
118
|
+
prompt: build.prompt,
|
|
119
|
+
formula: build.formula,
|
|
120
|
+
premises: build.premises,
|
|
121
|
+
goal: build.goal,
|
|
122
|
+
hints: build.hints,
|
|
123
|
+
solution: makeSolution(template, build),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const KIND_PROGRESSION_BY_LEVEL = {
|
|
127
|
+
1: ['validity', 'satisfiability', 'translate'],
|
|
128
|
+
2: ['derive', 'countermodel', 'validity'],
|
|
129
|
+
3: ['validity', 'derive'],
|
|
130
|
+
4: ['validity', 'derive'],
|
|
131
|
+
};
|
|
132
|
+
function generateLessonPath(profile, targetLevel, options = {}) {
|
|
133
|
+
const seed = options.seed ?? (0, rng_1.autoSeed)();
|
|
134
|
+
const rng = new rng_1.SeededRng(seed);
|
|
135
|
+
const path = [];
|
|
136
|
+
for (let lvl = 1; lvl <= targetLevel; lvl++) {
|
|
137
|
+
const level = lvl;
|
|
138
|
+
const kinds = KIND_PROGRESSION_BY_LEVEL[level];
|
|
139
|
+
for (const kind of kinds) {
|
|
140
|
+
const candidates = (0, templates_1.findTemplatesFor)(level, profile, kind);
|
|
141
|
+
if (candidates.length === 0)
|
|
142
|
+
continue;
|
|
143
|
+
const subSeed = Math.floor(rng.next() * 0xffffffff) | 0;
|
|
144
|
+
try {
|
|
145
|
+
const ex = generateExercise(level, profile, kind, { seed: subSeed });
|
|
146
|
+
path.push(ex);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// skip kinds que el perfil no soporta
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (path.length === 0) {
|
|
154
|
+
throw new Error(`No se pudo generar un lesson path para profile=${profile}, targetLevel=${targetLevel}`);
|
|
155
|
+
}
|
|
156
|
+
return path;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/educational/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Exercise, ExerciseKind, ExerciseLevel, ExerciseSolution, AnswerResult, GenerateOptions, ProfileName, PublicExercise, SolutionKind, StudentAnswer, StudentAnswerObject, toPublicExercise, } from './types';
|
|
2
|
+
export { generateExercise, generateLessonPath } from './generator';
|
|
3
|
+
export { checkAnswer } from './checker';
|
|
4
|
+
export { listTemplates, findTemplatesFor, findTemplateById } from './templates';
|
|
5
|
+
export { SeededRng } from './rng';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/educational/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Educational — Generador de ejercicios progresivos con
|
|
4
|
+
// evaluación de respuestas usando el motor lógico ST.
|
|
5
|
+
// ============================================================
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SeededRng = exports.findTemplateById = exports.findTemplatesFor = exports.listTemplates = exports.checkAnswer = exports.generateLessonPath = exports.generateExercise = exports.toPublicExercise = void 0;
|
|
8
|
+
var types_1 = require("./types");
|
|
9
|
+
Object.defineProperty(exports, "toPublicExercise", { enumerable: true, get: function () { return types_1.toPublicExercise; } });
|
|
10
|
+
var generator_1 = require("./generator");
|
|
11
|
+
Object.defineProperty(exports, "generateExercise", { enumerable: true, get: function () { return generator_1.generateExercise; } });
|
|
12
|
+
Object.defineProperty(exports, "generateLessonPath", { enumerable: true, get: function () { return generator_1.generateLessonPath; } });
|
|
13
|
+
var checker_1 = require("./checker");
|
|
14
|
+
Object.defineProperty(exports, "checkAnswer", { enumerable: true, get: function () { return checker_1.checkAnswer; } });
|
|
15
|
+
var templates_1 = require("./templates");
|
|
16
|
+
Object.defineProperty(exports, "listTemplates", { enumerable: true, get: function () { return templates_1.listTemplates; } });
|
|
17
|
+
Object.defineProperty(exports, "findTemplatesFor", { enumerable: true, get: function () { return templates_1.findTemplatesFor; } });
|
|
18
|
+
Object.defineProperty(exports, "findTemplateById", { enumerable: true, get: function () { return templates_1.findTemplateById; } });
|
|
19
|
+
var rng_1 = require("./rng");
|
|
20
|
+
Object.defineProperty(exports, "SeededRng", { enumerable: true, get: function () { return rng_1.SeededRng; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/educational/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2DAA2D;AAC3D,sDAAsD;AACtD,+DAA+D;;;AAE/D,iCAaiB;AADf,yGAAA,gBAAgB,OAAA;AAGlB,yCAAmE;AAA1D,6GAAA,gBAAgB,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAC7C,qCAAwC;AAA/B,sGAAA,WAAW,OAAA;AACpB,yCAAgF;AAAvE,0GAAA,aAAa,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAC1D,6BAAkC;AAAzB,gGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function normalizeText(s: string): string;
|
|
2
|
+
export declare function matchesStatus(answer: string, expected: string): boolean;
|
|
3
|
+
export declare function normalizeFormula(s: string): string;
|
|
4
|
+
export declare function formulasEqualText(a: string, b: string): boolean;
|
|
5
|
+
export declare function parseValuation(raw: string): Record<string, boolean> | null;
|
|
6
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/educational/normalize.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAuCD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKvE;AAYD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAalD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAmC1E"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// Normalización de respuestas — comparar strings textuales
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.normalizeText = normalizeText;
|
|
7
|
+
exports.matchesStatus = matchesStatus;
|
|
8
|
+
exports.normalizeFormula = normalizeFormula;
|
|
9
|
+
exports.formulasEqualText = formulasEqualText;
|
|
10
|
+
exports.parseValuation = parseValuation;
|
|
11
|
+
function normalizeText(s) {
|
|
12
|
+
return s.toLowerCase().normalize('NFD').replace(/[̀-ͯ]/g, '').replace(/\s+/g, ' ').trim();
|
|
13
|
+
}
|
|
14
|
+
const STATUS_SYNONYMS = {
|
|
15
|
+
valid: [
|
|
16
|
+
'valid',
|
|
17
|
+
'valida',
|
|
18
|
+
'válida',
|
|
19
|
+
'tautologia',
|
|
20
|
+
'tautología',
|
|
21
|
+
'true',
|
|
22
|
+
'verdadero',
|
|
23
|
+
'si',
|
|
24
|
+
'sí',
|
|
25
|
+
'yes',
|
|
26
|
+
],
|
|
27
|
+
invalid: [
|
|
28
|
+
'invalid',
|
|
29
|
+
'invalida',
|
|
30
|
+
'inválida',
|
|
31
|
+
'no',
|
|
32
|
+
'falso',
|
|
33
|
+
'false',
|
|
34
|
+
'not valid',
|
|
35
|
+
'no valida',
|
|
36
|
+
'no válida',
|
|
37
|
+
],
|
|
38
|
+
satisfiable: ['satisfiable', 'sat', 'consistente', 'satisfacible'],
|
|
39
|
+
unsatisfiable: [
|
|
40
|
+
'unsatisfiable',
|
|
41
|
+
'unsat',
|
|
42
|
+
'inconsistente',
|
|
43
|
+
'contradiccion',
|
|
44
|
+
'contradicción',
|
|
45
|
+
'insatisfacible',
|
|
46
|
+
],
|
|
47
|
+
provable: ['provable', 'derivable', 'demostrable', 'se deriva', 'si', 'sí'],
|
|
48
|
+
refutable: ['refutable', 'no derivable', 'no se deriva'],
|
|
49
|
+
};
|
|
50
|
+
function matchesStatus(answer, expected) {
|
|
51
|
+
const normalized = normalizeText(answer);
|
|
52
|
+
const synonyms = STATUS_SYNONYMS[expected];
|
|
53
|
+
if (!synonyms)
|
|
54
|
+
return normalized === normalizeText(expected);
|
|
55
|
+
return synonyms.some((s) => normalizeText(s) === normalized);
|
|
56
|
+
}
|
|
57
|
+
const SYMBOL_NORMALIZATIONS = [
|
|
58
|
+
[/[→⇒]/g, '->'],
|
|
59
|
+
[/[↔⇔≡]/g, '<->'],
|
|
60
|
+
[/[¬!~]/g, '~'],
|
|
61
|
+
[/[∧]/g, '&'],
|
|
62
|
+
[/[∨]/g, '|'],
|
|
63
|
+
[/[⊤]/g, 'true'],
|
|
64
|
+
[/[⊥]/g, 'false'],
|
|
65
|
+
];
|
|
66
|
+
function normalizeFormula(s) {
|
|
67
|
+
let out = s;
|
|
68
|
+
for (const [re, rep] of SYMBOL_NORMALIZATIONS) {
|
|
69
|
+
out = out.replace(re, rep);
|
|
70
|
+
}
|
|
71
|
+
out = out
|
|
72
|
+
.replace(/\s+/g, '')
|
|
73
|
+
.replace(/\band\b/gi, '&')
|
|
74
|
+
.replace(/\bor\b/gi, '|')
|
|
75
|
+
.replace(/\bnot\b/gi, '~')
|
|
76
|
+
.replace(/\bimplies\b/gi, '->')
|
|
77
|
+
.replace(/\biff\b/gi, '<->');
|
|
78
|
+
return out.toLowerCase();
|
|
79
|
+
}
|
|
80
|
+
function formulasEqualText(a, b) {
|
|
81
|
+
return normalizeFormula(a) === normalizeFormula(b);
|
|
82
|
+
}
|
|
83
|
+
function parseValuation(raw) {
|
|
84
|
+
const trimmed = raw.trim();
|
|
85
|
+
if (trimmed.startsWith('{')) {
|
|
86
|
+
try {
|
|
87
|
+
const parsed = JSON.parse(trimmed);
|
|
88
|
+
const out = {};
|
|
89
|
+
for (const [k, v] of Object.entries(parsed)) {
|
|
90
|
+
if (typeof v === 'boolean') {
|
|
91
|
+
out[k.toUpperCase()] = v;
|
|
92
|
+
}
|
|
93
|
+
else if (typeof v === 'number') {
|
|
94
|
+
out[k.toUpperCase()] = v !== 0;
|
|
95
|
+
}
|
|
96
|
+
else if (typeof v === 'string') {
|
|
97
|
+
out[k.toUpperCase()] = matchesStatus(v, 'valid') || /^(t|true|1)$/i.test(v);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const out = {};
|
|
107
|
+
const parts = trimmed.split(/[;,\n]+/);
|
|
108
|
+
let foundAny = false;
|
|
109
|
+
for (const part of parts) {
|
|
110
|
+
const m = part.match(/([A-Za-z][A-Za-z0-9_]*)\s*[:=]\s*([A-Za-z01]+)/);
|
|
111
|
+
if (!m)
|
|
112
|
+
continue;
|
|
113
|
+
const name = (m[1] ?? '').toUpperCase();
|
|
114
|
+
const valRaw = (m[2] ?? '').toLowerCase();
|
|
115
|
+
const truthy = valRaw === 't' || valRaw === 'true' || valRaw === '1' || valRaw === 'v';
|
|
116
|
+
const falsy = valRaw === 'f' || valRaw === 'false' || valRaw === '0';
|
|
117
|
+
if (!truthy && !falsy)
|
|
118
|
+
continue;
|
|
119
|
+
out[name] = truthy;
|
|
120
|
+
foundAny = true;
|
|
121
|
+
}
|
|
122
|
+
return foundAny ? out : null;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/educational/normalize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class SeededRng {
|
|
2
|
+
private state;
|
|
3
|
+
constructor(seed: number);
|
|
4
|
+
next(): number;
|
|
5
|
+
int(min: number, max: number): number;
|
|
6
|
+
pick<T>(arr: readonly T[]): T;
|
|
7
|
+
shuffle<T>(arr: readonly T[]): T[];
|
|
8
|
+
}
|
|
9
|
+
export declare function autoSeed(): number;
|
|
10
|
+
//# sourceMappingURL=rng.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rng.d.ts","sourceRoot":"","sources":["../../src/educational/rng.ts"],"names":[],"mappings":"AAIA,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,MAAM;IAIxB,IAAI,IAAI,MAAM;IAOd,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC;IAQ7B,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE;CAUnC;AAID,wBAAgB,QAAQ,IAAI,MAAM,CAIjC"}
|