@stevenvo780/st-lang 4.13.0 → 4.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/dist/ast/nodes.d.ts +50 -0
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/format/stnb/parser.d.ts +14 -0
- package/dist/format/stnb/parser.d.ts.map +1 -0
- package/dist/format/stnb/parser.js +123 -0
- package/dist/format/stnb/parser.js.map +1 -0
- package/dist/format/stnb/types.d.ts +45 -0
- package/dist/format/stnb/types.d.ts.map +1 -0
- package/dist/format/stnb/types.js +7 -0
- package/dist/format/stnb/types.js.map +1 -0
- package/dist/logic/profile-bridge/index.d.ts.map +1 -1
- package/dist/logic/profile-bridge/index.js +20 -3
- package/dist/logic/profile-bridge/index.js.map +1 -1
- package/dist/logic/profiles/classical/propositional.d.ts.map +1 -1
- package/dist/logic/profiles/classical/propositional.js.map +1 -1
- package/dist/logic/profiles/ctl/check.d.ts.map +1 -1
- package/dist/logic/profiles/ctl/check.js +21 -11
- package/dist/logic/profiles/ctl/check.js.map +1 -1
- package/dist/logic/profiles/ctl/witness.d.ts.map +1 -1
- package/dist/logic/profiles/ctl/witness.js +2 -0
- package/dist/logic/profiles/ctl/witness.js.map +1 -1
- package/dist/logic/profiles/description-logic/types.d.ts +15 -0
- package/dist/logic/profiles/description-logic/types.d.ts.map +1 -1
- package/dist/logic/profiles/description-logic/types.js +13 -0
- package/dist/logic/profiles/description-logic/types.js.map +1 -1
- package/dist/logic/profiles/hybrid-logic/types.d.ts +17 -0
- package/dist/logic/profiles/hybrid-logic/types.d.ts.map +1 -1
- package/dist/logic/profiles/hybrid-logic/types.js +17 -0
- package/dist/logic/profiles/hybrid-logic/types.js.map +1 -1
- package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts.map +1 -1
- package/dist/logic/profiles/intuitionistic-nj/kripke.js +8 -5
- package/dist/logic/profiles/intuitionistic-nj/kripke.js.map +1 -1
- package/dist/logic/profiles/ltl-sat/tableau.d.ts +31 -0
- package/dist/logic/profiles/ltl-sat/tableau.d.ts.map +1 -1
- package/dist/logic/profiles/ltl-sat/tableau.js +18 -0
- package/dist/logic/profiles/ltl-sat/tableau.js.map +1 -1
- package/dist/logic/profiles/ltl-sat/types.d.ts +15 -0
- package/dist/logic/profiles/ltl-sat/types.d.ts.map +1 -1
- package/dist/logic/profiles/ltl-sat/types.js +2 -1
- package/dist/logic/profiles/ltl-sat/types.js.map +1 -1
- package/dist/logic/profiles/modal-frame-axioms/formula.d.ts +10 -0
- package/dist/logic/profiles/modal-frame-axioms/formula.d.ts.map +1 -1
- package/dist/logic/profiles/modal-frame-axioms/formula.js +10 -0
- package/dist/logic/profiles/modal-frame-axioms/formula.js.map +1 -1
- package/dist/logic/profiles/mu-calculus/check.d.ts.map +1 -1
- package/dist/logic/profiles/mu-calculus/check.js +7 -4
- package/dist/logic/profiles/mu-calculus/check.js.map +1 -1
- package/dist/logic/profiles/natural-deduction-nk/formula.d.ts +8 -0
- package/dist/logic/profiles/natural-deduction-nk/formula.d.ts.map +1 -1
- package/dist/logic/profiles/natural-deduction-nk/formula.js +8 -0
- package/dist/logic/profiles/natural-deduction-nk/formula.js.map +1 -1
- package/dist/logic/profiles/quantum/index.d.ts.map +1 -1
- package/dist/logic/profiles/quantum/index.js +11 -8
- package/dist/logic/profiles/quantum/index.js.map +1 -1
- package/dist/logic/profiles/sequent-lj/index.d.ts +90 -0
- package/dist/logic/profiles/sequent-lj/index.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-lj/index.js +903 -0
- package/dist/logic/profiles/sequent-lj/index.js.map +1 -0
- package/dist/logic/profiles/shared/tableau-engine.d.ts.map +1 -1
- package/dist/logic/profiles/shared/tableau-engine.js +0 -17
- package/dist/logic/profiles/shared/tableau-engine.js.map +1 -1
- package/dist/namespaces/proof-systems.d.ts +1 -1
- package/dist/namespaces/proof-systems.d.ts.map +1 -1
- package/dist/namespaces/proof-systems.js.map +1 -1
- package/dist/namespaces/semantics.d.ts +1 -1
- package/dist/namespaces/semantics.d.ts.map +1 -1
- package/dist/namespaces/semantics.js.map +1 -1
- package/dist/proof-systems/distributed-exchange/index.d.ts +29 -0
- package/dist/proof-systems/distributed-exchange/index.d.ts.map +1 -1
- package/dist/proof-systems/distributed-exchange/index.js +18 -0
- package/dist/proof-systems/distributed-exchange/index.js.map +1 -1
- package/dist/proof-systems/fol-prover/types.d.ts +16 -0
- package/dist/proof-systems/fol-prover/types.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover/types.js +7 -0
- package/dist/proof-systems/fol-prover/types.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/index.d.ts +3 -3
- package/dist/proof-systems/fol-prover-advanced/index.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/index.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/ordering.js +1 -1
- package/dist/proof-systems/fol-prover-advanced/prover.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/prover.js +19 -12
- package/dist/proof-systems/fol-prover-advanced/prover.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/resolve.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/resolve.js +7 -7
- package/dist/proof-systems/fol-prover-advanced/resolve.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/subsumption.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/subsumption.js.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/types.d.ts +12 -0
- package/dist/proof-systems/fol-prover-advanced/types.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-advanced/unify.js +2 -2
- package/dist/proof-systems/fol-prover-equality/term-utils.d.ts +46 -0
- package/dist/proof-systems/fol-prover-equality/term-utils.d.ts.map +1 -1
- package/dist/proof-systems/fol-prover-equality/term-utils.js +46 -0
- package/dist/proof-systems/fol-prover-equality/term-utils.js.map +1 -1
- package/dist/proof-systems/proof-nets/correctness.d.ts.map +1 -1
- package/dist/proof-systems/proof-nets/correctness.js +24 -12
- package/dist/proof-systems/proof-nets/correctness.js.map +1 -1
- package/dist/proof-systems/proof-nets/types.d.ts +18 -0
- package/dist/proof-systems/proof-nets/types.d.ts.map +1 -1
- package/dist/proof-systems/proof-nets/types.js +6 -0
- package/dist/proof-systems/proof-nets/types.js.map +1 -1
- package/dist/proof-systems/tableau-framework/TableauProver.d.ts.map +1 -1
- package/dist/proof-systems/tableau-framework/TableauProver.js +5 -5
- package/dist/proof-systems/tableau-framework/TableauProver.js.map +1 -1
- package/dist/proof-systems/tableau-framework/propositional.d.ts.map +1 -1
- package/dist/proof-systems/tableau-framework/propositional.js +21 -21
- package/dist/proof-systems/tableau-framework/propositional.js.map +1 -1
- package/dist/reasoning/ban-logic/terms.d.ts +24 -0
- package/dist/reasoning/ban-logic/terms.d.ts.map +1 -1
- package/dist/reasoning/ban-logic/terms.js +24 -0
- package/dist/reasoning/ban-logic/terms.js.map +1 -1
- package/dist/reasoning/bayesian/factor.js +8 -8
- package/dist/reasoning/bayesian/factor.js.map +1 -1
- package/dist/reasoning/bayesian/inference.d.ts.map +1 -1
- package/dist/reasoning/bayesian/inference.js +11 -5
- package/dist/reasoning/bayesian/inference.js.map +1 -1
- package/dist/reasoning/combinatorics/generators.js.map +1 -1
- package/dist/reasoning/combinatorics/index.d.ts +3 -3
- package/dist/reasoning/combinatorics/index.d.ts.map +1 -1
- package/dist/reasoning/combinatorics/index.js.map +1 -1
- package/dist/reasoning/combinatorics/set-partitions.js.map +1 -1
- package/dist/reasoning/combinatorics/special-numbers.d.ts.map +1 -1
- package/dist/reasoning/combinatorics/special-numbers.js.map +1 -1
- package/dist/reasoning/constructive-analysis/cauchy.js +2 -2
- package/dist/reasoning/constructive-analysis/compact.js +1 -1
- package/dist/reasoning/constructive-analysis/continuity.d.ts.map +1 -1
- package/dist/reasoning/constructive-analysis/continuity.js +4 -4
- package/dist/reasoning/constructive-analysis/continuity.js.map +1 -1
- package/dist/reasoning/constructive-analysis/index.d.ts.map +1 -1
- package/dist/reasoning/constructive-analysis/index.js.map +1 -1
- package/dist/reasoning/constructive-analysis/ivt.d.ts.map +1 -1
- package/dist/reasoning/constructive-analysis/ivt.js +2 -2
- package/dist/reasoning/constructive-analysis/ivt.js.map +1 -1
- package/dist/reasoning/constructive-reals/index.d.ts.map +1 -1
- package/dist/reasoning/constructive-reals/index.js +4 -8
- package/dist/reasoning/constructive-reals/index.js.map +1 -1
- package/dist/reasoning/galois-fields/index.d.ts +64 -0
- package/dist/reasoning/galois-fields/index.d.ts.map +1 -1
- package/dist/reasoning/galois-fields/index.js +56 -6
- package/dist/reasoning/galois-fields/index.js.map +1 -1
- package/dist/reasoning/graph-theory/index.d.ts +31 -0
- package/dist/reasoning/graph-theory/index.d.ts.map +1 -1
- package/dist/reasoning/graph-theory/index.js +28 -10
- package/dist/reasoning/graph-theory/index.js.map +1 -1
- package/dist/reasoning/hoare-logic/index.d.ts +164 -0
- package/dist/reasoning/hoare-logic/index.d.ts.map +1 -0
- package/dist/reasoning/hoare-logic/index.js +561 -0
- package/dist/reasoning/hoare-logic/index.js.map +1 -0
- package/dist/reasoning/hyperreal/index.d.ts +30 -0
- package/dist/reasoning/hyperreal/index.d.ts.map +1 -1
- package/dist/reasoning/hyperreal/index.js +25 -0
- package/dist/reasoning/hyperreal/index.js.map +1 -1
- package/dist/reasoning/information-theory/index.d.ts +34 -0
- package/dist/reasoning/information-theory/index.d.ts.map +1 -1
- package/dist/reasoning/information-theory/index.js +27 -44
- package/dist/reasoning/information-theory/index.js.map +1 -1
- package/dist/reasoning/lemma-synthesis/index.d.ts +36 -0
- package/dist/reasoning/lemma-synthesis/index.d.ts.map +1 -1
- package/dist/reasoning/lemma-synthesis/index.js +12 -0
- package/dist/reasoning/lemma-synthesis/index.js.map +1 -1
- package/dist/reasoning/linear-algebra/index.d.ts +38 -0
- package/dist/reasoning/linear-algebra/index.d.ts.map +1 -1
- package/dist/reasoning/linear-algebra/index.js +34 -5
- package/dist/reasoning/linear-algebra/index.js.map +1 -1
- package/dist/reasoning/markov-logic/grounding.js +1 -1
- package/dist/reasoning/markov-logic/grounding.js.map +1 -1
- package/dist/reasoning/markov-logic/inference.js +1 -1
- package/dist/reasoning/markov-logic/inference.js.map +1 -1
- package/dist/reasoning/model-checking/index.d.ts +113 -0
- package/dist/reasoning/model-checking/index.d.ts.map +1 -0
- package/dist/reasoning/model-checking/index.js +786 -0
- package/dist/reasoning/model-checking/index.js.map +1 -0
- package/dist/reasoning/order-theory/index.d.ts +121 -0
- package/dist/reasoning/order-theory/index.d.ts.map +1 -0
- package/dist/reasoning/order-theory/index.js +562 -0
- package/dist/reasoning/order-theory/index.js.map +1 -0
- package/dist/reasoning/peano-arithmetic/index.d.ts +114 -0
- package/dist/reasoning/peano-arithmetic/index.d.ts.map +1 -0
- package/dist/reasoning/peano-arithmetic/index.js +650 -0
- package/dist/reasoning/peano-arithmetic/index.js.map +1 -0
- package/dist/reasoning/polynomial-ring/index.d.ts +80 -0
- package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -1
- package/dist/reasoning/polynomial-ring/index.js +75 -0
- package/dist/reasoning/polynomial-ring/index.js.map +1 -1
- package/dist/reasoning/separation-logic/index.d.ts +220 -0
- package/dist/reasoning/separation-logic/index.d.ts.map +1 -0
- package/dist/reasoning/separation-logic/index.js +779 -0
- package/dist/reasoning/separation-logic/index.js.map +1 -0
- package/dist/reasoning/set-theory/hf-functions.js +3 -3
- package/dist/reasoning/set-theory/hf-sets.js +1 -1
- package/dist/reasoning/set-theory/index.d.ts +3 -3
- package/dist/reasoning/set-theory/index.d.ts.map +1 -1
- package/dist/reasoning/set-theory/zfc-axioms.js +4 -4
- package/dist/reasoning/tactic-dsl/tactics.d.ts +87 -0
- package/dist/reasoning/tactic-dsl/tactics.d.ts.map +1 -1
- package/dist/reasoning/tactic-dsl/tactics.js +86 -36
- package/dist/reasoning/tactic-dsl/tactics.js.map +1 -1
- package/dist/reasoning/topology/index.d.ts +81 -0
- package/dist/reasoning/topology/index.d.ts.map +1 -1
- package/dist/reasoning/topology/index.js +69 -45
- package/dist/reasoning/topology/index.js.map +1 -1
- package/dist/reasoning/universal-algebra/index.d.ts +196 -0
- package/dist/reasoning/universal-algebra/index.d.ts.map +1 -0
- package/dist/reasoning/universal-algebra/index.js +865 -0
- package/dist/reasoning/universal-algebra/index.js.map +1 -0
- package/dist/runtime/countermodel-min/minimize.js +0 -0
- package/dist/runtime/countermodel-min/minimize.js.map +1 -1
- package/dist/runtime/csp-hoare/semantics.d.ts +12 -0
- package/dist/runtime/csp-hoare/semantics.d.ts.map +1 -1
- package/dist/runtime/csp-hoare/semantics.js +12 -0
- package/dist/runtime/csp-hoare/semantics.js.map +1 -1
- package/dist/runtime/symbolic-diff/constructors.d.ts +20 -0
- package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -1
- package/dist/runtime/symbolic-diff/constructors.js +20 -0
- package/dist/runtime/symbolic-diff/constructors.js.map +1 -1
- package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -1
- package/dist/runtime/term-rewriting/term-utils.js +33 -2
- package/dist/runtime/term-rewriting/term-utils.js.map +1 -1
- package/dist/runtime/typecheck/checker.js +2 -2
- package/dist/runtime/typecheck/checker.js.map +1 -1
- package/dist/runtime/typecheck/levenshtein.js +1 -1
- package/dist/runtime/typecheck/levenshtein.js.map +1 -1
- package/dist/semantics/categorical/fin-set.d.ts.map +1 -1
- package/dist/semantics/categorical/fin-set.js +8 -1
- package/dist/semantics/categorical/fin-set.js.map +1 -1
- package/dist/semantics/categorical/free.d.ts.map +1 -1
- package/dist/semantics/categorical/free.js +8 -2
- package/dist/semantics/categorical/free.js.map +1 -1
- package/dist/semantics/categorical/limits.d.ts.map +1 -1
- package/dist/semantics/categorical/limits.js +13 -4
- package/dist/semantics/categorical/limits.js.map +1 -1
- package/dist/semantics/categorical/monoidal.d.ts.map +1 -1
- package/dist/semantics/categorical/monoidal.js +3 -1
- package/dist/semantics/categorical/monoidal.js.map +1 -1
- package/dist/semantics/text-layer/compiler.d.ts +46 -0
- package/dist/semantics/text-layer/compiler.d.ts.map +1 -1
- package/dist/semantics/text-layer/compiler.js +46 -11
- package/dist/semantics/text-layer/compiler.js.map +1 -1
- package/dist/solver/cdcl-v2/index.d.ts +8 -0
- package/dist/solver/cdcl-v2/index.d.ts.map +1 -1
- package/dist/solver/cdcl-v2/index.js +8 -0
- package/dist/solver/cdcl-v2/index.js.map +1 -1
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts +0 -1
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -1
- package/dist/solver/smt-z3/z3-wasm-backend.js +2 -3
- package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -1
- package/dist/tests/agora-integration-fixtures.test.js +7 -2
- package/dist/tests/agora-integration-fixtures.test.js.map +1 -1
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js +123 -0
- package/dist/tests/coverage-90/coverage-90-cdcl-v2-deep.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js +172 -0
- package/dist/tests/coverage-90/coverage-90-certificate-rules.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js +326 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-extra.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js +418 -0
- package/dist/tests/coverage-90/coverage-90-interpreter-features.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js +162 -0
- package/dist/tests/coverage-90/coverage-90-modal-temporal.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.js +104 -0
- package/dist/tests/coverage-90/coverage-90-nk-prover.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.js +262 -0
- package/dist/tests/coverage-90/coverage-90-parser-deep.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.js +101 -0
- package/dist/tests/coverage-90/coverage-90-sat-engines.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js +219 -0
- package/dist/tests/coverage-90/coverage-90-sequent-lk.test.js.map +1 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts +2 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.d.ts.map +1 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js +154 -0
- package/dist/tests/coverage-90/coverage-90-smt-lib-parser.test.js.map +1 -0
- package/dist/tests/coverage-95/first-order.test.js.map +1 -1
- package/dist/tests/coverage-95/fol-prover.test.js.map +1 -1
- package/dist/tests/integration/cross-modules.test.js +43 -19
- package/dist/tests/integration/cross-modules.test.js.map +1 -1
- package/dist/tests/logic/ctl/check.test.js.map +1 -1
- package/dist/tests/logic/profile-bridge/translations.test.js +3 -3
- package/dist/tests/logic/profile-bridge/translations.test.js.map +1 -1
- package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts +2 -0
- package/dist/tests/logic/profiles/sequent-lj/lj.test.d.ts.map +1 -0
- package/dist/tests/logic/profiles/sequent-lj/lj.test.js +400 -0
- package/dist/tests/logic/profiles/sequent-lj/lj.test.js.map +1 -0
- package/dist/tests/logic/sequent-g3/prover.test.js.map +1 -1
- package/dist/tests/logic/substructural/prover.test.js.map +1 -1
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js +40 -13
- package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js.map +1 -1
- package/dist/tests/proof-systems/higher-order-unify/ho-unify.test.js.map +1 -1
- package/dist/tests/proof-systems/tableau-framework/tableau.test.js +8 -8
- package/dist/tests/proof-systems/tableau-framework/tableau.test.js.map +1 -1
- package/dist/tests/properties/agm.property.test.js +1 -1
- package/dist/tests/properties/agm.property.test.js.map +1 -1
- package/dist/tests/properties/anti-unification.property.test.js.map +1 -1
- package/dist/tests/properties/argumentation.property.test.js.map +1 -1
- package/dist/tests/properties/bisimulation.property.test.js.map +1 -1
- package/dist/tests/properties/cdcl.property.test.js.map +1 -1
- package/dist/tests/properties/coinduction.property.test.js.map +1 -1
- package/dist/tests/properties/constructive-reals.property.test.js.map +1 -1
- package/dist/tests/properties/csp.property.test.js +1 -3
- package/dist/tests/properties/csp.property.test.js.map +1 -1
- package/dist/tests/properties/generators.d.ts +1 -1
- package/dist/tests/properties/generators.d.ts.map +1 -1
- package/dist/tests/properties/generators.js +22 -30
- package/dist/tests/properties/generators.js.map +1 -1
- package/dist/tests/properties/intuit-nj.property.test.js +3 -1
- package/dist/tests/properties/intuit-nj.property.test.js.map +1 -1
- package/dist/tests/properties/lambda-calc.property.test.js.map +1 -1
- package/dist/tests/properties/mln.property.test.js +1 -3
- package/dist/tests/properties/mln.property.test.js.map +1 -1
- package/dist/tests/properties/planning.property.test.js.map +1 -1
- package/dist/tests/properties/profile-bridge.property.test.js.map +1 -1
- package/dist/tests/properties/theorem-cache.property.test.js.map +1 -1
- package/dist/tests/protocol-text-layer.test.js.map +1 -1
- package/dist/tests/reasoning/combinatorics/combinatorics.test.js +1 -1
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js +9 -9
- package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js.map +1 -1
- package/dist/tests/reasoning/hoare-logic/hoare-logic.test.d.ts +2 -0
- package/dist/tests/reasoning/hoare-logic/hoare-logic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/hoare-logic/hoare-logic.test.js +340 -0
- package/dist/tests/reasoning/hoare-logic/hoare-logic.test.js.map +1 -0
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js +80 -38
- package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js.map +1 -1
- package/dist/tests/reasoning/model-checking/model-checking.test.d.ts +2 -0
- package/dist/tests/reasoning/model-checking/model-checking.test.d.ts.map +1 -0
- package/dist/tests/reasoning/model-checking/model-checking.test.js +222 -0
- package/dist/tests/reasoning/model-checking/model-checking.test.js.map +1 -0
- package/dist/tests/reasoning/order-theory/order-theory.test.d.ts +2 -0
- package/dist/tests/reasoning/order-theory/order-theory.test.d.ts.map +1 -0
- package/dist/tests/reasoning/order-theory/order-theory.test.js +211 -0
- package/dist/tests/reasoning/order-theory/order-theory.test.js.map +1 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts +2 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.d.ts.map +1 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.js +159 -0
- package/dist/tests/reasoning/peano-arithmetic/peano.test.js.map +1 -0
- package/dist/tests/reasoning/separation-logic/separation-logic.test.d.ts +2 -0
- package/dist/tests/reasoning/separation-logic/separation-logic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/separation-logic/separation-logic.test.js +311 -0
- package/dist/tests/reasoning/separation-logic/separation-logic.test.js.map +1 -0
- package/dist/tests/reasoning/set-theory/hf-functions.test.js +11 -11
- package/dist/tests/reasoning/set-theory/zfc-axioms.test.js +1 -1
- package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts +2 -0
- package/dist/tests/reasoning/universal-algebra/universal-algebra.test.d.ts.map +1 -0
- package/dist/tests/reasoning/universal-algebra/universal-algebra.test.js +289 -0
- package/dist/tests/reasoning/universal-algebra/universal-algebra.test.js.map +1 -0
- package/dist/tests/semantics/text-layer-v2/claim-graph.test.js.map +1 -1
- package/dist/tests/solver/smt-lib/emitter.test.js.map +1 -1
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -1
- package/dist/tests/tooling/test-harness/test-harness.test.js +9 -6
- package/dist/tests/tooling/test-harness/test-harness.test.js.map +1 -1
- package/dist/tooling/lsp/types.d.ts +13 -0
- package/dist/tooling/lsp/types.d.ts.map +1 -1
- package/dist/tooling/lsp/types.js +1 -0
- package/dist/tooling/lsp/types.js.map +1 -1
- package/dist/tooling/test-harness/combinators.d.ts.map +1 -1
- package/dist/tooling/test-harness/combinators.js +4 -4
- package/dist/tooling/test-harness/combinators.js.map +1 -1
- package/dist/tooling/test-harness/coverage.js +1 -1
- package/dist/tooling/test-harness/generators.d.ts.map +1 -1
- package/dist/tooling/test-harness/generators.js.map +1 -1
- package/dist/tooling/test-harness/index.d.ts +1 -1
- package/dist/tooling/test-harness/index.d.ts.map +1 -1
- package/dist/tooling/test-harness/index.js.map +1 -1
- package/dist/tooling/test-harness/snapshot.d.ts.map +1 -1
- package/dist/tooling/test-harness/snapshot.js +2 -2
- package/dist/tooling/test-harness/snapshot.js.map +1 -1
- package/dist/type-theory/cubical/types.d.ts +25 -0
- package/dist/type-theory/cubical/types.d.ts.map +1 -1
- package/dist/type-theory/cubical/types.js +20 -0
- package/dist/type-theory/cubical/types.js.map +1 -1
- package/dist/type-theory/curry-howard/types.d.ts +27 -0
- package/dist/type-theory/curry-howard/types.d.ts.map +1 -1
- package/dist/type-theory/curry-howard/types.js +18 -0
- package/dist/type-theory/curry-howard/types.js.map +1 -1
- package/dist/type-theory/hindley-milner/substitution.d.ts +39 -0
- package/dist/type-theory/hindley-milner/substitution.d.ts.map +1 -1
- package/dist/type-theory/hindley-milner/substitution.js +37 -0
- package/dist/type-theory/hindley-milner/substitution.js.map +1 -1
- package/dist/type-theory/hindley-milner/types.d.ts +25 -0
- package/dist/type-theory/hindley-milner/types.d.ts.map +1 -1
- package/dist/type-theory/hindley-milner/types.js +22 -2
- package/dist/type-theory/hindley-milner/types.js.map +1 -1
- package/dist/type-theory/hol/rules.d.ts +36 -0
- package/dist/type-theory/hol/rules.d.ts.map +1 -1
- package/dist/type-theory/hol/rules.js +36 -0
- package/dist/type-theory/hol/rules.js.map +1 -1
- package/dist/type-theory/hott/types.d.ts +32 -0
- package/dist/type-theory/hott/types.d.ts.map +1 -1
- package/dist/type-theory/hott/types.js +31 -1
- package/dist/type-theory/hott/types.js.map +1 -1
- package/dist/type-theory/lambda-cube/types.d.ts +17 -0
- package/dist/type-theory/lambda-cube/types.d.ts.map +1 -1
- package/dist/type-theory/lambda-cube/types.js +13 -0
- package/dist/type-theory/lambda-cube/types.js.map +1 -1
- package/dist/type-theory/mltt/types.d.ts +19 -0
- package/dist/type-theory/mltt/types.d.ts.map +1 -1
- package/dist/type-theory/mltt/types.js +15 -1
- package/dist/type-theory/mltt/types.js.map +1 -1
- package/dist/type-theory/nbe/types.d.ts +21 -0
- package/dist/type-theory/nbe/types.d.ts.map +1 -1
- package/dist/type-theory/nbe/types.js +13 -1
- package/dist/type-theory/nbe/types.js.map +1 -1
- package/dist/type-theory/refinement-types/types.d.ts +38 -0
- package/dist/type-theory/refinement-types/types.d.ts.map +1 -1
- package/dist/type-theory/refinement-types/types.js +35 -0
- package/dist/type-theory/refinement-types/types.js.map +1 -1
- package/dist/type-theory/system-f/types.d.ts +30 -0
- package/dist/type-theory/system-f/types.d.ts.map +1 -1
- package/dist/type-theory/system-f/types.js +24 -3
- package/dist/type-theory/system-f/types.js.map +1 -1
- package/dist/types/index.d.ts +42 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/hyperreal/index.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU,GAAG,SAAS,CAEzE;AAED,eAAO,MAAM,OAAO,EAAE,SAA6C,CAAC;AACpE,eAAO,MAAM,MAAM,EAAE,SAA6C,CAAC;AACnE,eAAO,MAAM,UAAU,EAAE,SAA6C,CAAC;AAIvE,wBAAgB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAKzD;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAKzD;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAMzD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAS9D;AAED,wBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEtD;AAED,wBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEtD;AAED,wBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEtD;AAID,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAE3D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAE1D;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAE7C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAG/D;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAO1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,gBAAgB,EACnB,EAAE,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,EACpC,KAAK,CAAC,EAAE,gBAAgB,GACvB,gBAAgB,CA8BlB;AAID,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAK/C"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/hyperreal/index.ts"],"names":[],"mappings":"AAoCA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,MAAU,GAAG,SAAS,CAEzE;AAED,kCAAkC;AAClC,eAAO,MAAM,OAAO,EAAE,SAA6C,CAAC;AACpE,iCAAiC;AACjC,eAAO,MAAM,MAAM,EAAE,SAA6C,CAAC;AACnE,0CAA0C;AAC1C,eAAO,MAAM,UAAU,EAAE,SAA6C,CAAC;AAIvE,iDAAiD;AACjD,wBAAgB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAKzD;AAED,oDAAoD;AACpD,wBAAgB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAKzD;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAMzD;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAS9D;AAED,+EAA+E;AAC/E,wBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEtD;AAED,0DAA0D;AAC1D,wBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEtD;AAED,0DAA0D;AAC1D,wBAAgB,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAEtD;AAID,0CAA0C;AAC1C,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAE3D;AAED,qEAAqE;AACrE,wBAAgB,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAE1D;AAED,uCAAuC;AACvC,wBAAgB,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAE7C;AAED,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,CAG/D;AAID,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,gBAAgB,CAO1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,CAAC,EAAE,gBAAgB,EACnB,EAAE,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,EACpC,KAAK,CAAC,EAAE,gBAAgB,GACvB,gBAAgB,CA8BlB;AAID,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAK/C"}
|
|
@@ -51,25 +51,38 @@ exports.hrImplies = hrImplies;
|
|
|
51
51
|
exports.bound = bound;
|
|
52
52
|
exports.propagate = propagate;
|
|
53
53
|
exports.hrToString = hrToString;
|
|
54
|
+
/**
|
|
55
|
+
* Constructs a {@link Hyperreal} from its standard and optional infinitesimal parts.
|
|
56
|
+
* `hr(x)` produces the standard real `x + 0ε`.
|
|
57
|
+
*/
|
|
54
58
|
function hr(standard, infinitesimal = 0) {
|
|
55
59
|
return { standard, infinitesimal };
|
|
56
60
|
}
|
|
61
|
+
/** The hyperreal zero: 0 + 0ε. */
|
|
57
62
|
exports.HR_ZERO = { standard: 0, infinitesimal: 0 };
|
|
63
|
+
/** The hyperreal one: 1 + 0ε. */
|
|
58
64
|
exports.HR_ONE = { standard: 1, infinitesimal: 0 };
|
|
65
|
+
/** The formal infinitesimal ε: 0 + 1ε. */
|
|
59
66
|
exports.HR_EPSILON = { standard: 0, infinitesimal: 1 };
|
|
60
67
|
// ── Aritmética ──────────────────────────────────────────────
|
|
68
|
+
/** Returns `a + b` (component-wise addition). */
|
|
61
69
|
function add(a, b) {
|
|
62
70
|
return {
|
|
63
71
|
standard: a.standard + b.standard,
|
|
64
72
|
infinitesimal: a.infinitesimal + b.infinitesimal,
|
|
65
73
|
};
|
|
66
74
|
}
|
|
75
|
+
/** Returns `a - b` (component-wise subtraction). */
|
|
67
76
|
function sub(a, b) {
|
|
68
77
|
return {
|
|
69
78
|
standard: a.standard - b.standard,
|
|
70
79
|
infinitesimal: a.infinitesimal - b.infinitesimal,
|
|
71
80
|
};
|
|
72
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Returns `a * b`, discarding O(ε²) terms:
|
|
84
|
+
* `(a.s + a.i ε)(b.s + b.i ε) = a.s·b.s + (a.s·b.i + a.i·b.s)·ε`.
|
|
85
|
+
*/
|
|
73
86
|
function mul(a, b) {
|
|
74
87
|
// (a.s + a.i ε)(b.s + b.i ε) = a.s·b.s + (a.s·b.i + a.i·b.s)·ε + O(ε²)
|
|
75
88
|
return {
|
|
@@ -99,29 +112,40 @@ function compare(a, b) {
|
|
|
99
112
|
return -1;
|
|
100
113
|
return 0;
|
|
101
114
|
}
|
|
115
|
+
/** Returns `true` when `a` and `b` are equal under the lexicographic order. */
|
|
102
116
|
function eq(a, b) {
|
|
103
117
|
return compare(a, b) === 0;
|
|
104
118
|
}
|
|
119
|
+
/** Returns `true` when `a < b` in the hyperreal order. */
|
|
105
120
|
function lt(a, b) {
|
|
106
121
|
return compare(a, b) < 0;
|
|
107
122
|
}
|
|
123
|
+
/** Returns `true` when `a > b` in the hyperreal order. */
|
|
108
124
|
function gt(a, b) {
|
|
109
125
|
return compare(a, b) > 0;
|
|
110
126
|
}
|
|
111
127
|
// ── Lógica probabilística hiperreal ─────────────────────────
|
|
128
|
+
/** Probabilistic AND: `p ∧ q = p · q`. */
|
|
112
129
|
function hrAnd(p, q) {
|
|
113
130
|
return mul(p, q);
|
|
114
131
|
}
|
|
132
|
+
/** Probabilistic OR (inclusion-exclusion): `p ∨ q = p + q − p·q`. */
|
|
115
133
|
function hrOr(p, q) {
|
|
116
134
|
return sub(add(p, q), mul(p, q));
|
|
117
135
|
}
|
|
136
|
+
/** Probabilistic NOT: `¬p = 1 − p`. */
|
|
118
137
|
function hrNot(p) {
|
|
119
138
|
return sub(exports.HR_ONE, p);
|
|
120
139
|
}
|
|
140
|
+
/** Probabilistic implication: `p → q = ¬p ∨ q`. */
|
|
121
141
|
function hrImplies(p, q) {
|
|
122
142
|
// p → q ≡ ¬p ∨ q
|
|
123
143
|
return hrOr(hrNot(p), q);
|
|
124
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Constructs a validated {@link UncertaintyBound}.
|
|
147
|
+
* @throws When `lower > upper` in the hyperreal order.
|
|
148
|
+
*/
|
|
125
149
|
function bound(lower, upper) {
|
|
126
150
|
if (compare(lower, upper) > 0) {
|
|
127
151
|
throw new Error(`UncertaintyBound inválido: lower (${lower.standard}+${lower.infinitesimal}ε) > upper (${upper.standard}+${upper.infinitesimal}ε)`);
|
|
@@ -173,6 +197,7 @@ function propagate(b, op, other) {
|
|
|
173
197
|
}
|
|
174
198
|
}
|
|
175
199
|
// ── Utilidades de depuración ────────────────────────────────
|
|
200
|
+
/** Returns a human-readable string like `"0.9 + 3ε"` or `"1"` (when infinitesimal is 0). */
|
|
176
201
|
function hrToString(x) {
|
|
177
202
|
if (x.infinitesimal === 0)
|
|
178
203
|
return `${x.standard}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reasoning/hyperreal/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAC/D,2DAA2D;AAC3D,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,+DAA+D;AAC/D,mEAAmE;AACnE,oEAAoE;AACpE,0BAA0B;AAC1B,uEAAuE;AACvE,iDAAiD;AACjD,EAAE;AACF,qEAAqE;AACrE,gEAAgE;AAChE,gEAAgE;AAChE,oEAAoE;AACpE,wDAAwD;AACxD,EAAE;AACF,uEAAuE;AACvE,oDAAoD;AACpD,EAAE;AACF,mCAAmC;AACnC,kBAAkB;AAClB,oDAAoD;AACpD,mBAAmB;AACnB,iCAAiC;AACjC,EAAE;AACF,uCAAuC;AACvC,0DAA0D;AAC1D,oCAAoC;AACpC,oEAAoE;AACpE,8DAA8D;AAC9D,+DAA+D;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reasoning/hyperreal/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,59 @@
|
|
|
1
|
+
/** Distribución de probabilidad discreta sobre símbolos de tipo `T` (`Map<T, number>`, masa ≈ 1). */
|
|
1
2
|
export type Distribution<T> = Map<T, number>;
|
|
3
|
+
/**
|
|
4
|
+
* Distribución conjunta sobre pares (X, Y).
|
|
5
|
+
* Nota: `Map<[X, Y], number>` no des-duplica por igualdad estructural;
|
|
6
|
+
* el llamante debe garantizar un par por combinación (x, y).
|
|
7
|
+
*/
|
|
2
8
|
export type Joint<X, Y> = Map<[X, Y], number>;
|
|
9
|
+
/** Devuelve los símbolos con probabilidad estrictamente positiva (soporte de `p`). */
|
|
3
10
|
export declare function support<T>(p: Distribution<T>): T[];
|
|
11
|
+
/** `true` si todas las probabilidades son ≥ 0, finitas y su suma difiere de 1 en menos de `eps`. */
|
|
4
12
|
export declare function isValidDistribution<T>(p: Distribution<T>, eps?: number): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Reescala la distribución `p` para que su masa sea 1.
|
|
15
|
+
* @throws si alguna probabilidad es inválida o la masa total es 0.
|
|
16
|
+
*/
|
|
5
17
|
export declare function normalize<T>(p: Distribution<T>): Distribution<T>;
|
|
18
|
+
/** Base del logaritmo para entropías: `2` (bits, default), `'e'` (nats), `10` (hartleys), `'log'` (alias de 2). */
|
|
6
19
|
export type LogBase = 'log' | 'e' | 2 | 10;
|
|
20
|
+
/** Entropía de Shannon: H(p) = −Σ p(x)·log p(x). Convención: 0·log 0 = 0. */
|
|
7
21
|
export declare function shannonEntropy<T>(p: Distribution<T>, base?: LogBase): number;
|
|
22
|
+
/**
|
|
23
|
+
* Entropía de Rényi de orden `alpha` (α ≥ 0): H_α(p) = 1/(1−α)·log Σ p(x)^α.
|
|
24
|
+
* Límites: α=0 → max-entropy, α=1 → Shannon, α=2 → colisión, α→∞ → min-entropy.
|
|
25
|
+
* @throws si `alpha` es negativo o no finito.
|
|
26
|
+
*/
|
|
8
27
|
export declare function renyiEntropy<T>(p: Distribution<T>, alpha: number, base?: LogBase): number;
|
|
28
|
+
/** Min-entropy: −log max_x p(x). Mide la peor predictibilidad en un solo intento. */
|
|
9
29
|
export declare function minEntropy<T>(p: Distribution<T>, base?: LogBase): number;
|
|
30
|
+
/** Max-entropy (Hartley): log|soporte(p)|, el logaritmo del tamaño del soporte estricto. */
|
|
10
31
|
export declare function maxEntropy<T>(p: Distribution<T>, base?: LogBase): number;
|
|
32
|
+
/** Entropía de colisión: Rényi α=2 = −log Σ p(x)². Mide la probabilidad de dos muestras iguales. */
|
|
11
33
|
export declare function collisionEntropy<T>(p: Distribution<T>, base?: LogBase): number;
|
|
34
|
+
/** Divergencia KL: KL(p ‖ q) = Σ p(x)·log(p(x)/q(x)). Devuelve +∞ si p(x)>0 y q(x)=0. */
|
|
12
35
|
export declare function klDivergence<T>(p: Distribution<T>, q: Distribution<T>, base?: LogBase): number;
|
|
36
|
+
/** Divergencia Jensen-Shannon: JS(p,q) = ½ KL(p ‖ m) + ½ KL(q ‖ m), m = ½(p+q). Simétrica, ∈ [0, log 2]. */
|
|
13
37
|
export declare function jsDivergence<T>(p: Distribution<T>, q: Distribution<T>, base?: LogBase): number;
|
|
38
|
+
/** Distancia de variación total: TV(p,q) = ½ Σ |p(x) − q(x)|. ∈ [0, 1]. */
|
|
14
39
|
export declare function tvDistance<T>(p: Distribution<T>, q: Distribution<T>): number;
|
|
40
|
+
/** Distancia de Hellinger: H(p,q) = (1/√2)·√(Σ (√p(x) − √q(x))²). ∈ [0, 1]; 0 ⟺ p = q; 1 ⟺ soportes disjuntos. */
|
|
15
41
|
export declare function hellingerDistance<T>(p: Distribution<T>, q: Distribution<T>): number;
|
|
42
|
+
/** Cross-entropía: H(p,q) = −Σ p(x)·log q(x) = H(p) + KL(p ‖ q). Devuelve +∞ si p(x)>0 y q(x)=0. */
|
|
16
43
|
export declare function crossEntropy<T>(p: Distribution<T>, q: Distribution<T>, base?: LogBase): number;
|
|
44
|
+
/** Proyecta la distribución conjunta `j` sobre cada eje, devolviendo las marginales `X` e `Y`. */
|
|
17
45
|
export declare function jointToMarginals<X, Y>(j: Joint<X, Y>): {
|
|
18
46
|
X: Distribution<X>;
|
|
19
47
|
Y: Distribution<Y>;
|
|
20
48
|
};
|
|
49
|
+
/** Información mutua I(X;Y) = Σ p(x,y)·log(p(x,y)/(p(x)·p(y))) = H(X) + H(Y) − H(X,Y). */
|
|
21
50
|
export declare function mutualInformation<X, Y>(j: Joint<X, Y>, base?: LogBase): number;
|
|
51
|
+
/** Entropía condicional H(X|Y) o H(Y|X) según `condOn`. H(X|Y) = H(X,Y) − H(Y) ≥ 0. */
|
|
22
52
|
export declare function conditionalEntropy<X, Y>(j: Joint<X, Y>, condOn: 'X' | 'Y', base?: LogBase): number;
|
|
53
|
+
/**
|
|
54
|
+
* Devuelve los cuatro escalares {hX, hY, hXY, iXY} de la regla de la cadena.
|
|
55
|
+
* Verifica: H(X,Y) = H(X) + H(Y) − I(X;Y).
|
|
56
|
+
*/
|
|
23
57
|
export declare function chainRule<X, Y>(j: Joint<X, Y>, base?: LogBase): {
|
|
24
58
|
hX: number;
|
|
25
59
|
hY: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/information-theory/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/information-theory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,8 +42,7 @@ const EPS_DEFAULT = 1e-9;
|
|
|
42
42
|
// ------------------------------------------------------------
|
|
43
43
|
// Soporte y validación
|
|
44
44
|
// ------------------------------------------------------------
|
|
45
|
-
|
|
46
|
-
// orden en que aparecen en el Map (orden de inserción, estable).
|
|
45
|
+
/** Devuelve los símbolos con probabilidad estrictamente positiva (soporte de `p`). */
|
|
47
46
|
function support(p) {
|
|
48
47
|
const out = [];
|
|
49
48
|
for (const [k, v] of p) {
|
|
@@ -52,8 +51,7 @@ function support(p) {
|
|
|
52
51
|
}
|
|
53
52
|
return out;
|
|
54
53
|
}
|
|
55
|
-
|
|
56
|
-
// menos de `eps` de 1. Probabilidades negativas o NaN ⇒ false.
|
|
54
|
+
/** `true` si todas las probabilidades son ≥ 0, finitas y su suma difiere de 1 en menos de `eps`. */
|
|
57
55
|
function isValidDistribution(p, eps = EPS_DEFAULT) {
|
|
58
56
|
let sum = 0;
|
|
59
57
|
for (const v of p.values()) {
|
|
@@ -63,8 +61,10 @@ function isValidDistribution(p, eps = EPS_DEFAULT) {
|
|
|
63
61
|
}
|
|
64
62
|
return Math.abs(sum - 1) <= eps;
|
|
65
63
|
}
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Reescala la distribución `p` para que su masa sea 1.
|
|
66
|
+
* @throws si alguna probabilidad es inválida o la masa total es 0.
|
|
67
|
+
*/
|
|
68
68
|
function normalize(p) {
|
|
69
69
|
let sum = 0;
|
|
70
70
|
for (const v of p.values()) {
|
|
@@ -97,8 +97,7 @@ function logIn(base) {
|
|
|
97
97
|
// ------------------------------------------------------------
|
|
98
98
|
// Entropías
|
|
99
99
|
// ------------------------------------------------------------
|
|
100
|
-
|
|
101
|
-
// Convención lim_{x→0} x·log x = 0 ⇒ los símbolos con masa 0 no aportan.
|
|
100
|
+
/** Entropía de Shannon: H(p) = −Σ p(x)·log p(x). Convención: 0·log 0 = 0. */
|
|
102
101
|
function shannonEntropy(p, base = 2) {
|
|
103
102
|
const log = logIn(base);
|
|
104
103
|
let h = 0;
|
|
@@ -109,17 +108,11 @@ function shannonEntropy(p, base = 2) {
|
|
|
109
108
|
}
|
|
110
109
|
return h;
|
|
111
110
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
// α = 1 → Shannon (límite L'Hôpital — devolvemos Shannon)
|
|
118
|
-
// α = 2 → -log Σ p(x)^2 (entropía de colisión)
|
|
119
|
-
// α → ∞ → -log max p(x) (min-entropy)
|
|
120
|
-
//
|
|
121
|
-
// `alpha` debe ser un número real finito y ≥ 0. α negativos no son
|
|
122
|
-
// entropías de Rényi estándar y no se aceptan.
|
|
111
|
+
/**
|
|
112
|
+
* Entropía de Rényi de orden `alpha` (α ≥ 0): H_α(p) = 1/(1−α)·log Σ p(x)^α.
|
|
113
|
+
* Límites: α=0 → max-entropy, α=1 → Shannon, α=2 → colisión, α→∞ → min-entropy.
|
|
114
|
+
* @throws si `alpha` es negativo o no finito.
|
|
115
|
+
*/
|
|
123
116
|
function renyiEntropy(p, alpha, base = 2) {
|
|
124
117
|
if (!Number.isFinite(alpha) || alpha < 0) {
|
|
125
118
|
throw new Error('renyiEntropy: α debe ser finito y ≥ 0');
|
|
@@ -138,7 +131,7 @@ function renyiEntropy(p, alpha, base = 2) {
|
|
|
138
131
|
return 0;
|
|
139
132
|
return log(s) / (1 - alpha);
|
|
140
133
|
}
|
|
141
|
-
|
|
134
|
+
/** Min-entropy: −log max_x p(x). Mide la peor predictibilidad en un solo intento. */
|
|
142
135
|
function minEntropy(p, base = 2) {
|
|
143
136
|
const log = logIn(base);
|
|
144
137
|
let max = 0;
|
|
@@ -150,7 +143,7 @@ function minEntropy(p, base = 2) {
|
|
|
150
143
|
return 0;
|
|
151
144
|
return -log(max);
|
|
152
145
|
}
|
|
153
|
-
|
|
146
|
+
/** Max-entropy (Hartley): log|soporte(p)|, el logaritmo del tamaño del soporte estricto. */
|
|
154
147
|
function maxEntropy(p, base = 2) {
|
|
155
148
|
const log = logIn(base);
|
|
156
149
|
const n = support(p).length;
|
|
@@ -158,7 +151,7 @@ function maxEntropy(p, base = 2) {
|
|
|
158
151
|
return 0;
|
|
159
152
|
return log(n);
|
|
160
153
|
}
|
|
161
|
-
|
|
154
|
+
/** Entropía de colisión: Rényi α=2 = −log Σ p(x)². Mide la probabilidad de dos muestras iguales. */
|
|
162
155
|
function collisionEntropy(p, base = 2) {
|
|
163
156
|
const log = logIn(base);
|
|
164
157
|
let s = 0;
|
|
@@ -173,9 +166,7 @@ function collisionEntropy(p, base = 2) {
|
|
|
173
166
|
// ------------------------------------------------------------
|
|
174
167
|
// Divergencias y distancias
|
|
175
168
|
// ------------------------------------------------------------
|
|
176
|
-
|
|
177
|
-
// Convención: p(x)=0 aporta 0; p(x)>0 y q(x)=0 ⇒ +Infinity.
|
|
178
|
-
// Soporte sobre la unión de claves de p y q.
|
|
169
|
+
/** Divergencia KL: KL(p ‖ q) = Σ p(x)·log(p(x)/q(x)). Devuelve +∞ si p(x)>0 y q(x)=0. */
|
|
179
170
|
function klDivergence(p, q, base = 2) {
|
|
180
171
|
const log = logIn(base);
|
|
181
172
|
let d = 0;
|
|
@@ -189,8 +180,7 @@ function klDivergence(p, q, base = 2) {
|
|
|
189
180
|
}
|
|
190
181
|
return d;
|
|
191
182
|
}
|
|
192
|
-
|
|
193
|
-
// Simétrica y siempre finita en [0, log 2] (base 2 ⇒ [0, 1]).
|
|
183
|
+
/** Divergencia Jensen-Shannon: JS(p,q) = ½ KL(p ‖ m) + ½ KL(q ‖ m), m = ½(p+q). Simétrica, ∈ [0, log 2]. */
|
|
194
184
|
function jsDivergence(p, q, base = 2) {
|
|
195
185
|
const m = new Map();
|
|
196
186
|
for (const [k, v] of p)
|
|
@@ -202,7 +192,7 @@ function jsDivergence(p, q, base = 2) {
|
|
|
202
192
|
m.set(k, v / 2);
|
|
203
193
|
return 0.5 * klDivergence(p, m, base) + 0.5 * klDivergence(q, m, base);
|
|
204
194
|
}
|
|
205
|
-
|
|
195
|
+
/** Distancia de variación total: TV(p,q) = ½ Σ |p(x) − q(x)|. ∈ [0, 1]. */
|
|
206
196
|
function tvDistance(p, q) {
|
|
207
197
|
const keys = new Set();
|
|
208
198
|
for (const k of p.keys())
|
|
@@ -215,8 +205,7 @@ function tvDistance(p, q) {
|
|
|
215
205
|
}
|
|
216
206
|
return s / 2;
|
|
217
207
|
}
|
|
218
|
-
|
|
219
|
-
// ∈ [0, 1]; 0 sii p=q; 1 sii soportes disjuntos.
|
|
208
|
+
/** Distancia de Hellinger: H(p,q) = (1/√2)·√(Σ (√p(x) − √q(x))²). ∈ [0, 1]; 0 ⟺ p = q; 1 ⟺ soportes disjuntos. */
|
|
220
209
|
function hellingerDistance(p, q) {
|
|
221
210
|
const keys = new Set();
|
|
222
211
|
for (const k of p.keys())
|
|
@@ -235,8 +224,7 @@ function hellingerDistance(p, q) {
|
|
|
235
224
|
// ------------------------------------------------------------
|
|
236
225
|
// Cross-entropy
|
|
237
226
|
// ------------------------------------------------------------
|
|
238
|
-
|
|
239
|
-
// Devuelve +∞ si existe x con p(x) > 0 y q(x) = 0.
|
|
227
|
+
/** Cross-entropía: H(p,q) = −Σ p(x)·log q(x) = H(p) + KL(p ‖ q). Devuelve +∞ si p(x)>0 y q(x)=0. */
|
|
240
228
|
function crossEntropy(p, q, base = 2) {
|
|
241
229
|
const log = logIn(base);
|
|
242
230
|
let h = 0;
|
|
@@ -253,10 +241,7 @@ function crossEntropy(p, q, base = 2) {
|
|
|
253
241
|
// ------------------------------------------------------------
|
|
254
242
|
// Distribuciones conjuntas e información mutua
|
|
255
243
|
// ------------------------------------------------------------
|
|
256
|
-
|
|
257
|
-
// (marginales) tal que Σ joint(x,y) = X(x) = Σ_y joint(x,y), etc.
|
|
258
|
-
// Si dos claves de la conjunta tienen el mismo par lógico (mismas X y
|
|
259
|
-
// Y por referencia/valor), sus masas se suman en las marginales.
|
|
244
|
+
/** Proyecta la distribución conjunta `j` sobre cada eje, devolviendo las marginales `X` e `Y`. */
|
|
260
245
|
function jointToMarginals(j) {
|
|
261
246
|
const mX = new Map();
|
|
262
247
|
const mY = new Map();
|
|
@@ -278,10 +263,7 @@ function jointEntropy(j, base) {
|
|
|
278
263
|
}
|
|
279
264
|
return h;
|
|
280
265
|
}
|
|
281
|
-
|
|
282
|
-
// Equivalentemente: I(X;Y) = H(X) + H(Y) − H(X,Y).
|
|
283
|
-
// Usamos la forma sumatoria directa para mantener invariancia ante
|
|
284
|
-
// reordenamiento numérico de los marginales y evitar restas catastróficas.
|
|
266
|
+
/** Información mutua I(X;Y) = Σ p(x,y)·log(p(x,y)/(p(x)·p(y))) = H(X) + H(Y) − H(X,Y). */
|
|
285
267
|
function mutualInformation(j, base = 2) {
|
|
286
268
|
const log = logIn(base);
|
|
287
269
|
const { X: mX, Y: mY } = jointToMarginals(j);
|
|
@@ -299,8 +281,7 @@ function mutualInformation(j, base = 2) {
|
|
|
299
281
|
// dar -1e-16 por redondeo en distribuciones independientes).
|
|
300
282
|
return mi < 0 && mi > -1e-12 ? 0 : mi;
|
|
301
283
|
}
|
|
302
|
-
|
|
303
|
-
// H(X|Y) = H(X,Y) − H(Y); H(Y|X) = H(X,Y) − H(X). Ambas ≥ 0.
|
|
284
|
+
/** Entropía condicional H(X|Y) o H(Y|X) según `condOn`. H(X|Y) = H(X,Y) − H(Y) ≥ 0. */
|
|
304
285
|
function conditionalEntropy(j, condOn, base = 2) {
|
|
305
286
|
const hXY = jointEntropy(j, base);
|
|
306
287
|
const { X: mX, Y: mY } = jointToMarginals(j);
|
|
@@ -309,8 +290,10 @@ function conditionalEntropy(j, condOn, base = 2) {
|
|
|
309
290
|
const out = condOn === 'X' ? hXY - hY : hXY - hX;
|
|
310
291
|
return out < 0 && out > -1e-12 ? 0 : out;
|
|
311
292
|
}
|
|
312
|
-
|
|
313
|
-
|
|
293
|
+
/**
|
|
294
|
+
* Devuelve los cuatro escalares {hX, hY, hXY, iXY} de la regla de la cadena.
|
|
295
|
+
* Verifica: H(X,Y) = H(X) + H(Y) − I(X;Y).
|
|
296
|
+
*/
|
|
314
297
|
function chainRule(j, base = 2) {
|
|
315
298
|
const { X: mX, Y: mY } = jointToMarginals(j);
|
|
316
299
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reasoning/information-theory/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,8DAA8D;AAC9D,+DAA+D;AAC/D,EAAE;AACF,uEAAuE;AACvE,qBAAqB;AACrB,EAAE;AACF,wDAAwD;AACxD,wDAAwD;AACxD,2DAA2D;AAC3D,6DAA6D;AAC7D,EAAE;AACF,yBAAyB;AACzB,sEAAsE;AACtE,2DAA2D;AAC3D,wEAAwE;AACxE,2DAA2D;AAC3D,sEAAsE;AACtE,sEAAsE;AACtE,8DAA8D;;AAoB9D,0BAMC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reasoning/information-theory/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,8DAA8D;AAC9D,+DAA+D;AAC/D,EAAE;AACF,uEAAuE;AACvE,qBAAqB;AACrB,EAAE;AACF,wDAAwD;AACxD,wDAAwD;AACxD,2DAA2D;AAC3D,6DAA6D;AAC7D,EAAE;AACF,yBAAyB;AACzB,sEAAsE;AACtE,2DAA2D;AAC3D,wEAAwE;AACxE,2DAA2D;AAC3D,sEAAsE;AACtE,sEAAsE;AACtE,8DAA8D;;AAoB9D,0BAMC;AAGD,kDAOC;AAMD,8BAgBC;AA2BD,wCASC;AAOD,oCAcC;AAGD,gCAQC;AAGD,gCAKC;AAGD,4CAQC;AAOD,oCAUC;AAGD,oCAQC;AAGD,gCASC;AAGD,8CAYC;AAOD,oCAUC;AAOD,4CAUC;AAaD,8CAcC;AAGD,gDAWC;AAMD,8BAWC;AAxRD,qEAAqE;AACrE,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D,sFAAsF;AACtF,SAAgB,OAAO,CAAI,CAAkB;IAC3C,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oGAAoG;AACpG,SAAgB,mBAAmB,CAAI,CAAkB,EAAE,MAAc,WAAW;IAClF,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAI,CAAkB;IAC7C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAa,CAAC;IACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AASD,SAAS,KAAK,CAAC,IAAa;IAC1B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,KAAK,EAAE;YACL,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,CAAC;QACP,KAAK,KAAK,CAAC;QACX;YACE,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAE/D,6EAA6E;AAC7E,SAAgB,cAAc,CAAI,CAAkB,EAAE,OAAgB,CAAC;IACrE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAI,CAAkB,EAAE,KAAa,EAAE,OAAgB,CAAC;IAClF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,qFAAqF;AACrF,SAAgB,UAAU,CAAI,CAAkB,EAAE,OAAgB,CAAC;IACjE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,4FAA4F;AAC5F,SAAgB,UAAU,CAAI,CAAkB,EAAE,OAAgB,CAAC;IACjE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC;AAED,oGAAoG;AACpG,SAAgB,gBAAgB,CAAI,CAAkB,EAAE,OAAgB,CAAC;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,+DAA+D;AAC/D,4BAA4B;AAC5B,+DAA+D;AAE/D,yFAAyF;AACzF,SAAgB,YAAY,CAAI,CAAkB,EAAE,CAAkB,EAAE,OAAgB,CAAC;IACvF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,EAAE,KAAK,CAAC;YAAE,SAAS;QACvB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAC9C,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,4GAA4G;AAC5G,SAAgB,YAAY,CAAI,CAAkB,EAAE,CAAkB,EAAE,OAAgB,CAAC;IACvF,MAAM,CAAC,GAAG,IAAI,GAAG,EAAa,CAAC;IAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;QAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;QAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,qDAAqD;IACrD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;QAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAExC,OAAO,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,2EAA2E;AAC3E,SAAgB,UAAU,CAAI,CAAkB,EAAE,CAAkB;IAClE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,kHAAkH;AAClH,SAAgB,iBAAiB,CAAI,CAAkB,EAAE,CAAkB;IACzE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACnC,CAAC;AAED,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D,oGAAoG;AACpG,SAAgB,YAAY,CAAI,CAAkB,EAAE,CAAkB,EAAE,OAAgB,CAAC;IACvF,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,EAAE,KAAK,CAAC;YAAE,SAAS;QACvB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC;QAC9C,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,+DAA+D;AAC/D,+CAA+C;AAC/C,+DAA+D;AAE/D,kGAAkG;AAClG,SAAgB,gBAAgB,CAAO,CAAc;IACnD,MAAM,EAAE,GAAG,IAAI,GAAG,EAAa,CAAC;IAChC,MAAM,EAAE,GAAG,IAAI,GAAG,EAAa,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1B,CAAC;AAED,oEAAoE;AACpE,SAAS,YAAY,CAAO,CAAc,EAAE,IAAa;IACvD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,0FAA0F;AAC1F,SAAgB,iBAAiB,CAAO,CAAc,EAAE,OAAgB,CAAC;IACvE,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,IAAI,GAAG,IAAI,CAAC;YAAE,SAAS;QACvB,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;YAAE,SAAS;QACnC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,mEAAmE;IACnE,6DAA6D;IAC7D,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,uFAAuF;AACvF,SAAgB,kBAAkB,CAChC,CAAc,EACd,MAAiB,EACjB,OAAgB,CAAC;IAEjB,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;IACjD,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CACvB,CAAc,EACd,OAAgB,CAAC;IAEjB,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO;QACL,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC;QAC5B,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC;QAC5B,GAAG,EAAE,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC;QAC1B,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Algebraic signature for lemma synthesis: declares sorts, constants,
|
|
3
|
+
* functions (with argument and result sorts) and predicates.
|
|
4
|
+
* The synthesizer enumerates terms and conjectures equalities based on this.
|
|
5
|
+
*/
|
|
1
6
|
export interface Signature {
|
|
2
7
|
sorts: string[];
|
|
3
8
|
constants: Array<{
|
|
@@ -32,6 +37,10 @@ export type Term = {
|
|
|
32
37
|
args: Term[];
|
|
33
38
|
sort: string;
|
|
34
39
|
};
|
|
40
|
+
/**
|
|
41
|
+
* A synthesized equality conjecture `∀vars. termLeft = termRight`.
|
|
42
|
+
* `confidence = 1` means all random tests passed; smaller values indicate partial evidence.
|
|
43
|
+
*/
|
|
35
44
|
export interface Conjecture {
|
|
36
45
|
variables: Array<{
|
|
37
46
|
name: string;
|
|
@@ -42,9 +51,13 @@ export interface Conjecture {
|
|
|
42
51
|
termLeft?: Term;
|
|
43
52
|
termRight?: Term;
|
|
44
53
|
}
|
|
54
|
+
/** Options controlling synthesis depth, test count, and randomness. */
|
|
45
55
|
export interface SynthesisOptions {
|
|
56
|
+
/** Maximum term depth for enumeration (default 2). */
|
|
46
57
|
maxDepth?: number;
|
|
58
|
+
/** Number of random valuations to test each conjecture (default 100). */
|
|
47
59
|
numTests?: number;
|
|
60
|
+
/** Maximum number of conjectures to return (default 200). */
|
|
48
61
|
maxConjectures?: number;
|
|
49
62
|
/** Generador de valuaciones aleatorias por sort */
|
|
50
63
|
randomValue?: (sort: string, rng: () => number) => unknown;
|
|
@@ -53,6 +66,7 @@ export interface SynthesisOptions {
|
|
|
53
66
|
/** Semilla para PRNG determinístico */
|
|
54
67
|
seed?: number;
|
|
55
68
|
}
|
|
69
|
+
/** Serializes a term to a human-readable string, using infix notation for binary operators. */
|
|
56
70
|
export declare function termToString(t: Term): string;
|
|
57
71
|
declare function termKey(t: Term): string;
|
|
58
72
|
/** Lista las variables que aparecen en un término, en orden de primera aparición */
|
|
@@ -71,6 +85,11 @@ export declare function enumerateTerms(sig: Signature, sort: string, depth: numb
|
|
|
71
85
|
name: string;
|
|
72
86
|
sort: string;
|
|
73
87
|
}>): Term[];
|
|
88
|
+
/**
|
|
89
|
+
* Evaluates a term under a variable environment.
|
|
90
|
+
* Should throw when the term is ill-typed or outside the evaluator's domain;
|
|
91
|
+
* the synthesizer will skip conjectures whose terms cannot be evaluated.
|
|
92
|
+
*/
|
|
74
93
|
export type Evaluator = (term: Term, env: Record<string, unknown>) => unknown;
|
|
75
94
|
/**
|
|
76
95
|
* Sintetiza conjeturas de igualdad: para cada par de términos del
|
|
@@ -96,20 +115,37 @@ export declare function pruneConsequences(conjectures: Conjecture[]): Conjecture
|
|
|
96
115
|
declare function rewriteOnce(t: Term, pattern: Term, replacement: Term): Term;
|
|
97
116
|
declare function match(pattern: Term, target: Term, subst: Map<string, Term>): Map<string, Term> | null;
|
|
98
117
|
declare function applySubst(t: Term, subst: Map<string, Term>): Term;
|
|
118
|
+
/**
|
|
119
|
+
* An optional external prover that attempts to prove or disprove a conjecture.
|
|
120
|
+
* Returns `{ proven: true }` on success, `{ proven: false, counter }` on refutation,
|
|
121
|
+
* or `{ proven: false }` when the result is unknown.
|
|
122
|
+
*/
|
|
99
123
|
export type Prover = (conjecture: Conjecture) => {
|
|
100
124
|
proven: boolean;
|
|
101
125
|
counter?: unknown;
|
|
102
126
|
};
|
|
127
|
+
/** A conjecture annotated with its verification status after calling a {@link Prover}. */
|
|
103
128
|
export interface VerifiedConjecture extends Conjecture {
|
|
104
129
|
status: 'verified' | 'counter' | 'unknown';
|
|
105
130
|
counter?: unknown;
|
|
106
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Runs each conjecture through `prover`, annotating it with
|
|
134
|
+
* `'verified'`, `'counter'` (with a counterexample), or `'unknown'`.
|
|
135
|
+
* Prover exceptions are silently caught and treated as `'unknown'`.
|
|
136
|
+
*/
|
|
107
137
|
export declare function verifyConjectures(conjectures: Conjecture[], prover: Prover): VerifiedConjecture[];
|
|
138
|
+
/** Returns a {@link Signature} for the natural numbers (0, S, +, *). */
|
|
108
139
|
export declare function naturalNumbersSignature(): Signature;
|
|
140
|
+
/** Returns a {@link Signature} for booleans (T, F, ¬, ∧, ∨). */
|
|
109
141
|
export declare function booleansSignature(): Signature;
|
|
142
|
+
/** Returns a {@link Signature} for lists over Nat (nil, cons, ++, length). */
|
|
110
143
|
export declare function listsSignature(): Signature;
|
|
144
|
+
/** Sample {@link Evaluator} for the natural numbers signature. */
|
|
111
145
|
export declare const naturalsEvaluator: Evaluator;
|
|
146
|
+
/** Sample {@link Evaluator} for the booleans signature. */
|
|
112
147
|
export declare const booleansEvaluator: Evaluator;
|
|
148
|
+
/** Sample {@link Evaluator} for the lists-over-Nat signature. */
|
|
113
149
|
export declare const listsEvaluator: Evaluator;
|
|
114
150
|
export declare const __internals: {
|
|
115
151
|
termKey: typeof termKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/lemma-synthesis/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reasoning/lemma-synthesis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ exports.naturalNumbersSignature = naturalNumbersSignature;
|
|
|
32
32
|
exports.booleansSignature = booleansSignature;
|
|
33
33
|
exports.listsSignature = listsSignature;
|
|
34
34
|
// ── Helpers de impresión ────────────────────────────────────
|
|
35
|
+
/** Serializes a term to a human-readable string, using infix notation for binary operators. */
|
|
35
36
|
function termToString(t) {
|
|
36
37
|
switch (t.kind) {
|
|
37
38
|
case 'var':
|
|
@@ -488,6 +489,11 @@ function applySubst(t, subst) {
|
|
|
488
489
|
sort: t.sort,
|
|
489
490
|
};
|
|
490
491
|
}
|
|
492
|
+
/**
|
|
493
|
+
* Runs each conjecture through `prover`, annotating it with
|
|
494
|
+
* `'verified'`, `'counter'` (with a counterexample), or `'unknown'`.
|
|
495
|
+
* Prover exceptions are silently caught and treated as `'unknown'`.
|
|
496
|
+
*/
|
|
491
497
|
function verifyConjectures(conjectures, prover) {
|
|
492
498
|
return conjectures.map((c) => {
|
|
493
499
|
let r;
|
|
@@ -505,6 +511,7 @@ function verifyConjectures(conjectures, prover) {
|
|
|
505
511
|
});
|
|
506
512
|
}
|
|
507
513
|
// ── Signaturas de ejemplo ───────────────────────────────────
|
|
514
|
+
/** Returns a {@link Signature} for the natural numbers (0, S, +, *). */
|
|
508
515
|
function naturalNumbersSignature() {
|
|
509
516
|
return {
|
|
510
517
|
sorts: ['Nat'],
|
|
@@ -517,6 +524,7 @@ function naturalNumbersSignature() {
|
|
|
517
524
|
predicates: [],
|
|
518
525
|
};
|
|
519
526
|
}
|
|
527
|
+
/** Returns a {@link Signature} for booleans (T, F, ¬, ∧, ∨). */
|
|
520
528
|
function booleansSignature() {
|
|
521
529
|
return {
|
|
522
530
|
sorts: ['Bool'],
|
|
@@ -532,6 +540,7 @@ function booleansSignature() {
|
|
|
532
540
|
predicates: [],
|
|
533
541
|
};
|
|
534
542
|
}
|
|
543
|
+
/** Returns a {@link Signature} for lists over Nat (nil, cons, ++, length). */
|
|
535
544
|
function listsSignature() {
|
|
536
545
|
return {
|
|
537
546
|
sorts: ['List', 'Nat'],
|
|
@@ -549,6 +558,7 @@ function listsSignature() {
|
|
|
549
558
|
};
|
|
550
559
|
}
|
|
551
560
|
// ── Evaluadores de ejemplo (útiles para tests y demos) ──────
|
|
561
|
+
/** Sample {@link Evaluator} for the natural numbers signature. */
|
|
552
562
|
const naturalsEvaluator = (term, env) => {
|
|
553
563
|
const evalT = (t) => {
|
|
554
564
|
if (t.kind === 'var') {
|
|
@@ -571,6 +581,7 @@ const naturalsEvaluator = (term, env) => {
|
|
|
571
581
|
return evalT(term);
|
|
572
582
|
};
|
|
573
583
|
exports.naturalsEvaluator = naturalsEvaluator;
|
|
584
|
+
/** Sample {@link Evaluator} for the booleans signature. */
|
|
574
585
|
const booleansEvaluator = (term, env) => {
|
|
575
586
|
const evalT = (t) => {
|
|
576
587
|
if (t.kind === 'var') {
|
|
@@ -593,6 +604,7 @@ const booleansEvaluator = (term, env) => {
|
|
|
593
604
|
return evalT(term);
|
|
594
605
|
};
|
|
595
606
|
exports.booleansEvaluator = booleansEvaluator;
|
|
607
|
+
/** Sample {@link Evaluator} for the lists-over-Nat signature. */
|
|
596
608
|
const listsEvaluator = (term, env) => {
|
|
597
609
|
const evalT = (t) => {
|
|
598
610
|
if (t.kind === 'var') {
|