@stevenvo780/st-lang 4.10.0 → 4.12.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/proof-systems/distributed-exchange/index.d.ts +101 -0
- package/dist/proof-systems/distributed-exchange/index.d.ts.map +1 -0
- package/dist/proof-systems/distributed-exchange/index.js +408 -0
- package/dist/proof-systems/distributed-exchange/index.js.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/index.d.ts +7 -0
- package/dist/proof-systems/fol-prover-advanced/index.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/index.js +34 -0
- package/dist/proof-systems/fol-prover-advanced/index.js.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/ordering.d.ts +34 -0
- package/dist/proof-systems/fol-prover-advanced/ordering.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/ordering.js +197 -0
- package/dist/proof-systems/fol-prover-advanced/ordering.js.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/prover.d.ts +22 -0
- package/dist/proof-systems/fol-prover-advanced/prover.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/prover.js +219 -0
- package/dist/proof-systems/fol-prover-advanced/prover.js.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/resolve.d.ts +43 -0
- package/dist/proof-systems/fol-prover-advanced/resolve.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/resolve.js +297 -0
- package/dist/proof-systems/fol-prover-advanced/resolve.js.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/subsumption.d.ts +28 -0
- package/dist/proof-systems/fol-prover-advanced/subsumption.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/subsumption.js +172 -0
- package/dist/proof-systems/fol-prover-advanced/subsumption.js.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/types.d.ts +68 -0
- package/dist/proof-systems/fol-prover-advanced/types.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/types.js +12 -0
- package/dist/proof-systems/fol-prover-advanced/types.js.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/unify.d.ts +15 -0
- package/dist/proof-systems/fol-prover-advanced/unify.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-advanced/unify.js +144 -0
- package/dist/proof-systems/fol-prover-advanced/unify.js.map +1 -0
- package/dist/reasoning/combinatorics/basic-counts.d.ts +6 -0
- package/dist/reasoning/combinatorics/basic-counts.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/basic-counts.js +82 -0
- package/dist/reasoning/combinatorics/basic-counts.js.map +1 -0
- package/dist/reasoning/combinatorics/bigint-helpers.d.ts +5 -0
- package/dist/reasoning/combinatorics/bigint-helpers.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/bigint-helpers.js +8 -0
- package/dist/reasoning/combinatorics/bigint-helpers.js.map +1 -0
- package/dist/reasoning/combinatorics/burnside.d.ts +15 -0
- package/dist/reasoning/combinatorics/burnside.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/burnside.js +91 -0
- package/dist/reasoning/combinatorics/burnside.js.map +1 -0
- package/dist/reasoning/combinatorics/generating-functions.d.ts +12 -0
- package/dist/reasoning/combinatorics/generating-functions.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/generating-functions.js +67 -0
- package/dist/reasoning/combinatorics/generating-functions.js.map +1 -0
- package/dist/reasoning/combinatorics/generators.d.ts +5 -0
- package/dist/reasoning/combinatorics/generators.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/generators.js +111 -0
- package/dist/reasoning/combinatorics/generators.js.map +1 -0
- package/dist/reasoning/combinatorics/inclusion-exclusion.d.ts +8 -0
- package/dist/reasoning/combinatorics/inclusion-exclusion.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/inclusion-exclusion.js +45 -0
- package/dist/reasoning/combinatorics/inclusion-exclusion.js.map +1 -0
- package/dist/reasoning/combinatorics/index.d.ts +10 -0
- package/dist/reasoning/combinatorics/index.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/index.js +44 -0
- package/dist/reasoning/combinatorics/index.js.map +1 -0
- package/dist/reasoning/combinatorics/partitions.d.ts +4 -0
- package/dist/reasoning/combinatorics/partitions.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/partitions.js +90 -0
- package/dist/reasoning/combinatorics/partitions.js.map +1 -0
- package/dist/reasoning/combinatorics/permutations.d.ts +6 -0
- package/dist/reasoning/combinatorics/permutations.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/permutations.js +124 -0
- package/dist/reasoning/combinatorics/permutations.js.map +1 -0
- package/dist/reasoning/combinatorics/set-partitions.d.ts +3 -0
- package/dist/reasoning/combinatorics/set-partitions.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/set-partitions.js +46 -0
- package/dist/reasoning/combinatorics/set-partitions.js.map +1 -0
- package/dist/reasoning/combinatorics/special-numbers.d.ts +7 -0
- package/dist/reasoning/combinatorics/special-numbers.d.ts.map +1 -0
- package/dist/reasoning/combinatorics/special-numbers.js +128 -0
- package/dist/reasoning/combinatorics/special-numbers.js.map +1 -0
- package/dist/reasoning/constructive-analysis/cauchy.d.ts +51 -0
- package/dist/reasoning/constructive-analysis/cauchy.d.ts.map +1 -0
- package/dist/reasoning/constructive-analysis/cauchy.js +77 -0
- package/dist/reasoning/constructive-analysis/cauchy.js.map +1 -0
- package/dist/reasoning/constructive-analysis/compact.d.ts +35 -0
- package/dist/reasoning/constructive-analysis/compact.d.ts.map +1 -0
- package/dist/reasoning/constructive-analysis/compact.js +61 -0
- package/dist/reasoning/constructive-analysis/compact.js.map +1 -0
- package/dist/reasoning/constructive-analysis/continuity.d.ts +62 -0
- package/dist/reasoning/constructive-analysis/continuity.d.ts.map +1 -0
- package/dist/reasoning/constructive-analysis/continuity.js +112 -0
- package/dist/reasoning/constructive-analysis/continuity.js.map +1 -0
- package/dist/reasoning/constructive-analysis/index.d.ts +24 -0
- package/dist/reasoning/constructive-analysis/index.d.ts.map +1 -0
- package/dist/reasoning/constructive-analysis/index.js +36 -0
- package/dist/reasoning/constructive-analysis/index.js.map +1 -0
- package/dist/reasoning/constructive-analysis/integral.d.ts +31 -0
- package/dist/reasoning/constructive-analysis/integral.d.ts.map +1 -0
- package/dist/reasoning/constructive-analysis/integral.js +59 -0
- package/dist/reasoning/constructive-analysis/integral.js.map +1 -0
- package/dist/reasoning/constructive-analysis/ivt.d.ts +41 -0
- package/dist/reasoning/constructive-analysis/ivt.d.ts.map +1 -0
- package/dist/reasoning/constructive-analysis/ivt.js +115 -0
- package/dist/reasoning/constructive-analysis/ivt.js.map +1 -0
- package/dist/reasoning/constructive-reals/index.d.ts +23 -0
- package/dist/reasoning/constructive-reals/index.d.ts.map +1 -1
- package/dist/reasoning/constructive-reals/index.js +52 -1
- package/dist/reasoning/constructive-reals/index.js.map +1 -1
- package/dist/reasoning/graph-theory/index.d.ts +63 -0
- package/dist/reasoning/graph-theory/index.d.ts.map +1 -0
- package/dist/reasoning/graph-theory/index.js +1043 -0
- package/dist/reasoning/graph-theory/index.js.map +1 -0
- package/dist/reasoning/group-presentation/cayley.d.ts +8 -0
- package/dist/reasoning/group-presentation/cayley.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/cayley.js +38 -0
- package/dist/reasoning/group-presentation/cayley.js.map +1 -0
- package/dist/reasoning/group-presentation/index.d.ts +8 -0
- package/dist/reasoning/group-presentation/index.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/index.js +36 -0
- package/dist/reasoning/group-presentation/index.js.map +1 -0
- package/dist/reasoning/group-presentation/standard-groups.d.ts +6 -0
- package/dist/reasoning/group-presentation/standard-groups.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/standard-groups.js +93 -0
- package/dist/reasoning/group-presentation/standard-groups.js.map +1 -0
- package/dist/reasoning/group-presentation/todd-coxeter.d.ts +10 -0
- package/dist/reasoning/group-presentation/todd-coxeter.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/todd-coxeter.js +362 -0
- package/dist/reasoning/group-presentation/todd-coxeter.js.map +1 -0
- package/dist/reasoning/group-presentation/types.d.ts +7 -0
- package/dist/reasoning/group-presentation/types.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/types.js +22 -0
- package/dist/reasoning/group-presentation/types.js.map +1 -0
- package/dist/reasoning/group-presentation/words.d.ts +10 -0
- package/dist/reasoning/group-presentation/words.d.ts.map +1 -0
- package/dist/reasoning/group-presentation/words.js +109 -0
- package/dist/reasoning/group-presentation/words.js.map +1 -0
- package/dist/reasoning/linear-algebra/index.d.ts +69 -0
- package/dist/reasoning/linear-algebra/index.d.ts.map +1 -0
- package/dist/reasoning/linear-algebra/index.js +859 -0
- package/dist/reasoning/linear-algebra/index.js.map +1 -0
- package/dist/reasoning/set-theory/hf-functions.d.ts +35 -0
- package/dist/reasoning/set-theory/hf-functions.d.ts.map +1 -0
- package/dist/reasoning/set-theory/hf-functions.js +147 -0
- package/dist/reasoning/set-theory/hf-functions.js.map +1 -0
- package/dist/reasoning/set-theory/hf-sets.d.ts +79 -0
- package/dist/reasoning/set-theory/hf-sets.d.ts.map +1 -0
- package/dist/reasoning/set-theory/hf-sets.js +338 -0
- package/dist/reasoning/set-theory/hf-sets.js.map +1 -0
- package/dist/reasoning/set-theory/index.d.ts +7 -0
- package/dist/reasoning/set-theory/index.d.ts.map +1 -0
- package/dist/reasoning/set-theory/index.js +44 -0
- package/dist/reasoning/set-theory/index.js.map +1 -0
- package/dist/reasoning/set-theory/zfc-axioms.d.ts +59 -0
- package/dist/reasoning/set-theory/zfc-axioms.d.ts.map +1 -0
- package/dist/reasoning/set-theory/zfc-axioms.js +245 -0
- package/dist/reasoning/set-theory/zfc-axioms.js.map +1 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts +2 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js +328 -0
- package/dist/tests/proof-systems/distributed-exchange/distributed-exchange.test.js.map +1 -0
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.d.ts +2 -0
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js +253 -0
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js.map +1 -0
- package/dist/tests/reasoning/combinatorics/combinatorics.test.d.ts +2 -0
- package/dist/tests/reasoning/combinatorics/combinatorics.test.d.ts.map +1 -0
- package/dist/tests/reasoning/combinatorics/combinatorics.test.js +256 -0
- package/dist/tests/reasoning/combinatorics/combinatorics.test.js.map +1 -0
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.d.ts +2 -0
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.d.ts.map +1 -0
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js +174 -0
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js.map +1 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts +2 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.d.ts.map +1 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.js +363 -0
- package/dist/tests/reasoning/graph-theory/graph-theory.test.js.map +1 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts +2 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.d.ts.map +1 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.js +229 -0
- package/dist/tests/reasoning/group-presentation/group-presentation.test.js.map +1 -0
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.d.ts +2 -0
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.d.ts.map +1 -0
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js +369 -0
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js.map +1 -0
- package/dist/tests/reasoning/set-theory/hf-functions.test.d.ts +2 -0
- package/dist/tests/reasoning/set-theory/hf-functions.test.d.ts.map +1 -0
- package/dist/tests/reasoning/set-theory/hf-functions.test.js +122 -0
- package/dist/tests/reasoning/set-theory/hf-functions.test.js.map +1 -0
- package/dist/tests/reasoning/set-theory/hf-sets.test.d.ts +2 -0
- package/dist/tests/reasoning/set-theory/hf-sets.test.d.ts.map +1 -0
- package/dist/tests/reasoning/set-theory/hf-sets.test.js +177 -0
- package/dist/tests/reasoning/set-theory/hf-sets.test.js.map +1 -0
- package/dist/tests/reasoning/set-theory/zfc-axioms.test.d.ts +2 -0
- package/dist/tests/reasoning/set-theory/zfc-axioms.test.d.ts.map +1 -0
- package/dist/tests/reasoning/set-theory/zfc-axioms.test.js +56 -0
- package/dist/tests/reasoning/set-theory/zfc-axioms.test.js.map +1 -0
- package/dist/tests/tooling/doc-gen/doc-gen.test.d.ts +2 -0
- package/dist/tests/tooling/doc-gen/doc-gen.test.d.ts.map +1 -0
- package/dist/tests/tooling/doc-gen/doc-gen.test.js +350 -0
- package/dist/tests/tooling/doc-gen/doc-gen.test.js.map +1 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts +2 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.d.ts.map +1 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js +411 -0
- package/dist/tests/tooling/exporters/coq-v2/coq-v2-exporter.test.js.map +1 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts +2 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.d.ts.map +1 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.js +197 -0
- package/dist/tests/tooling/lemma-library/lemma-library.test.js.map +1 -0
- package/dist/tests/tooling/provenance/ledger.test.d.ts +2 -0
- package/dist/tests/tooling/provenance/ledger.test.d.ts.map +1 -0
- package/dist/tests/tooling/provenance/ledger.test.js +545 -0
- package/dist/tests/tooling/provenance/ledger.test.js.map +1 -0
- package/dist/tests/tooling/test-harness/test-harness.test.d.ts +2 -0
- package/dist/tests/tooling/test-harness/test-harness.test.d.ts.map +1 -0
- package/dist/tests/tooling/test-harness/test-harness.test.js +208 -0
- package/dist/tests/tooling/test-harness/test-harness.test.js.map +1 -0
- package/dist/tooling/doc-gen/extract.d.ts +13 -0
- package/dist/tooling/doc-gen/extract.d.ts.map +1 -0
- package/dist/tooling/doc-gen/extract.js +379 -0
- package/dist/tooling/doc-gen/extract.js.map +1 -0
- package/dist/tooling/doc-gen/generate.d.ts +9 -0
- package/dist/tooling/doc-gen/generate.d.ts.map +1 -0
- package/dist/tooling/doc-gen/generate.js +116 -0
- package/dist/tooling/doc-gen/generate.js.map +1 -0
- package/dist/tooling/doc-gen/index.d.ts +7 -0
- package/dist/tooling/doc-gen/index.d.ts.map +1 -0
- package/dist/tooling/doc-gen/index.js +39 -0
- package/dist/tooling/doc-gen/index.js.map +1 -0
- package/dist/tooling/doc-gen/jsdoc.d.ts +31 -0
- package/dist/tooling/doc-gen/jsdoc.d.ts.map +1 -0
- package/dist/tooling/doc-gen/jsdoc.js +140 -0
- package/dist/tooling/doc-gen/jsdoc.js.map +1 -0
- package/dist/tooling/doc-gen/render.d.ts +29 -0
- package/dist/tooling/doc-gen/render.d.ts.map +1 -0
- package/dist/tooling/doc-gen/render.js +206 -0
- package/dist/tooling/doc-gen/render.js.map +1 -0
- package/dist/tooling/doc-gen/types.d.ts +51 -0
- package/dist/tooling/doc-gen/types.d.ts.map +1 -0
- package/dist/tooling/doc-gen/types.js +10 -0
- package/dist/tooling/doc-gen/types.js.map +1 -0
- package/dist/tooling/exporters/coq-v2/index.d.ts +68 -0
- package/dist/tooling/exporters/coq-v2/index.d.ts.map +1 -0
- package/dist/tooling/exporters/coq-v2/index.js +692 -0
- package/dist/tooling/exporters/coq-v2/index.js.map +1 -0
- package/dist/tooling/lemma-library/apply.d.ts +9 -0
- package/dist/tooling/lemma-library/apply.d.ts.map +1 -0
- package/dist/tooling/lemma-library/apply.js +94 -0
- package/dist/tooling/lemma-library/apply.js.map +1 -0
- package/dist/tooling/lemma-library/arithmetic.d.ts +3 -0
- package/dist/tooling/lemma-library/arithmetic.d.ts.map +1 -0
- package/dist/tooling/lemma-library/arithmetic.js +176 -0
- package/dist/tooling/lemma-library/arithmetic.js.map +1 -0
- package/dist/tooling/lemma-library/firstorder.d.ts +3 -0
- package/dist/tooling/lemma-library/firstorder.d.ts.map +1 -0
- package/dist/tooling/lemma-library/firstorder.js +136 -0
- package/dist/tooling/lemma-library/firstorder.js.map +1 -0
- package/dist/tooling/lemma-library/index.d.ts +13 -0
- package/dist/tooling/lemma-library/index.d.ts.map +1 -0
- package/dist/tooling/lemma-library/index.js +32 -0
- package/dist/tooling/lemma-library/index.js.map +1 -0
- package/dist/tooling/lemma-library/library.d.ts +34 -0
- package/dist/tooling/lemma-library/library.d.ts.map +1 -0
- package/dist/tooling/lemma-library/library.js +126 -0
- package/dist/tooling/lemma-library/library.js.map +1 -0
- package/dist/tooling/lemma-library/modal.d.ts +3 -0
- package/dist/tooling/lemma-library/modal.d.ts.map +1 -0
- package/dist/tooling/lemma-library/modal.js +138 -0
- package/dist/tooling/lemma-library/modal.js.map +1 -0
- package/dist/tooling/lemma-library/propositional.d.ts +3 -0
- package/dist/tooling/lemma-library/propositional.d.ts.map +1 -0
- package/dist/tooling/lemma-library/propositional.js +265 -0
- package/dist/tooling/lemma-library/propositional.js.map +1 -0
- package/dist/tooling/lemma-library/set-theory.d.ts +3 -0
- package/dist/tooling/lemma-library/set-theory.d.ts.map +1 -0
- package/dist/tooling/lemma-library/set-theory.js +134 -0
- package/dist/tooling/lemma-library/set-theory.js.map +1 -0
- package/dist/tooling/lemma-library/standard.d.ts +3 -0
- package/dist/tooling/lemma-library/standard.d.ts.map +1 -0
- package/dist/tooling/lemma-library/standard.js +27 -0
- package/dist/tooling/lemma-library/standard.js.map +1 -0
- package/dist/tooling/lemma-library/tfidf.d.ts +5 -0
- package/dist/tooling/lemma-library/tfidf.d.ts.map +1 -0
- package/dist/tooling/lemma-library/tfidf.js +100 -0
- package/dist/tooling/lemma-library/tfidf.js.map +1 -0
- package/dist/tooling/lemma-library/tokenize.d.ts +2 -0
- package/dist/tooling/lemma-library/tokenize.d.ts.map +1 -0
- package/dist/tooling/lemma-library/tokenize.js +74 -0
- package/dist/tooling/lemma-library/tokenize.js.map +1 -0
- package/dist/tooling/lemma-library/types.d.ts +53 -0
- package/dist/tooling/lemma-library/types.d.ts.map +1 -0
- package/dist/tooling/lemma-library/types.js +10 -0
- package/dist/tooling/lemma-library/types.js.map +1 -0
- package/dist/tooling/provenance/index.d.ts +3 -0
- package/dist/tooling/provenance/index.d.ts.map +1 -0
- package/dist/tooling/provenance/index.js +16 -0
- package/dist/tooling/provenance/index.js.map +1 -0
- package/dist/tooling/provenance/ledger.d.ts +89 -0
- package/dist/tooling/provenance/ledger.d.ts.map +1 -0
- package/dist/tooling/provenance/ledger.js +439 -0
- package/dist/tooling/provenance/ledger.js.map +1 -0
- package/dist/tooling/provenance/types.d.ts +70 -0
- package/dist/tooling/provenance/types.d.ts.map +1 -0
- package/dist/tooling/provenance/types.js +14 -0
- package/dist/tooling/provenance/types.js.map +1 -0
- package/dist/tooling/test-harness/combinators.d.ts +14 -0
- package/dist/tooling/test-harness/combinators.d.ts.map +1 -0
- package/dist/tooling/test-harness/combinators.js +122 -0
- package/dist/tooling/test-harness/combinators.js.map +1 -0
- package/dist/tooling/test-harness/coverage.d.ts +3 -0
- package/dist/tooling/test-harness/coverage.d.ts.map +1 -0
- package/dist/tooling/test-harness/coverage.js +32 -0
- package/dist/tooling/test-harness/coverage.js.map +1 -0
- package/dist/tooling/test-harness/generators.d.ts +6 -0
- package/dist/tooling/test-harness/generators.d.ts.map +1 -0
- package/dist/tooling/test-harness/generators.js +66 -0
- package/dist/tooling/test-harness/generators.js.map +1 -0
- package/dist/tooling/test-harness/index.d.ts +7 -0
- package/dist/tooling/test-harness/index.d.ts.map +1 -0
- package/dist/tooling/test-harness/index.js +27 -0
- package/dist/tooling/test-harness/index.js.map +1 -0
- package/dist/tooling/test-harness/mutation.d.ts +4 -0
- package/dist/tooling/test-harness/mutation.d.ts.map +1 -0
- package/dist/tooling/test-harness/mutation.js +28 -0
- package/dist/tooling/test-harness/mutation.js.map +1 -0
- package/dist/tooling/test-harness/snapshot.d.ts +5 -0
- package/dist/tooling/test-harness/snapshot.d.ts.map +1 -0
- package/dist/tooling/test-harness/snapshot.js +86 -0
- package/dist/tooling/test-harness/snapshot.js.map +1 -0
- package/dist/tooling/test-harness/types.d.ts +32 -0
- package/dist/tooling/test-harness/types.d.ts.map +1 -0
- package/dist/tooling/test-harness/types.js +3 -0
- package/dist/tooling/test-harness/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resetRenameCounter = resetRenameCounter;
|
|
4
|
+
exports.renameClause = renameClause;
|
|
5
|
+
exports.binaryResolve = binaryResolve;
|
|
6
|
+
exports.hyperresolve = hyperresolve;
|
|
7
|
+
exports.hyperresolveMany = hyperresolveMany;
|
|
8
|
+
exports.factor = factor;
|
|
9
|
+
exports.dedupLiterals = dedupLiterals;
|
|
10
|
+
exports.isTautology = isTautology;
|
|
11
|
+
const unify_1 = require("./unify");
|
|
12
|
+
let renameCounter = 0;
|
|
13
|
+
function resetRenameCounter() {
|
|
14
|
+
renameCounter = 0;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Renombra todas las variables de una cláusula con sufijos frescos, para
|
|
18
|
+
* evitar captura accidental al resolver con otra cláusula.
|
|
19
|
+
*/
|
|
20
|
+
function renameClause(c) {
|
|
21
|
+
renameCounter += 1;
|
|
22
|
+
const suffix = `_r${renameCounter}`;
|
|
23
|
+
const cache = new Map();
|
|
24
|
+
return {
|
|
25
|
+
literals: c.literals.map((l) => ({
|
|
26
|
+
negated: l.negated,
|
|
27
|
+
predicate: l.predicate,
|
|
28
|
+
args: l.args.map((a) => renameTerm(a, suffix, cache))
|
|
29
|
+
})),
|
|
30
|
+
parents: c.parents,
|
|
31
|
+
fromGoal: c.fromGoal
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function renameTerm(t, suffix, cache) {
|
|
35
|
+
if (t.kind === 'variable') {
|
|
36
|
+
const existing = cache.get(t.name);
|
|
37
|
+
if (existing)
|
|
38
|
+
return existing;
|
|
39
|
+
const fresh = { kind: 'variable', name: `${t.name}${suffix}` };
|
|
40
|
+
cache.set(t.name, fresh);
|
|
41
|
+
return fresh;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
kind: 'function',
|
|
45
|
+
name: t.name,
|
|
46
|
+
args: t.args.map((a) => renameTerm(a, suffix, cache))
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Resolución binaria: une dos cláusulas eliminando un par de literales
|
|
51
|
+
* complementarias unificables. Devuelve cero o más resolventes (uno por par
|
|
52
|
+
* de literales complementarias que unifiquen).
|
|
53
|
+
*/
|
|
54
|
+
function binaryResolve(a, b) {
|
|
55
|
+
const out = [];
|
|
56
|
+
const aR = renameClause(a);
|
|
57
|
+
const bR = renameClause(b);
|
|
58
|
+
for (let i = 0; i < aR.literals.length; i++) {
|
|
59
|
+
for (let j = 0; j < bR.literals.length; j++) {
|
|
60
|
+
const la = aR.literals[i];
|
|
61
|
+
const lb = bR.literals[j];
|
|
62
|
+
if (!la || !lb)
|
|
63
|
+
continue;
|
|
64
|
+
if (la.negated === lb.negated)
|
|
65
|
+
continue;
|
|
66
|
+
const sub = (0, unify_1.unifyLiterals)({ ...la, negated: false }, { ...lb, negated: false });
|
|
67
|
+
if (!sub)
|
|
68
|
+
continue;
|
|
69
|
+
const remaining = [];
|
|
70
|
+
for (let k = 0; k < aR.literals.length; k++) {
|
|
71
|
+
if (k === i)
|
|
72
|
+
continue;
|
|
73
|
+
const lit = aR.literals[k];
|
|
74
|
+
if (lit)
|
|
75
|
+
remaining.push((0, unify_1.applySubToLiteral)(lit, sub));
|
|
76
|
+
}
|
|
77
|
+
for (let k = 0; k < bR.literals.length; k++) {
|
|
78
|
+
if (k === j)
|
|
79
|
+
continue;
|
|
80
|
+
const lit = bR.literals[k];
|
|
81
|
+
if (lit)
|
|
82
|
+
remaining.push((0, unify_1.applySubToLiteral)(lit, sub));
|
|
83
|
+
}
|
|
84
|
+
out.push({ clause: dedupLiterals({ literals: remaining }), sub });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Hyperresolución: en un solo paso, elimina **todas** las literales negativas
|
|
91
|
+
* de un "núcleo" (nucleus) usando cláusulas auxiliares positivas (electrons)
|
|
92
|
+
* que sean unitarias o tengan sólo literales positivas. El resultado es una
|
|
93
|
+
* cláusula con sólo literales positivas (positive hyperresolvent).
|
|
94
|
+
*
|
|
95
|
+
* `positive` aquí es una lista; en la práctica el caller pasa cláusulas
|
|
96
|
+
* positivas candidatas y la función produce todos los hyperresolventes
|
|
97
|
+
* posibles del núcleo contra ese conjunto. Para mantener la API del spec,
|
|
98
|
+
* exportamos `hyperresolve(positive, nucleus)` con la primera cláusula como
|
|
99
|
+
* electron (cubre el caso "3 units + nucleus" si se llama en cadena).
|
|
100
|
+
*/
|
|
101
|
+
function hyperresolve(positive, nucleus) {
|
|
102
|
+
return hyperresolveMany([positive], nucleus).map((r) => r.clause);
|
|
103
|
+
}
|
|
104
|
+
function hyperresolveMany(positives, nucleus) {
|
|
105
|
+
// Núcleo debe tener al menos una literal negativa para ser candidato.
|
|
106
|
+
const negativeIdxs = nucleus.literals
|
|
107
|
+
.map((l, i) => ({ l, i }))
|
|
108
|
+
.filter(({ l }) => l && l.negated)
|
|
109
|
+
.map(({ i }) => i);
|
|
110
|
+
if (negativeIdxs.length === 0)
|
|
111
|
+
return [];
|
|
112
|
+
// Electrons válidos: cláusulas con sólo literales positivas (≥1 literal).
|
|
113
|
+
const electrons = positives.filter((c) => c.literals.length > 0 && c.literals.every((l) => !l.negated));
|
|
114
|
+
if (electrons.length === 0)
|
|
115
|
+
return [];
|
|
116
|
+
const nucleusR = renameClause(nucleus);
|
|
117
|
+
// Re-mapear índices originales tras el renombre (mismo orden).
|
|
118
|
+
const negIdxsRenamed = nucleusR.literals
|
|
119
|
+
.map((l, i) => ({ l, i }))
|
|
120
|
+
.filter(({ l }) => l && l.negated)
|
|
121
|
+
.map(({ i }) => i);
|
|
122
|
+
const start = {
|
|
123
|
+
nucleus: nucleusR,
|
|
124
|
+
remaining: negIdxsRenamed,
|
|
125
|
+
sub: new Map(),
|
|
126
|
+
used: []
|
|
127
|
+
};
|
|
128
|
+
const results = [];
|
|
129
|
+
const stack = [start];
|
|
130
|
+
while (stack.length > 0) {
|
|
131
|
+
const state = stack.pop();
|
|
132
|
+
if (!state)
|
|
133
|
+
break;
|
|
134
|
+
if (state.remaining.length === 0) {
|
|
135
|
+
// Todas las literales negativas eliminadas → emitir el residual.
|
|
136
|
+
const survivors = [];
|
|
137
|
+
const removedSet = new Set(negIdxsRenamed);
|
|
138
|
+
for (let i = 0; i < state.nucleus.literals.length; i++) {
|
|
139
|
+
if (removedSet.has(i))
|
|
140
|
+
continue;
|
|
141
|
+
const lit = state.nucleus.literals[i];
|
|
142
|
+
if (lit)
|
|
143
|
+
survivors.push((0, unify_1.applySubToLiteral)(lit, state.sub));
|
|
144
|
+
}
|
|
145
|
+
results.push({
|
|
146
|
+
clause: dedupLiterals({ literals: survivors }),
|
|
147
|
+
sub: state.sub,
|
|
148
|
+
usedElectrons: state.used
|
|
149
|
+
});
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const targetIdx = state.remaining[0];
|
|
153
|
+
if (targetIdx === undefined)
|
|
154
|
+
continue;
|
|
155
|
+
const target = state.nucleus.literals[targetIdx];
|
|
156
|
+
if (!target)
|
|
157
|
+
continue;
|
|
158
|
+
const targetApplied = (0, unify_1.applySubToLiteral)(target, state.sub);
|
|
159
|
+
for (let ei = 0; ei < electrons.length; ei++) {
|
|
160
|
+
const electron = electrons[ei];
|
|
161
|
+
if (!electron)
|
|
162
|
+
continue;
|
|
163
|
+
const eR = renameClause(electron);
|
|
164
|
+
for (let li = 0; li < eR.literals.length; li++) {
|
|
165
|
+
const candidate = eR.literals[li];
|
|
166
|
+
if (!candidate)
|
|
167
|
+
continue;
|
|
168
|
+
const partial = (0, unify_1.unifyLiterals)({ ...targetApplied, negated: false }, { ...candidate, negated: false });
|
|
169
|
+
if (!partial)
|
|
170
|
+
continue;
|
|
171
|
+
// Componer sustituciones
|
|
172
|
+
const combined = new Map();
|
|
173
|
+
for (const [k, v] of state.sub)
|
|
174
|
+
combined.set(k, (0, unify_1.applySubToTerm)(v, partial));
|
|
175
|
+
for (const [k, v] of partial) {
|
|
176
|
+
if (!combined.has(k))
|
|
177
|
+
combined.set(k, v);
|
|
178
|
+
}
|
|
179
|
+
// Si el electron tiene más literales (no unitario), se añaden al residual.
|
|
180
|
+
const extra = [];
|
|
181
|
+
for (let k = 0; k < eR.literals.length; k++) {
|
|
182
|
+
if (k === li)
|
|
183
|
+
continue;
|
|
184
|
+
const ex = eR.literals[k];
|
|
185
|
+
if (ex)
|
|
186
|
+
extra.push(ex);
|
|
187
|
+
}
|
|
188
|
+
// Extender la cláusula del núcleo con las extras (vía agregar al final
|
|
189
|
+
// como literales aplicadas, manteniendo índices remaining intactos).
|
|
190
|
+
const extendedNucleus = {
|
|
191
|
+
literals: [...state.nucleus.literals, ...extra],
|
|
192
|
+
parents: state.nucleus.parents,
|
|
193
|
+
fromGoal: state.nucleus.fromGoal
|
|
194
|
+
};
|
|
195
|
+
stack.push({
|
|
196
|
+
nucleus: extendedNucleus,
|
|
197
|
+
remaining: state.remaining.slice(1),
|
|
198
|
+
sub: combined,
|
|
199
|
+
used: [...state.used, ei]
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return results;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Factoring: si dos literales del mismo signo unifican, colapsarlas reduce la
|
|
208
|
+
* cláusula. Indispensable para completar la resolución.
|
|
209
|
+
*/
|
|
210
|
+
function factor(c) {
|
|
211
|
+
const out = [];
|
|
212
|
+
for (let i = 0; i < c.literals.length; i++) {
|
|
213
|
+
for (let j = i + 1; j < c.literals.length; j++) {
|
|
214
|
+
const li = c.literals[i];
|
|
215
|
+
const lj = c.literals[j];
|
|
216
|
+
if (!li || !lj)
|
|
217
|
+
continue;
|
|
218
|
+
if (li.negated !== lj.negated)
|
|
219
|
+
continue;
|
|
220
|
+
const sub = (0, unify_1.unifyLiterals)({ ...li, negated: false }, { ...lj, negated: false });
|
|
221
|
+
if (!sub)
|
|
222
|
+
continue;
|
|
223
|
+
const survivors = [];
|
|
224
|
+
for (let k = 0; k < c.literals.length; k++) {
|
|
225
|
+
if (k === j)
|
|
226
|
+
continue;
|
|
227
|
+
const lit = c.literals[k];
|
|
228
|
+
if (lit)
|
|
229
|
+
survivors.push((0, unify_1.applySubToLiteral)(lit, sub));
|
|
230
|
+
}
|
|
231
|
+
out.push(dedupLiterals({ literals: survivors }));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return out;
|
|
235
|
+
}
|
|
236
|
+
function dedupLiterals(c) {
|
|
237
|
+
const seen = [];
|
|
238
|
+
for (const l of c.literals) {
|
|
239
|
+
if (!seen.some((s) => (0, unify_1.literalsEqual)(s, l)))
|
|
240
|
+
seen.push(l);
|
|
241
|
+
}
|
|
242
|
+
return { literals: seen, parents: c.parents, fromGoal: c.fromGoal };
|
|
243
|
+
}
|
|
244
|
+
/** Detecta cláusulas tautológicas (P ∨ ¬P). */
|
|
245
|
+
function isTautology(c) {
|
|
246
|
+
for (let i = 0; i < c.literals.length; i++) {
|
|
247
|
+
for (let j = i + 1; j < c.literals.length; j++) {
|
|
248
|
+
const li = c.literals[i];
|
|
249
|
+
const lj = c.literals[j];
|
|
250
|
+
if (!li || !lj)
|
|
251
|
+
continue;
|
|
252
|
+
if (li.negated === lj.negated)
|
|
253
|
+
continue;
|
|
254
|
+
if (li.predicate !== lj.predicate)
|
|
255
|
+
continue;
|
|
256
|
+
if (li.args.length !== lj.args.length)
|
|
257
|
+
continue;
|
|
258
|
+
let same = true;
|
|
259
|
+
for (let k = 0; k < li.args.length; k++) {
|
|
260
|
+
const a = li.args[k];
|
|
261
|
+
const b = lj.args[k];
|
|
262
|
+
if (!a || !b) {
|
|
263
|
+
same = false;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
if (!termsEqualLocal(a, b)) {
|
|
267
|
+
same = false;
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (same)
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
function termsEqualLocal(a, b) {
|
|
278
|
+
if (a.kind !== b.kind)
|
|
279
|
+
return false;
|
|
280
|
+
if (a.kind === 'variable' && b.kind === 'variable')
|
|
281
|
+
return a.name === b.name;
|
|
282
|
+
if (a.kind === 'function' && b.kind === 'function') {
|
|
283
|
+
if (a.name !== b.name || a.args.length !== b.args.length)
|
|
284
|
+
return false;
|
|
285
|
+
for (let i = 0; i < a.args.length; i++) {
|
|
286
|
+
const ai = a.args[i];
|
|
287
|
+
const bi = b.args[i];
|
|
288
|
+
if (ai === undefined || bi === undefined)
|
|
289
|
+
return false;
|
|
290
|
+
if (!termsEqualLocal(ai, bi))
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
return true;
|
|
294
|
+
}
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { FOLClause } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Subsumption clásico: c1 subsume c2 si existe una sustitución σ tal que
|
|
4
|
+
* cada literal de c1·σ aparece en c2.
|
|
5
|
+
*
|
|
6
|
+
* Estrategia: backtracking sobre el matching de cada literal de c1 contra c2.
|
|
7
|
+
* Costoso en el caso general, pero acotado: cláusulas en pruebas reales
|
|
8
|
+
* tienen pocas literales.
|
|
9
|
+
*/
|
|
10
|
+
export declare function subsumes(c1: FOLClause, c2: FOLClause): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Filtra cláusulas dejando sólo las no-subsumidas por otras del mismo set.
|
|
13
|
+
* Conserva orden de la primera aparición.
|
|
14
|
+
*/
|
|
15
|
+
export declare function removeSubsumed(clauses: FOLClause[]): FOLClause[];
|
|
16
|
+
/**
|
|
17
|
+
* Igualdad sintáctica módulo orden de literales y renombre de variables
|
|
18
|
+
* (alpha-equivalencia simple). Suficiente para detectar duplicados producidos
|
|
19
|
+
* por resolución sobre instancias renombradas.
|
|
20
|
+
*/
|
|
21
|
+
export declare function clausesAlphaEqual(a: FOLClause, b: FOLClause): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Reordena cláusulas para que las unitarias (1 literal) vayan primero.
|
|
24
|
+
* Patrón "unit preference" — reduce drásticamente el espacio de búsqueda en
|
|
25
|
+
* problemas tipo modus-ponens encadenado.
|
|
26
|
+
*/
|
|
27
|
+
export declare function unitPreference(clauses: FOLClause[]): FOLClause[];
|
|
28
|
+
//# sourceMappingURL=subsumption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subsumption.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/subsumption.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqC,MAAM,SAAS,CAAC;AAG5E;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAI9D;AA2ED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAsBhE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAerE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAEhE"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.subsumes = subsumes;
|
|
4
|
+
exports.removeSubsumed = removeSubsumed;
|
|
5
|
+
exports.clausesAlphaEqual = clausesAlphaEqual;
|
|
6
|
+
exports.unitPreference = unitPreference;
|
|
7
|
+
const unify_1 = require("./unify");
|
|
8
|
+
/**
|
|
9
|
+
* Subsumption clásico: c1 subsume c2 si existe una sustitución σ tal que
|
|
10
|
+
* cada literal de c1·σ aparece en c2.
|
|
11
|
+
*
|
|
12
|
+
* Estrategia: backtracking sobre el matching de cada literal de c1 contra c2.
|
|
13
|
+
* Costoso en el caso general, pero acotado: cláusulas en pruebas reales
|
|
14
|
+
* tienen pocas literales.
|
|
15
|
+
*/
|
|
16
|
+
function subsumes(c1, c2) {
|
|
17
|
+
if (c1.literals.length === 0)
|
|
18
|
+
return true; // ⊥ subsume todo
|
|
19
|
+
if (c1.literals.length > c2.literals.length)
|
|
20
|
+
return false;
|
|
21
|
+
return matchLiterals(c1.literals, c2.literals, new Map());
|
|
22
|
+
}
|
|
23
|
+
function matchLiterals(remaining, target, sub) {
|
|
24
|
+
if (remaining.length === 0)
|
|
25
|
+
return true;
|
|
26
|
+
const first = remaining[0];
|
|
27
|
+
if (!first)
|
|
28
|
+
return true;
|
|
29
|
+
const rest = remaining.slice(1);
|
|
30
|
+
for (const lit of target) {
|
|
31
|
+
const extended = matchLiteral(first, lit, new Map(sub));
|
|
32
|
+
if (extended && matchLiterals(rest, target, extended))
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
function matchLiteral(pattern, target, sub) {
|
|
38
|
+
if (pattern.negated !== target.negated)
|
|
39
|
+
return null;
|
|
40
|
+
if (pattern.predicate !== target.predicate)
|
|
41
|
+
return null;
|
|
42
|
+
if (pattern.args.length !== target.args.length)
|
|
43
|
+
return null;
|
|
44
|
+
let current = sub;
|
|
45
|
+
for (let i = 0; i < pattern.args.length; i++) {
|
|
46
|
+
const a = pattern.args[i];
|
|
47
|
+
const b = target.args[i];
|
|
48
|
+
if (a === undefined || b === undefined)
|
|
49
|
+
return null;
|
|
50
|
+
const next = matchTerm(a, b, current);
|
|
51
|
+
if (!next)
|
|
52
|
+
return null;
|
|
53
|
+
current = next;
|
|
54
|
+
}
|
|
55
|
+
return current;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Matching unidireccional (no unificación): sólo variables del `pattern` se
|
|
59
|
+
* sustituyen; los términos del `target` se mantienen fijos.
|
|
60
|
+
*/
|
|
61
|
+
function matchTerm(pattern, target, sub) {
|
|
62
|
+
if (pattern.kind === 'variable') {
|
|
63
|
+
const existing = sub.get(pattern.name);
|
|
64
|
+
if (existing) {
|
|
65
|
+
return termsEqual((0, unify_1.applySubToTerm)(existing, sub), target) ? sub : null;
|
|
66
|
+
}
|
|
67
|
+
const next = new Map(sub);
|
|
68
|
+
next.set(pattern.name, target);
|
|
69
|
+
return next;
|
|
70
|
+
}
|
|
71
|
+
if (target.kind === 'variable')
|
|
72
|
+
return null;
|
|
73
|
+
if (pattern.name !== target.name)
|
|
74
|
+
return null;
|
|
75
|
+
if (pattern.args.length !== target.args.length)
|
|
76
|
+
return null;
|
|
77
|
+
let current = sub;
|
|
78
|
+
for (let i = 0; i < pattern.args.length; i++) {
|
|
79
|
+
const a = pattern.args[i];
|
|
80
|
+
const b = target.args[i];
|
|
81
|
+
if (a === undefined || b === undefined)
|
|
82
|
+
return null;
|
|
83
|
+
const next = matchTerm(a, b, current);
|
|
84
|
+
if (!next)
|
|
85
|
+
return null;
|
|
86
|
+
current = next;
|
|
87
|
+
}
|
|
88
|
+
return current;
|
|
89
|
+
}
|
|
90
|
+
function termsEqual(a, b) {
|
|
91
|
+
if (a.kind !== b.kind)
|
|
92
|
+
return false;
|
|
93
|
+
if (a.kind === 'variable' && b.kind === 'variable')
|
|
94
|
+
return a.name === b.name;
|
|
95
|
+
if (a.kind === 'function' && b.kind === 'function') {
|
|
96
|
+
if (a.name !== b.name || a.args.length !== b.args.length)
|
|
97
|
+
return false;
|
|
98
|
+
for (let i = 0; i < a.args.length; i++) {
|
|
99
|
+
const ai = a.args[i];
|
|
100
|
+
const bi = b.args[i];
|
|
101
|
+
if (ai === undefined || bi === undefined)
|
|
102
|
+
return false;
|
|
103
|
+
if (!termsEqual(ai, bi))
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Filtra cláusulas dejando sólo las no-subsumidas por otras del mismo set.
|
|
112
|
+
* Conserva orden de la primera aparición.
|
|
113
|
+
*/
|
|
114
|
+
function removeSubsumed(clauses) {
|
|
115
|
+
const kept = [];
|
|
116
|
+
for (let i = 0; i < clauses.length; i++) {
|
|
117
|
+
const c = clauses[i];
|
|
118
|
+
if (!c)
|
|
119
|
+
continue;
|
|
120
|
+
let dominated = false;
|
|
121
|
+
for (let j = 0; j < clauses.length; j++) {
|
|
122
|
+
if (i === j)
|
|
123
|
+
continue;
|
|
124
|
+
const other = clauses[j];
|
|
125
|
+
if (!other)
|
|
126
|
+
continue;
|
|
127
|
+
if (clausesAlphaEqual(c, other) && j < i) {
|
|
128
|
+
dominated = true; // duplicado posterior
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
if (!clausesAlphaEqual(c, other) && subsumes(other, c)) {
|
|
132
|
+
dominated = true;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (!dominated)
|
|
137
|
+
kept.push(c);
|
|
138
|
+
}
|
|
139
|
+
return kept;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Igualdad sintáctica módulo orden de literales y renombre de variables
|
|
143
|
+
* (alpha-equivalencia simple). Suficiente para detectar duplicados producidos
|
|
144
|
+
* por resolución sobre instancias renombradas.
|
|
145
|
+
*/
|
|
146
|
+
function clausesAlphaEqual(a, b) {
|
|
147
|
+
if (a.literals.length !== b.literals.length)
|
|
148
|
+
return false;
|
|
149
|
+
const matched = new Array(b.literals.length).fill(false);
|
|
150
|
+
outer: for (const la of a.literals) {
|
|
151
|
+
for (let i = 0; i < b.literals.length; i++) {
|
|
152
|
+
if (matched[i])
|
|
153
|
+
continue;
|
|
154
|
+
const lb = b.literals[i];
|
|
155
|
+
if (lb && (0, unify_1.literalsEqual)(la, lb)) {
|
|
156
|
+
matched[i] = true;
|
|
157
|
+
continue outer;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Reordena cláusulas para que las unitarias (1 literal) vayan primero.
|
|
166
|
+
* Patrón "unit preference" — reduce drásticamente el espacio de búsqueda en
|
|
167
|
+
* problemas tipo modus-ponens encadenado.
|
|
168
|
+
*/
|
|
169
|
+
function unitPreference(clauses) {
|
|
170
|
+
return [...clauses].sort((a, b) => a.literals.length - b.literals.length);
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=subsumption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subsumption.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/subsumption.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tipos base de primer orden para el prover avanzado.
|
|
3
|
+
*
|
|
4
|
+
* Variables: identificadores que empiezan con minúscula y se interpretan como
|
|
5
|
+
* sustituibles durante la unificación (convención: `x`, `y`, `u`, `v`).
|
|
6
|
+
* Constantes/funciones: identificadores en minúscula con `args` (aridad ≥ 0).
|
|
7
|
+
* Diferenciamos `variable` vs `function` por el campo `kind` para evitar
|
|
8
|
+
* ambigüedades.
|
|
9
|
+
*/
|
|
10
|
+
export type FOLTerm = {
|
|
11
|
+
kind: 'variable';
|
|
12
|
+
name: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'function';
|
|
15
|
+
name: string;
|
|
16
|
+
args: FOLTerm[];
|
|
17
|
+
};
|
|
18
|
+
export interface FOLLiteral {
|
|
19
|
+
/** Si la literal está negada (¬P(x)) o es positiva (P(x)). */
|
|
20
|
+
negated: boolean;
|
|
21
|
+
predicate: string;
|
|
22
|
+
args: FOLTerm[];
|
|
23
|
+
}
|
|
24
|
+
export interface FOLClause {
|
|
25
|
+
/** Disyunción de literales. Cláusula vacía ⇒ contradicción. */
|
|
26
|
+
literals: FOLLiteral[];
|
|
27
|
+
/** Trazabilidad: índices de cláusulas padre (si fue derivada). */
|
|
28
|
+
parents?: number[];
|
|
29
|
+
/** Marca cláusulas que provienen del goal o su negación (SoS). */
|
|
30
|
+
fromGoal?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export type Substitution = Map<string, FOLTerm>;
|
|
33
|
+
export type RefinementStrategy = 'binary' | 'hyperresolution' | 'set-of-support' | 'ordered' | 'unit-preference';
|
|
34
|
+
export type TermOrdering = 'KBO' | 'LPO' | 'none';
|
|
35
|
+
export interface AdvancedProveOptions {
|
|
36
|
+
strategy: RefinementStrategy;
|
|
37
|
+
ordering?: TermOrdering;
|
|
38
|
+
/** Pesos para KBO (símbolo → peso). Variables tienen peso fijo 1. */
|
|
39
|
+
kboWeights?: Map<string, number>;
|
|
40
|
+
/** Precedencia para LPO/ordered (símbolo → rank; mayor = más fuerte). */
|
|
41
|
+
precedence?: Map<string, number>;
|
|
42
|
+
/** Índices (en `premises` + goal-negado) que arrancan en el set-of-support. */
|
|
43
|
+
setOfSupport?: number[];
|
|
44
|
+
timeoutMs?: number;
|
|
45
|
+
maxSteps?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface ProofStep {
|
|
48
|
+
rule: string;
|
|
49
|
+
from: number[];
|
|
50
|
+
result: FOLClause;
|
|
51
|
+
substitution?: Substitution;
|
|
52
|
+
}
|
|
53
|
+
export interface ProofStats {
|
|
54
|
+
resolutions: number;
|
|
55
|
+
subsumed: number;
|
|
56
|
+
deduplicated: number;
|
|
57
|
+
hyperresolutions: number;
|
|
58
|
+
factored: number;
|
|
59
|
+
steps: number;
|
|
60
|
+
}
|
|
61
|
+
export interface AdvancedProveResult {
|
|
62
|
+
proven: boolean;
|
|
63
|
+
steps: ProofStep[];
|
|
64
|
+
stats: ProofStats;
|
|
65
|
+
/** Razón cuando `proven=false`: timeout, saturated, maxSteps. */
|
|
66
|
+
termination: 'refuted' | 'saturated' | 'timeout' | 'max-steps';
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,GAChB,SAAS,GACT,iBAAiB,CAAC;AAEtB,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,qEAAqE;IACrE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yEAAyE;IACzE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,iEAAiE;IACjE,WAAW,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;CAChE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tipos base de primer orden para el prover avanzado.
|
|
4
|
+
*
|
|
5
|
+
* Variables: identificadores que empiezan con minúscula y se interpretan como
|
|
6
|
+
* sustituibles durante la unificación (convención: `x`, `y`, `u`, `v`).
|
|
7
|
+
* Constantes/funciones: identificadores en minúscula con `args` (aridad ≥ 0).
|
|
8
|
+
* Diferenciamos `variable` vs `function` por el campo `kind` para evitar
|
|
9
|
+
* ambigüedades.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FOLLiteral, FOLTerm, Substitution } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Unificación de Robinson con occurs-check. Devuelve la sustitución más
|
|
4
|
+
* general (mgu) o `null` si no unifica.
|
|
5
|
+
*
|
|
6
|
+
* Implementación iterativa sobre una pila de pares (t1,t2) para evitar
|
|
7
|
+
* recursión profunda en cláusulas grandes.
|
|
8
|
+
*/
|
|
9
|
+
export declare function unify(t1: FOLTerm, t2: FOLTerm): Substitution | null;
|
|
10
|
+
export declare function unifyLiterals(l1: FOLLiteral, l2: FOLLiteral): Substitution | null;
|
|
11
|
+
export declare function applySubToTerm(t: FOLTerm, sub: Substitution): FOLTerm;
|
|
12
|
+
export declare function applySubToLiteral(l: FOLLiteral, sub: Substitution): FOLLiteral;
|
|
13
|
+
export declare function termsEqual(a: FOLTerm, b: FOLTerm): boolean;
|
|
14
|
+
export declare function literalsEqual(a: FOLLiteral, b: FOLLiteral): boolean;
|
|
15
|
+
//# sourceMappingURL=unify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unify.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/unify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAkCnE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAejF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAYrE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU,CAM9E;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAc1D;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAWnE"}
|