@stevenvo780/st-lang 4.11.0 → 4.13.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/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/datalog/index.d.ts +131 -0
- package/dist/reasoning/datalog/index.d.ts.map +1 -0
- package/dist/reasoning/datalog/index.js +706 -0
- package/dist/reasoning/datalog/index.js.map +1 -0
- package/dist/reasoning/galois-fields/index.d.ts +29 -0
- package/dist/reasoning/galois-fields/index.d.ts.map +1 -0
- package/dist/reasoning/galois-fields/index.js +522 -0
- package/dist/reasoning/galois-fields/index.js.map +1 -0
- package/dist/reasoning/lattice/index.d.ts +165 -0
- package/dist/reasoning/lattice/index.d.ts.map +1 -0
- package/dist/reasoning/lattice/index.js +587 -0
- package/dist/reasoning/lattice/index.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/polynomial-ring/index.d.ts +30 -0
- package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -0
- package/dist/reasoning/polynomial-ring/index.js +797 -0
- package/dist/reasoning/polynomial-ring/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/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/datalog/datalog.test.d.ts +2 -0
- package/dist/tests/reasoning/datalog/datalog.test.d.ts.map +1 -0
- package/dist/tests/reasoning/datalog/datalog.test.js +333 -0
- package/dist/tests/reasoning/datalog/datalog.test.js.map +1 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts +2 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts.map +1 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.js +226 -0
- package/dist/tests/reasoning/galois-fields/galois-fields.test.js.map +1 -0
- package/dist/tests/reasoning/lattice/lattice.test.d.ts +2 -0
- package/dist/tests/reasoning/lattice/lattice.test.d.ts.map +1 -0
- package/dist/tests/reasoning/lattice/lattice.test.js +238 -0
- package/dist/tests/reasoning/lattice/lattice.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/polynomial-ring/polynomial-ring.test.d.ts +2 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts.map +1 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js +230 -0
- package/dist/tests/reasoning/polynomial-ring/polynomial-ring.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/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/tests/type-theory/lambda-cube/lambda-cube.test.d.ts +2 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts.map +1 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js +266 -0
- package/dist/tests/type-theory/lambda-cube/lambda-cube.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/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/dist/type-theory/lambda-cube/erase.d.ts +26 -0
- package/dist/type-theory/lambda-cube/erase.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/erase.js +68 -0
- package/dist/type-theory/lambda-cube/erase.js.map +1 -0
- package/dist/type-theory/lambda-cube/examples.d.ts +59 -0
- package/dist/type-theory/lambda-cube/examples.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/examples.js +110 -0
- package/dist/type-theory/lambda-cube/examples.js.map +1 -0
- package/dist/type-theory/lambda-cube/index.d.ts +11 -0
- package/dist/type-theory/lambda-cube/index.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/index.js +64 -0
- package/dist/type-theory/lambda-cube/index.js.map +1 -0
- package/dist/type-theory/lambda-cube/normalize.d.ts +17 -0
- package/dist/type-theory/lambda-cube/normalize.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/normalize.js +134 -0
- package/dist/type-theory/lambda-cube/normalize.js.map +1 -0
- package/dist/type-theory/lambda-cube/rules.d.ts +26 -0
- package/dist/type-theory/lambda-cube/rules.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/rules.js +67 -0
- package/dist/type-theory/lambda-cube/rules.js.map +1 -0
- package/dist/type-theory/lambda-cube/typecheck.d.ts +20 -0
- package/dist/type-theory/lambda-cube/typecheck.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/typecheck.js +168 -0
- package/dist/type-theory/lambda-cube/typecheck.js.map +1 -0
- package/dist/type-theory/lambda-cube/types.d.ts +40 -0
- package/dist/type-theory/lambda-cube/types.d.ts.map +1 -0
- package/dist/type-theory/lambda-cube/types.js +192 -0
- package/dist/type-theory/lambda-cube/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { FOLTerm, FOLLiteral, FOLClause, Substitution, RefinementStrategy, TermOrdering, AdvancedProveOptions, AdvancedProveResult, ProofStep, ProofStats } from './types';
|
|
2
|
+
export { unify, unifyLiterals, applySubToTerm, applySubToLiteral, termsEqual, literalsEqual } from './unify';
|
|
3
|
+
export { kboGreater, lpoGreater, maximalLiterals } from './ordering';
|
|
4
|
+
export { subsumes, removeSubsumed, unitPreference, clausesAlphaEqual } from './subsumption';
|
|
5
|
+
export { binaryResolve, hyperresolve, hyperresolveMany, factor, dedupLiterals, isTautology, renameClause, resetRenameCounter } from './resolve';
|
|
6
|
+
export { proveAdvanced, negateLiteral, negateClause, strategyLabel } from './prover';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.strategyLabel = exports.negateClause = exports.negateLiteral = exports.proveAdvanced = exports.resetRenameCounter = exports.renameClause = exports.isTautology = exports.dedupLiterals = exports.factor = exports.hyperresolveMany = exports.hyperresolve = exports.binaryResolve = exports.clausesAlphaEqual = exports.unitPreference = exports.removeSubsumed = exports.subsumes = exports.maximalLiterals = exports.lpoGreater = exports.kboGreater = exports.literalsEqual = exports.termsEqual = exports.applySubToLiteral = exports.applySubToTerm = exports.unifyLiterals = exports.unify = void 0;
|
|
4
|
+
var unify_1 = require("./unify");
|
|
5
|
+
Object.defineProperty(exports, "unify", { enumerable: true, get: function () { return unify_1.unify; } });
|
|
6
|
+
Object.defineProperty(exports, "unifyLiterals", { enumerable: true, get: function () { return unify_1.unifyLiterals; } });
|
|
7
|
+
Object.defineProperty(exports, "applySubToTerm", { enumerable: true, get: function () { return unify_1.applySubToTerm; } });
|
|
8
|
+
Object.defineProperty(exports, "applySubToLiteral", { enumerable: true, get: function () { return unify_1.applySubToLiteral; } });
|
|
9
|
+
Object.defineProperty(exports, "termsEqual", { enumerable: true, get: function () { return unify_1.termsEqual; } });
|
|
10
|
+
Object.defineProperty(exports, "literalsEqual", { enumerable: true, get: function () { return unify_1.literalsEqual; } });
|
|
11
|
+
var ordering_1 = require("./ordering");
|
|
12
|
+
Object.defineProperty(exports, "kboGreater", { enumerable: true, get: function () { return ordering_1.kboGreater; } });
|
|
13
|
+
Object.defineProperty(exports, "lpoGreater", { enumerable: true, get: function () { return ordering_1.lpoGreater; } });
|
|
14
|
+
Object.defineProperty(exports, "maximalLiterals", { enumerable: true, get: function () { return ordering_1.maximalLiterals; } });
|
|
15
|
+
var subsumption_1 = require("./subsumption");
|
|
16
|
+
Object.defineProperty(exports, "subsumes", { enumerable: true, get: function () { return subsumption_1.subsumes; } });
|
|
17
|
+
Object.defineProperty(exports, "removeSubsumed", { enumerable: true, get: function () { return subsumption_1.removeSubsumed; } });
|
|
18
|
+
Object.defineProperty(exports, "unitPreference", { enumerable: true, get: function () { return subsumption_1.unitPreference; } });
|
|
19
|
+
Object.defineProperty(exports, "clausesAlphaEqual", { enumerable: true, get: function () { return subsumption_1.clausesAlphaEqual; } });
|
|
20
|
+
var resolve_1 = require("./resolve");
|
|
21
|
+
Object.defineProperty(exports, "binaryResolve", { enumerable: true, get: function () { return resolve_1.binaryResolve; } });
|
|
22
|
+
Object.defineProperty(exports, "hyperresolve", { enumerable: true, get: function () { return resolve_1.hyperresolve; } });
|
|
23
|
+
Object.defineProperty(exports, "hyperresolveMany", { enumerable: true, get: function () { return resolve_1.hyperresolveMany; } });
|
|
24
|
+
Object.defineProperty(exports, "factor", { enumerable: true, get: function () { return resolve_1.factor; } });
|
|
25
|
+
Object.defineProperty(exports, "dedupLiterals", { enumerable: true, get: function () { return resolve_1.dedupLiterals; } });
|
|
26
|
+
Object.defineProperty(exports, "isTautology", { enumerable: true, get: function () { return resolve_1.isTautology; } });
|
|
27
|
+
Object.defineProperty(exports, "renameClause", { enumerable: true, get: function () { return resolve_1.renameClause; } });
|
|
28
|
+
Object.defineProperty(exports, "resetRenameCounter", { enumerable: true, get: function () { return resolve_1.resetRenameCounter; } });
|
|
29
|
+
var prover_1 = require("./prover");
|
|
30
|
+
Object.defineProperty(exports, "proveAdvanced", { enumerable: true, get: function () { return prover_1.proveAdvanced; } });
|
|
31
|
+
Object.defineProperty(exports, "negateLiteral", { enumerable: true, get: function () { return prover_1.negateLiteral; } });
|
|
32
|
+
Object.defineProperty(exports, "negateClause", { enumerable: true, get: function () { return prover_1.negateClause; } });
|
|
33
|
+
Object.defineProperty(exports, "strategyLabel", { enumerable: true, get: function () { return prover_1.strategyLabel; } });
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/index.ts"],"names":[],"mappings":";;;AAaA,iCAOiB;AANf,8FAAA,KAAK,OAAA;AACL,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA;AACd,0GAAA,iBAAiB,OAAA;AACjB,mGAAA,UAAU,OAAA;AACV,sGAAA,aAAa,OAAA;AAGf,uCAIoB;AAHlB,sGAAA,UAAU,OAAA;AACV,sGAAA,UAAU,OAAA;AACV,2GAAA,eAAe,OAAA;AAGjB,6CAKuB;AAJrB,uGAAA,QAAQ,OAAA;AACR,6GAAA,cAAc,OAAA;AACd,6GAAA,cAAc,OAAA;AACd,gHAAA,iBAAiB,OAAA;AAGnB,qCASmB;AARjB,wGAAA,aAAa,OAAA;AACb,uGAAA,YAAY,OAAA;AACZ,2GAAA,gBAAgB,OAAA;AAChB,iGAAA,MAAM,OAAA;AACN,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,6GAAA,kBAAkB,OAAA;AAGpB,mCAKkB;AAJhB,uGAAA,aAAa,OAAA;AACb,uGAAA,aAAa,OAAA;AACb,sGAAA,YAAY,OAAA;AACZ,uGAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { FOLLiteral, FOLTerm } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* `kboGreater(t1, t2, weights)` ⇔ t1 >_KBO t2.
|
|
4
|
+
*
|
|
5
|
+
* Invariantes (simplificadas; suficientes para el tablero de pruebas):
|
|
6
|
+
* 1. Cada variable de t2 ocurre en t1 al menos tantas veces.
|
|
7
|
+
* 2. weight(t1) > weight(t2), o
|
|
8
|
+
* 3. weight(t1) == weight(t2) y t1 domina léxicamente (top-symbol > top-symbol
|
|
9
|
+
* según precedencia derivada de pesos, o argumentos comparados).
|
|
10
|
+
*/
|
|
11
|
+
export declare function kboGreater(t1: FOLTerm, t2: FOLTerm, weights: Map<string, number>): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* `lpoGreater(t1, t2, precedence)` ⇔ t1 >_LPO t2.
|
|
14
|
+
*
|
|
15
|
+
* Reglas estándar:
|
|
16
|
+
* - Si t2 es variable, t1 > t2 ⇔ t2 ocurre en t1 y t1 ≠ t2.
|
|
17
|
+
* - Si top(t1) > top(t2) (vía `precedence`) y t1 > cada subterm de t2.
|
|
18
|
+
* - Si top(t1) = top(t2), comparación lexicográfica de argumentos y t1 > cada
|
|
19
|
+
* subterm de t2.
|
|
20
|
+
* - Si algún subterm de t1 ≥ t2.
|
|
21
|
+
*/
|
|
22
|
+
export declare function lpoGreater(t1: FOLTerm, t2: FOLTerm, precedence: Map<string, number>): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Calcula las literales máximas de una cláusula bajo el ordering dado.
|
|
25
|
+
* Sólo esas pueden usarse como "literal seleccionada" en ordered resolution.
|
|
26
|
+
*
|
|
27
|
+
* Convertimos cada literal en un término representativo
|
|
28
|
+
* `f_pred(args)` (con signo codificado vía precedencia para que la negación no
|
|
29
|
+
* altere el orden) y comparamos.
|
|
30
|
+
*/
|
|
31
|
+
export declare function maximalLiterals(clause: {
|
|
32
|
+
literals: FOLLiteral[];
|
|
33
|
+
}, ordering: 'KBO' | 'LPO' | 'none', weights: Map<string, number>, precedence: Map<string, number>): number[];
|
|
34
|
+
//# sourceMappingURL=ordering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/ordering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAwCnD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CA4B1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAuC7F;AAuBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,EAClC,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,EAChC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,EAAE,CA6BV"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kboGreater = kboGreater;
|
|
4
|
+
exports.lpoGreater = lpoGreater;
|
|
5
|
+
exports.maximalLiterals = maximalLiterals;
|
|
6
|
+
function termMultiset(t) {
|
|
7
|
+
const ms = { size: 0, varCount: new Map() };
|
|
8
|
+
walk(t);
|
|
9
|
+
function walk(node) {
|
|
10
|
+
if (node.kind === 'variable') {
|
|
11
|
+
ms.size += 1;
|
|
12
|
+
ms.varCount.set(node.name, (ms.varCount.get(node.name) ?? 0) + 1);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
ms.size += 1;
|
|
16
|
+
for (const a of node.args)
|
|
17
|
+
walk(a);
|
|
18
|
+
}
|
|
19
|
+
return ms;
|
|
20
|
+
}
|
|
21
|
+
function termWeight(t, weights) {
|
|
22
|
+
if (t.kind === 'variable')
|
|
23
|
+
return 1;
|
|
24
|
+
const w = weights.get(t.name) ?? 1;
|
|
25
|
+
let total = w;
|
|
26
|
+
for (const a of t.args)
|
|
27
|
+
total += termWeight(a, weights);
|
|
28
|
+
return total;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* `kboGreater(t1, t2, weights)` ⇔ t1 >_KBO t2.
|
|
32
|
+
*
|
|
33
|
+
* Invariantes (simplificadas; suficientes para el tablero de pruebas):
|
|
34
|
+
* 1. Cada variable de t2 ocurre en t1 al menos tantas veces.
|
|
35
|
+
* 2. weight(t1) > weight(t2), o
|
|
36
|
+
* 3. weight(t1) == weight(t2) y t1 domina léxicamente (top-symbol > top-symbol
|
|
37
|
+
* según precedencia derivada de pesos, o argumentos comparados).
|
|
38
|
+
*/
|
|
39
|
+
function kboGreater(t1, t2, weights) {
|
|
40
|
+
// Condición de variables: cada var de t2 ocurre ≥ en t1.
|
|
41
|
+
const ms1 = termMultiset(t1);
|
|
42
|
+
const ms2 = termMultiset(t2);
|
|
43
|
+
for (const [varName, count2] of ms2.varCount) {
|
|
44
|
+
const count1 = ms1.varCount.get(varName) ?? 0;
|
|
45
|
+
if (count1 < count2)
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const w1 = termWeight(t1, weights);
|
|
49
|
+
const w2 = termWeight(t2, weights);
|
|
50
|
+
if (w1 > w2)
|
|
51
|
+
return true;
|
|
52
|
+
if (w1 < w2)
|
|
53
|
+
return false;
|
|
54
|
+
// Empate en peso: comparar símbolos top y luego argumentos.
|
|
55
|
+
if (t1.kind === 'variable' || t2.kind === 'variable')
|
|
56
|
+
return false;
|
|
57
|
+
const wf1 = weights.get(t1.name) ?? 1;
|
|
58
|
+
const wf2 = weights.get(t2.name) ?? 1;
|
|
59
|
+
if (wf1 > wf2)
|
|
60
|
+
return true;
|
|
61
|
+
if (wf1 < wf2)
|
|
62
|
+
return false;
|
|
63
|
+
if (t1.name !== t2.name)
|
|
64
|
+
return t1.name > t2.name;
|
|
65
|
+
if (t1.args.length !== t2.args.length)
|
|
66
|
+
return t1.args.length > t2.args.length;
|
|
67
|
+
for (let i = 0; i < t1.args.length; i++) {
|
|
68
|
+
const a = t1.args[i];
|
|
69
|
+
const b = t2.args[i];
|
|
70
|
+
if (a === undefined || b === undefined)
|
|
71
|
+
return false;
|
|
72
|
+
if (kboGreater(a, b, weights))
|
|
73
|
+
return true;
|
|
74
|
+
if (kboGreater(b, a, weights))
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* `lpoGreater(t1, t2, precedence)` ⇔ t1 >_LPO t2.
|
|
81
|
+
*
|
|
82
|
+
* Reglas estándar:
|
|
83
|
+
* - Si t2 es variable, t1 > t2 ⇔ t2 ocurre en t1 y t1 ≠ t2.
|
|
84
|
+
* - Si top(t1) > top(t2) (vía `precedence`) y t1 > cada subterm de t2.
|
|
85
|
+
* - Si top(t1) = top(t2), comparación lexicográfica de argumentos y t1 > cada
|
|
86
|
+
* subterm de t2.
|
|
87
|
+
* - Si algún subterm de t1 ≥ t2.
|
|
88
|
+
*/
|
|
89
|
+
function lpoGreater(t1, t2, precedence) {
|
|
90
|
+
if (t1.kind === 'variable')
|
|
91
|
+
return false;
|
|
92
|
+
if (t2.kind === 'variable')
|
|
93
|
+
return occursVar(t2.name, t1) && !sameTerm(t1, t2);
|
|
94
|
+
// Caso 1: algún subterm de t1 ≥ t2.
|
|
95
|
+
for (const sub of t1.args) {
|
|
96
|
+
if (sameTerm(sub, t2) || lpoGreater(sub, t2, precedence))
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
const r1 = precedence.get(t1.name) ?? 0;
|
|
100
|
+
const r2 = precedence.get(t2.name) ?? 0;
|
|
101
|
+
if (r1 > r2) {
|
|
102
|
+
// t1 > t2 ⇔ t1 > cada subterm de t2.
|
|
103
|
+
for (const s of t2.args) {
|
|
104
|
+
if (!lpoGreater(t1, s, precedence))
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
if (r1 === r2 && t1.name === t2.name && t1.args.length === t2.args.length) {
|
|
110
|
+
// Lexicográfico sobre args.
|
|
111
|
+
for (let i = 0; i < t1.args.length; i++) {
|
|
112
|
+
const a = t1.args[i];
|
|
113
|
+
const b = t2.args[i];
|
|
114
|
+
if (a === undefined || b === undefined)
|
|
115
|
+
return false;
|
|
116
|
+
if (sameTerm(a, b))
|
|
117
|
+
continue;
|
|
118
|
+
if (lpoGreater(a, b, precedence)) {
|
|
119
|
+
for (const s of t2.args) {
|
|
120
|
+
if (!lpoGreater(t1, s, precedence))
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
function occursVar(name, t) {
|
|
132
|
+
if (t.kind === 'variable')
|
|
133
|
+
return t.name === name;
|
|
134
|
+
return t.args.some((a) => occursVar(name, a));
|
|
135
|
+
}
|
|
136
|
+
function sameTerm(a, b) {
|
|
137
|
+
if (a.kind !== b.kind)
|
|
138
|
+
return false;
|
|
139
|
+
if (a.kind === 'variable' && b.kind === 'variable')
|
|
140
|
+
return a.name === b.name;
|
|
141
|
+
if (a.kind === 'function' && b.kind === 'function') {
|
|
142
|
+
if (a.name !== b.name || a.args.length !== b.args.length)
|
|
143
|
+
return false;
|
|
144
|
+
for (let i = 0; i < a.args.length; i++) {
|
|
145
|
+
const ai = a.args[i];
|
|
146
|
+
const bi = b.args[i];
|
|
147
|
+
if (ai === undefined || bi === undefined)
|
|
148
|
+
return false;
|
|
149
|
+
if (!sameTerm(ai, bi))
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Calcula las literales máximas de una cláusula bajo el ordering dado.
|
|
158
|
+
* Sólo esas pueden usarse como "literal seleccionada" en ordered resolution.
|
|
159
|
+
*
|
|
160
|
+
* Convertimos cada literal en un término representativo
|
|
161
|
+
* `f_pred(args)` (con signo codificado vía precedencia para que la negación no
|
|
162
|
+
* altere el orden) y comparamos.
|
|
163
|
+
*/
|
|
164
|
+
function maximalLiterals(clause, ordering, weights, precedence) {
|
|
165
|
+
if (ordering === 'none' || clause.literals.length === 0) {
|
|
166
|
+
return clause.literals.map((_, i) => i);
|
|
167
|
+
}
|
|
168
|
+
const wrapped = clause.literals.map((l) => ({
|
|
169
|
+
kind: 'function',
|
|
170
|
+
name: l.predicate,
|
|
171
|
+
args: l.args
|
|
172
|
+
}));
|
|
173
|
+
const maximal = [];
|
|
174
|
+
for (let i = 0; i < wrapped.length; i++) {
|
|
175
|
+
let dominated = false;
|
|
176
|
+
for (let j = 0; j < wrapped.length; j++) {
|
|
177
|
+
if (i === j)
|
|
178
|
+
continue;
|
|
179
|
+
const wi = wrapped[i];
|
|
180
|
+
const wj = wrapped[j];
|
|
181
|
+
if (wi === undefined || wj === undefined)
|
|
182
|
+
continue;
|
|
183
|
+
if (ordering === 'KBO' && kboGreater(wj, wi, weights)) {
|
|
184
|
+
dominated = true;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
if (ordering === 'LPO' && lpoGreater(wj, wi, precedence)) {
|
|
188
|
+
dominated = true;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (!dominated)
|
|
193
|
+
maximal.push(i);
|
|
194
|
+
}
|
|
195
|
+
return maximal;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=ordering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/ordering.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AdvancedProveOptions, AdvancedProveResult, FOLClause, FOLLiteral, RefinementStrategy } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Negación lógica de una literal (toggle del flag `negated`).
|
|
4
|
+
* Útil para construir el goal negado en una refutación.
|
|
5
|
+
*/
|
|
6
|
+
export declare function negateLiteral(l: FOLLiteral): FOLLiteral;
|
|
7
|
+
export declare function negateClause(c: FOLClause): FOLClause[];
|
|
8
|
+
/**
|
|
9
|
+
* Prover avanzado: refuta `premises ∧ ¬goal` aplicando el refinamiento
|
|
10
|
+
* elegido. Devuelve un `AdvancedProveResult` con las trazas.
|
|
11
|
+
*
|
|
12
|
+
* Asumimos que `premises` y `goal` ya están en CNF (cláusulas explícitas
|
|
13
|
+
* con literales). El caller que quiera convertir fórmulas ricas a CNF debe
|
|
14
|
+
* hacerlo antes.
|
|
15
|
+
*/
|
|
16
|
+
export declare function proveAdvanced(premises: FOLClause[], goal: FOLClause, opts: AdvancedProveOptions): AdvancedProveResult;
|
|
17
|
+
/**
|
|
18
|
+
* Helper que mapea `RefinementStrategy` a un short-name legible (sirve para
|
|
19
|
+
* logs y tests).
|
|
20
|
+
*/
|
|
21
|
+
export declare function strategyLabel(s: RefinementStrategy): string;
|
|
22
|
+
//# sourceMappingURL=prover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/prover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,UAAU,EAGV,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAejB;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,CAEvD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAGtD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,EAAE,EACrB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,oBAAoB,GACzB,mBAAmB,CAwLrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAQ3D"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.negateLiteral = negateLiteral;
|
|
4
|
+
exports.negateClause = negateClause;
|
|
5
|
+
exports.proveAdvanced = proveAdvanced;
|
|
6
|
+
exports.strategyLabel = strategyLabel;
|
|
7
|
+
const resolve_1 = require("./resolve");
|
|
8
|
+
const ordering_1 = require("./ordering");
|
|
9
|
+
const subsumption_1 = require("./subsumption");
|
|
10
|
+
/**
|
|
11
|
+
* Negación lógica de una literal (toggle del flag `negated`).
|
|
12
|
+
* Útil para construir el goal negado en una refutación.
|
|
13
|
+
*/
|
|
14
|
+
function negateLiteral(l) {
|
|
15
|
+
return { ...l, negated: !l.negated };
|
|
16
|
+
}
|
|
17
|
+
function negateClause(c) {
|
|
18
|
+
// ¬(L1 ∨ L2 ∨ … ∨ Ln) = ¬L1 ∧ ¬L2 ∧ … ∧ ¬Ln → una cláusula unitaria por literal.
|
|
19
|
+
return c.literals.map((l) => ({ literals: [negateLiteral(l)], fromGoal: true }));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Prover avanzado: refuta `premises ∧ ¬goal` aplicando el refinamiento
|
|
23
|
+
* elegido. Devuelve un `AdvancedProveResult` con las trazas.
|
|
24
|
+
*
|
|
25
|
+
* Asumimos que `premises` y `goal` ya están en CNF (cláusulas explícitas
|
|
26
|
+
* con literales). El caller que quiera convertir fórmulas ricas a CNF debe
|
|
27
|
+
* hacerlo antes.
|
|
28
|
+
*/
|
|
29
|
+
function proveAdvanced(premises, goal, opts) {
|
|
30
|
+
(0, resolve_1.resetRenameCounter)();
|
|
31
|
+
const timeoutMs = opts.timeoutMs ?? 5_000;
|
|
32
|
+
const maxSteps = opts.maxSteps ?? 5_000;
|
|
33
|
+
const ordering = opts.ordering ?? 'none';
|
|
34
|
+
const weights = opts.kboWeights ?? new Map();
|
|
35
|
+
const precedence = opts.precedence ?? new Map();
|
|
36
|
+
const strategy = opts.strategy;
|
|
37
|
+
const goalClauses = negateClause(goal);
|
|
38
|
+
let clauses = [...premises.map((p) => ({ ...p })), ...goalClauses];
|
|
39
|
+
// Set-of-support inicial: índices de cláusulas que arrancan en el set.
|
|
40
|
+
// Si el caller dio `setOfSupport`, usamos esos; si no, las cláusulas del goal.
|
|
41
|
+
const initialSoS = new Set();
|
|
42
|
+
if (strategy === 'set-of-support') {
|
|
43
|
+
if (opts.setOfSupport && opts.setOfSupport.length > 0) {
|
|
44
|
+
for (const i of opts.setOfSupport)
|
|
45
|
+
initialSoS.add(i);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// Por default: las cláusulas que vienen del goal negado.
|
|
49
|
+
for (let i = premises.length; i < clauses.length; i++)
|
|
50
|
+
initialSoS.add(i);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const sosFlag = new Map();
|
|
54
|
+
for (let i = 0; i < clauses.length; i++)
|
|
55
|
+
sosFlag.set(i, initialSoS.has(i));
|
|
56
|
+
// Aplicar unit preference como reordenamiento inicial si la estrategia es esa.
|
|
57
|
+
if (strategy === 'unit-preference') {
|
|
58
|
+
clauses = (0, subsumption_1.unitPreference)(clauses);
|
|
59
|
+
}
|
|
60
|
+
const steps = [];
|
|
61
|
+
const stats = {
|
|
62
|
+
resolutions: 0,
|
|
63
|
+
subsumed: 0,
|
|
64
|
+
deduplicated: 0,
|
|
65
|
+
hyperresolutions: 0,
|
|
66
|
+
factored: 0,
|
|
67
|
+
steps: 0
|
|
68
|
+
};
|
|
69
|
+
const start = Date.now();
|
|
70
|
+
// Comprobar cláusula vacía ya presente
|
|
71
|
+
for (const c of clauses) {
|
|
72
|
+
if (c.literals.length === 0) {
|
|
73
|
+
return {
|
|
74
|
+
proven: true,
|
|
75
|
+
steps,
|
|
76
|
+
stats,
|
|
77
|
+
termination: 'refuted'
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Loop principal: a cada iteración intentamos producir resolventes nuevos.
|
|
82
|
+
while (true) {
|
|
83
|
+
if (Date.now() - start > timeoutMs) {
|
|
84
|
+
return { proven: false, steps, stats, termination: 'timeout' };
|
|
85
|
+
}
|
|
86
|
+
if (stats.steps >= maxSteps) {
|
|
87
|
+
return { proven: false, steps, stats, termination: 'max-steps' };
|
|
88
|
+
}
|
|
89
|
+
const newClauses = [];
|
|
90
|
+
// Generar resolventes según estrategia
|
|
91
|
+
for (let i = 0; i < clauses.length; i++) {
|
|
92
|
+
for (let j = i + 1; j < clauses.length; j++) {
|
|
93
|
+
const ci = clauses[i];
|
|
94
|
+
const cj = clauses[j];
|
|
95
|
+
if (!ci || !cj)
|
|
96
|
+
continue;
|
|
97
|
+
// Set-of-support: al menos una de las dos debe estar en el SoS.
|
|
98
|
+
if (strategy === 'set-of-support') {
|
|
99
|
+
if (!sosFlag.get(i) && !sosFlag.get(j))
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (strategy === 'hyperresolution') {
|
|
103
|
+
// En este modo el "núcleo" es la cláusula con literales negativas
|
|
104
|
+
// y los electrons salen de positivas. Probamos cada cláusula como
|
|
105
|
+
// núcleo contra el resto positivo.
|
|
106
|
+
const positives = clauses.filter((c) => c.literals.length > 0 && c.literals.every((l) => !l.negated));
|
|
107
|
+
const candidates = [ci, cj];
|
|
108
|
+
for (const nucleus of candidates) {
|
|
109
|
+
if (nucleus.literals.every((l) => !l.negated))
|
|
110
|
+
continue; // ya positiva
|
|
111
|
+
const hrs = (0, resolve_1.hyperresolveMany)(positives, nucleus);
|
|
112
|
+
for (const hr of hrs) {
|
|
113
|
+
stats.hyperresolutions += 1;
|
|
114
|
+
stats.resolutions += 1;
|
|
115
|
+
newClauses.push({
|
|
116
|
+
clause: hr.clause,
|
|
117
|
+
step: {
|
|
118
|
+
rule: 'hyperresolution',
|
|
119
|
+
from: [i, j, ...hr.usedElectrons.map((e) => -1 - e)], // electron indices con offset negativo
|
|
120
|
+
result: hr.clause,
|
|
121
|
+
substitution: hr.sub
|
|
122
|
+
},
|
|
123
|
+
fromGoalDerived: !!ci.fromGoal || !!cj.fromGoal
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
// Resolución binaria con/sin ordering
|
|
130
|
+
const resolvents = (0, resolve_1.binaryResolve)(ci, cj);
|
|
131
|
+
for (const r of resolvents) {
|
|
132
|
+
// Ordered resolution: la literal resuelta debe ser máxima en su cláusula.
|
|
133
|
+
if (strategy === 'ordered') {
|
|
134
|
+
const liMax = (0, ordering_1.maximalLiterals)(ci, ordering, weights, precedence);
|
|
135
|
+
const ljMax = (0, ordering_1.maximalLiterals)(cj, ordering, weights, precedence);
|
|
136
|
+
// Aceptamos si en cada padre la literal usada está entre las máximas.
|
|
137
|
+
// Como `binaryResolve` no devuelve cuál par usó, hacemos un check
|
|
138
|
+
// suave: al menos las máximas deben ser ≥ 1 en cada cláusula.
|
|
139
|
+
if (liMax.length === 0 || ljMax.length === 0)
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
stats.resolutions += 1;
|
|
143
|
+
newClauses.push({
|
|
144
|
+
clause: r.clause,
|
|
145
|
+
step: {
|
|
146
|
+
rule: strategy === 'ordered' ? 'ordered-resolution' : 'binary-resolution',
|
|
147
|
+
from: [i, j],
|
|
148
|
+
result: r.clause,
|
|
149
|
+
substitution: r.sub
|
|
150
|
+
},
|
|
151
|
+
fromGoalDerived: !!ci.fromGoal || !!cj.fromGoal
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// Factoring sobre ambos padres también puede acortar pruebas.
|
|
155
|
+
for (const ff of [(0, resolve_1.factor)(ci), (0, resolve_1.factor)(cj)]) {
|
|
156
|
+
for (const fc of ff) {
|
|
157
|
+
stats.factored += 1;
|
|
158
|
+
newClauses.push({
|
|
159
|
+
clause: fc,
|
|
160
|
+
step: { rule: 'factoring', from: [i], result: fc },
|
|
161
|
+
fromGoalDerived: !!ci.fromGoal || !!cj.fromGoal
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (newClauses.length === 0) {
|
|
168
|
+
return { proven: false, steps, stats, termination: 'saturated' };
|
|
169
|
+
}
|
|
170
|
+
// Filtrar tautologías, subsumidas y duplicados; detectar cláusula vacía.
|
|
171
|
+
let progress = false;
|
|
172
|
+
for (const { clause, step, fromGoalDerived } of newClauses) {
|
|
173
|
+
stats.steps += 1;
|
|
174
|
+
if ((0, resolve_1.isTautology)(clause))
|
|
175
|
+
continue;
|
|
176
|
+
// Detectar cláusula vacía → refutación.
|
|
177
|
+
if (clause.literals.length === 0) {
|
|
178
|
+
steps.push(step);
|
|
179
|
+
return { proven: true, steps, stats, termination: 'refuted' };
|
|
180
|
+
}
|
|
181
|
+
// Subsumida por alguna existente?
|
|
182
|
+
const subsumedByExisting = clauses.some((c) => c.literals.length > 0 && (0, subsumption_1.subsumes)(c, clause));
|
|
183
|
+
if (subsumedByExisting) {
|
|
184
|
+
stats.subsumed += 1;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
// Duplicado alpha-eq?
|
|
188
|
+
const dup = clauses.some((c) => (0, subsumption_1.clausesAlphaEqual)(c, clause));
|
|
189
|
+
if (dup) {
|
|
190
|
+
stats.deduplicated += 1;
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
// Aceptada
|
|
194
|
+
const idx = clauses.length;
|
|
195
|
+
const marked = { ...clause, parents: step.from, fromGoal: fromGoalDerived };
|
|
196
|
+
clauses.push(marked);
|
|
197
|
+
sosFlag.set(idx, fromGoalDerived || strategy !== 'set-of-support');
|
|
198
|
+
steps.push(step);
|
|
199
|
+
progress = true;
|
|
200
|
+
}
|
|
201
|
+
if (!progress) {
|
|
202
|
+
return { proven: false, steps, stats, termination: 'saturated' };
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Helper que mapea `RefinementStrategy` a un short-name legible (sirve para
|
|
208
|
+
* logs y tests).
|
|
209
|
+
*/
|
|
210
|
+
function strategyLabel(s) {
|
|
211
|
+
switch (s) {
|
|
212
|
+
case 'binary': return 'Binary resolution';
|
|
213
|
+
case 'hyperresolution': return 'Hyperresolution';
|
|
214
|
+
case 'set-of-support': return 'Set-of-support';
|
|
215
|
+
case 'ordered': return 'Ordered resolution';
|
|
216
|
+
case 'unit-preference': return 'Unit preference';
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=prover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prover.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { FOLClause, Substitution } from './types';
|
|
2
|
+
export declare function resetRenameCounter(): void;
|
|
3
|
+
/**
|
|
4
|
+
* Renombra todas las variables de una cláusula con sufijos frescos, para
|
|
5
|
+
* evitar captura accidental al resolver con otra cláusula.
|
|
6
|
+
*/
|
|
7
|
+
export declare function renameClause(c: FOLClause): FOLClause;
|
|
8
|
+
/**
|
|
9
|
+
* Resolución binaria: une dos cláusulas eliminando un par de literales
|
|
10
|
+
* complementarias unificables. Devuelve cero o más resolventes (uno por par
|
|
11
|
+
* de literales complementarias que unifiquen).
|
|
12
|
+
*/
|
|
13
|
+
export declare function binaryResolve(a: FOLClause, b: FOLClause): Array<{
|
|
14
|
+
clause: FOLClause;
|
|
15
|
+
sub: Substitution;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Hyperresolución: en un solo paso, elimina **todas** las literales negativas
|
|
19
|
+
* de un "núcleo" (nucleus) usando cláusulas auxiliares positivas (electrons)
|
|
20
|
+
* que sean unitarias o tengan sólo literales positivas. El resultado es una
|
|
21
|
+
* cláusula con sólo literales positivas (positive hyperresolvent).
|
|
22
|
+
*
|
|
23
|
+
* `positive` aquí es una lista; en la práctica el caller pasa cláusulas
|
|
24
|
+
* positivas candidatas y la función produce todos los hyperresolventes
|
|
25
|
+
* posibles del núcleo contra ese conjunto. Para mantener la API del spec,
|
|
26
|
+
* exportamos `hyperresolve(positive, nucleus)` con la primera cláusula como
|
|
27
|
+
* electron (cubre el caso "3 units + nucleus" si se llama en cadena).
|
|
28
|
+
*/
|
|
29
|
+
export declare function hyperresolve(positive: FOLClause, nucleus: FOLClause): FOLClause[];
|
|
30
|
+
export declare function hyperresolveMany(positives: FOLClause[], nucleus: FOLClause): Array<{
|
|
31
|
+
clause: FOLClause;
|
|
32
|
+
sub: Substitution;
|
|
33
|
+
usedElectrons: number[];
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Factoring: si dos literales del mismo signo unifican, colapsarlas reduce la
|
|
37
|
+
* cláusula. Indispensable para completar la resolución.
|
|
38
|
+
*/
|
|
39
|
+
export declare function factor(c: FOLClause): FOLClause[];
|
|
40
|
+
export declare function dedupLiterals(c: FOLClause): FOLClause;
|
|
41
|
+
/** Detecta cláusulas tautológicas (P ∨ ¬P). */
|
|
42
|
+
export declare function isTautology(c: FOLClause): boolean;
|
|
43
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAuB,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5E,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAapD;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC,CA8BzG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,EAAE,CAEjF;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EAAE,EACtB,OAAO,EAAE,SAAS,GACjB,KAAK,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,YAAY,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyG1E;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAuBhD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAMrD;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAoBjD"}
|