@stevenvo780/st-lang 4.6.0 → 4.8.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/api.d.ts +1 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +2 -2
- package/dist/api.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +52 -52
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -31
- package/dist/index.js.map +1 -1
- package/dist/logic/profile-bridge/index.d.ts +64 -0
- package/dist/logic/profile-bridge/index.d.ts.map +1 -0
- package/dist/logic/profile-bridge/index.js.map +1 -0
- package/dist/logic/profiles/aristotelian/syllogistic.d.ts +14 -0
- package/dist/logic/profiles/aristotelian/syllogistic.d.ts.map +1 -0
- package/dist/logic/profiles/aristotelian/syllogistic.js.map +1 -0
- package/dist/logic/profiles/arithmetic/index.d.ts +15 -0
- package/dist/logic/profiles/arithmetic/index.d.ts.map +1 -0
- package/dist/logic/profiles/arithmetic/index.js.map +1 -0
- package/dist/logic/profiles/classical/cdcl.d.ts +34 -0
- package/dist/logic/profiles/classical/cdcl.d.ts.map +1 -0
- package/dist/logic/profiles/classical/cdcl.js.map +1 -0
- package/dist/logic/profiles/classical/dpll.d.ts +20 -0
- package/dist/logic/profiles/classical/dpll.d.ts.map +1 -0
- package/dist/logic/profiles/classical/dpll.js.map +1 -0
- package/dist/logic/profiles/classical/first-order.d.ts +20 -0
- package/dist/logic/profiles/classical/first-order.d.ts.map +1 -0
- package/dist/logic/profiles/classical/first-order.js.map +1 -0
- package/dist/logic/profiles/classical/parallel-sat.d.ts.map +1 -0
- package/dist/logic/profiles/classical/parallel-sat.js.map +1 -0
- package/dist/logic/profiles/classical/propositional.d.ts +30 -0
- package/dist/logic/profiles/classical/propositional.d.ts.map +1 -0
- package/dist/logic/profiles/classical/propositional.js +2868 -0
- package/dist/logic/profiles/classical/propositional.js.map +1 -0
- package/dist/logic/profiles/classical/sat-preprocess.d.ts.map +1 -0
- package/dist/logic/profiles/classical/sat-preprocess.js.map +1 -0
- package/dist/logic/profiles/classical/undecidability-detector.d.ts +13 -0
- package/dist/logic/profiles/classical/undecidability-detector.d.ts.map +1 -0
- package/dist/logic/profiles/classical/undecidability-detector.js.map +1 -0
- package/dist/logic/profiles/ctl/check.d.ts.map +1 -0
- package/dist/logic/profiles/ctl/check.js.map +1 -0
- package/dist/logic/profiles/ctl/index.d.ts.map +1 -0
- package/dist/logic/profiles/ctl/index.js.map +1 -0
- package/dist/logic/profiles/ctl/types.d.ts.map +1 -0
- package/dist/logic/profiles/ctl/types.js.map +1 -0
- package/dist/logic/profiles/ctl/witness.d.ts.map +1 -0
- package/dist/logic/profiles/ctl/witness.js.map +1 -0
- package/dist/logic/profiles/default-logic/entailment.d.ts.map +1 -0
- package/dist/logic/profiles/default-logic/entailment.js.map +1 -0
- package/dist/logic/profiles/default-logic/extensions.d.ts.map +1 -0
- package/dist/logic/profiles/default-logic/extensions.js.map +1 -0
- package/dist/logic/profiles/default-logic/index.d.ts.map +1 -0
- package/dist/logic/profiles/default-logic/index.js.map +1 -0
- package/dist/logic/profiles/default-logic/types.d.ts.map +1 -0
- package/dist/logic/profiles/default-logic/types.js.map +1 -0
- package/dist/logic/profiles/deontic/standard.d.ts +10 -0
- package/dist/logic/profiles/deontic/standard.d.ts.map +1 -0
- package/dist/logic/profiles/deontic/standard.js.map +1 -0
- package/dist/logic/profiles/description-logic/index.d.ts.map +1 -0
- package/dist/logic/profiles/description-logic/index.js.map +1 -0
- package/dist/logic/profiles/description-logic/nnf.d.ts.map +1 -0
- package/dist/logic/profiles/description-logic/nnf.js.map +1 -0
- package/dist/logic/profiles/description-logic/tableau.d.ts.map +1 -0
- package/dist/logic/profiles/description-logic/tableau.js.map +1 -0
- package/dist/logic/profiles/description-logic/types.d.ts.map +1 -0
- package/dist/logic/profiles/description-logic/types.js.map +1 -0
- package/dist/logic/profiles/epistemic/s5.d.ts +10 -0
- package/dist/logic/profiles/epistemic/s5.d.ts.map +1 -0
- package/dist/logic/profiles/epistemic/s5.js.map +1 -0
- package/dist/logic/profiles/hybrid-logic/index.d.ts.map +1 -0
- package/dist/logic/profiles/hybrid-logic/index.js.map +1 -0
- package/dist/logic/profiles/hybrid-logic/sat.d.ts.map +1 -0
- package/dist/logic/profiles/hybrid-logic/sat.js.map +1 -0
- package/dist/logic/profiles/hybrid-logic/semantics.d.ts.map +1 -0
- package/dist/logic/profiles/hybrid-logic/semantics.js.map +1 -0
- package/dist/logic/profiles/hybrid-logic/types.d.ts.map +1 -0
- package/dist/logic/profiles/hybrid-logic/types.js.map +1 -0
- package/dist/logic/profiles/index.d.ts.map +1 -0
- package/dist/logic/profiles/index.js.map +1 -0
- package/dist/logic/profiles/interface.d.ts +11 -0
- package/dist/logic/profiles/interface.d.ts.map +1 -0
- package/dist/logic/profiles/interface.js.map +1 -0
- package/dist/logic/profiles/intuitionistic/propositional.d.ts +14 -0
- package/dist/logic/profiles/intuitionistic/propositional.d.ts.map +1 -0
- package/dist/logic/profiles/intuitionistic/propositional.js.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/formula.js.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/index.d.ts.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/index.js.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/kripke.js.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/prover.js.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/types.d.ts.map +1 -0
- package/dist/logic/profiles/intuitionistic-nj/types.js.map +1 -0
- package/dist/logic/profiles/ltl-sat/index.d.ts.map +1 -0
- package/dist/logic/profiles/ltl-sat/index.js.map +1 -0
- package/dist/logic/profiles/ltl-sat/sat.d.ts.map +1 -0
- package/dist/logic/profiles/ltl-sat/sat.js.map +1 -0
- package/dist/logic/profiles/ltl-sat/tableau.d.ts.map +1 -0
- package/dist/logic/profiles/ltl-sat/tableau.js.map +1 -0
- package/dist/logic/profiles/ltl-sat/types.d.ts.map +1 -0
- package/dist/logic/profiles/ltl-sat/types.js.map +1 -0
- package/dist/logic/profiles/many-valued/index.d.ts.map +1 -0
- package/dist/logic/profiles/many-valued/index.js.map +1 -0
- package/dist/logic/profiles/modal/k.d.ts +10 -0
- package/dist/logic/profiles/modal/k.d.ts.map +1 -0
- package/dist/logic/profiles/modal/k.js.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/formula.js.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/index.d.ts.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/index.js.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/systems.js.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/tableau.js.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/types.d.ts.map +1 -0
- package/dist/logic/profiles/modal-frame-axioms/types.js.map +1 -0
- package/dist/logic/profiles/mu-calculus/check.d.ts.map +1 -0
- package/dist/logic/profiles/mu-calculus/check.js.map +1 -0
- package/dist/logic/profiles/mu-calculus/ctl-translate.d.ts.map +1 -0
- package/dist/logic/profiles/mu-calculus/ctl-translate.js.map +1 -0
- package/dist/logic/profiles/mu-calculus/index.d.ts.map +1 -0
- package/dist/logic/profiles/mu-calculus/index.js.map +1 -0
- package/dist/logic/profiles/mu-calculus/types.d.ts.map +1 -0
- package/dist/logic/profiles/mu-calculus/types.js.map +1 -0
- package/dist/logic/profiles/mu-calculus/wellformed.d.ts.map +1 -0
- package/dist/logic/profiles/mu-calculus/wellformed.js.map +1 -0
- package/dist/logic/profiles/paraconsistent/belnap.d.ts +28 -0
- package/dist/logic/profiles/paraconsistent/belnap.d.ts.map +1 -0
- package/dist/logic/profiles/paraconsistent/belnap.js.map +1 -0
- package/dist/logic/profiles/probabilistic/basic.d.ts +18 -0
- package/dist/logic/profiles/probabilistic/basic.d.ts.map +1 -0
- package/dist/logic/profiles/probabilistic/basic.js.map +1 -0
- package/dist/logic/profiles/sequent-g3/index.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-g3/index.js.map +1 -0
- package/dist/logic/profiles/sequent-g3/latex.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-g3/latex.js.map +1 -0
- package/dist/logic/profiles/sequent-g3/normalize.d.ts +15 -0
- package/dist/logic/profiles/sequent-g3/normalize.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-g3/normalize.js.map +1 -0
- package/dist/logic/profiles/sequent-g3/prover.d.ts +16 -0
- package/dist/logic/profiles/sequent-g3/prover.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-g3/prover.js.map +1 -0
- package/dist/logic/profiles/sequent-g3/types.d.ts +30 -0
- package/dist/logic/profiles/sequent-g3/types.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-g3/types.js.map +1 -0
- package/dist/logic/profiles/sequent-lk/cut-elimination.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-lk/cut-elimination.js.map +1 -0
- package/dist/logic/profiles/sequent-lk/index.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-lk/index.js.map +1 -0
- package/dist/logic/profiles/sequent-lk/prover.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-lk/prover.js.map +1 -0
- package/dist/logic/profiles/sequent-lk/types.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-lk/types.js.map +1 -0
- package/dist/logic/profiles/sequent-lk/util.d.ts.map +1 -0
- package/dist/logic/profiles/sequent-lk/util.js.map +1 -0
- package/dist/logic/profiles/shared/base-profile.d.ts +22 -0
- package/dist/logic/profiles/shared/base-profile.d.ts.map +1 -0
- package/dist/logic/profiles/shared/base-profile.js +219 -0
- package/dist/logic/profiles/shared/base-profile.js.map +1 -0
- package/dist/logic/profiles/shared/tableau-engine.d.ts +73 -0
- package/dist/logic/profiles/shared/tableau-engine.d.ts.map +1 -0
- package/dist/logic/profiles/shared/tableau-engine.js +684 -0
- package/dist/logic/profiles/shared/tableau-engine.js.map +1 -0
- package/dist/logic/profiles/substructural/index.d.ts.map +1 -0
- package/dist/logic/profiles/substructural/index.js.map +1 -0
- package/dist/logic/profiles/substructural/prover.d.ts.map +1 -0
- package/dist/logic/profiles/substructural/prover.js.map +1 -0
- package/dist/logic/profiles/substructural/types.d.ts.map +1 -0
- package/dist/logic/profiles/substructural/types.js.map +1 -0
- package/dist/logic/profiles/temporal/ltl.d.ts +12 -0
- package/dist/logic/profiles/temporal/ltl.d.ts.map +1 -0
- package/dist/logic/profiles/temporal/ltl.js.map +1 -0
- package/dist/namespaces/logic.d.ts +28 -28
- package/dist/namespaces/logic.d.ts.map +1 -1
- package/dist/namespaces/logic.js +27 -27
- package/dist/namespaces/logic.js.map +1 -1
- package/dist/namespaces/proof-systems.d.ts +6 -6
- package/dist/namespaces/proof-systems.d.ts.map +1 -1
- package/dist/namespaces/proof-systems.js +6 -6
- package/dist/namespaces/proof-systems.js.map +1 -1
- package/dist/namespaces/reasoning.d.ts +9 -8
- package/dist/namespaces/reasoning.d.ts.map +1 -1
- package/dist/namespaces/reasoning.js +10 -8
- package/dist/namespaces/reasoning.js.map +1 -1
- package/dist/namespaces/semantics.d.ts +5 -5
- package/dist/namespaces/semantics.d.ts.map +1 -1
- package/dist/namespaces/semantics.js +5 -5
- package/dist/namespaces/semantics.js.map +1 -1
- package/dist/namespaces/solvers.d.ts +3 -3
- package/dist/namespaces/solvers.d.ts.map +1 -1
- package/dist/namespaces/solvers.js +3 -3
- package/dist/namespaces/solvers.js.map +1 -1
- package/dist/namespaces/type-theory.d.ts +8 -8
- package/dist/namespaces/type-theory.d.ts.map +1 -1
- package/dist/namespaces/type-theory.js +8 -8
- package/dist/namespaces/type-theory.js.map +1 -1
- package/dist/proof-systems/fol-prover/cnf.d.ts +10 -0
- package/dist/proof-systems/fol-prover/cnf.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover/cnf.js.map +1 -0
- package/dist/proof-systems/fol-prover/index.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover/index.js.map +1 -0
- package/dist/proof-systems/fol-prover/prove.d.ts +4 -0
- package/dist/proof-systems/fol-prover/prove.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover/prove.js.map +1 -0
- package/dist/proof-systems/fol-prover/resolve.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover/resolve.js.map +1 -0
- package/dist/proof-systems/fol-prover/types.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover/types.js.map +1 -0
- package/dist/proof-systems/fol-prover/unify.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover/unify.js.map +1 -0
- package/dist/proof-systems/fol-prover-equality/demodulate.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-equality/demodulate.js.map +1 -0
- package/dist/proof-systems/fol-prover-equality/index.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-equality/index.js.map +1 -0
- package/dist/proof-systems/fol-prover-equality/paramodulate.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-equality/paramodulate.js.map +1 -0
- package/dist/proof-systems/fol-prover-equality/prove.d.ts +7 -0
- package/dist/proof-systems/fol-prover-equality/prove.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-equality/prove.js.map +1 -0
- package/dist/proof-systems/fol-prover-equality/term-utils.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-equality/term-utils.js.map +1 -0
- package/dist/proof-systems/fol-prover-equality/types.d.ts.map +1 -0
- package/dist/proof-systems/fol-prover-equality/types.js.map +1 -0
- package/dist/proof-systems/higher-order-unify/index.d.ts.map +1 -0
- package/dist/proof-systems/higher-order-unify/index.js.map +1 -0
- package/dist/proof-systems/higher-order-unify/normalize.d.ts.map +1 -0
- package/dist/proof-systems/higher-order-unify/normalize.js.map +1 -0
- package/dist/proof-systems/higher-order-unify/pattern.d.ts.map +1 -0
- package/dist/proof-systems/higher-order-unify/pattern.js.map +1 -0
- package/dist/proof-systems/higher-order-unify/types.d.ts.map +1 -0
- package/dist/proof-systems/higher-order-unify/types.js.map +1 -0
- package/dist/proof-systems/higher-order-unify/unify.d.ts.map +1 -0
- package/dist/proof-systems/higher-order-unify/unify.js.map +1 -0
- package/dist/proof-systems/proof-exchange/index.d.ts +24 -0
- package/dist/proof-systems/proof-exchange/index.d.ts.map +1 -0
- package/dist/proof-systems/proof-exchange/index.js.map +1 -0
- package/dist/proof-systems/proof-minify/index.d.ts.map +1 -0
- package/dist/proof-systems/proof-minify/index.js.map +1 -0
- package/dist/proof-systems/proof-minify/minify.d.ts.map +1 -0
- package/dist/proof-systems/proof-minify/minify.js.map +1 -0
- package/dist/proof-systems/proof-minify/types.d.ts.map +1 -0
- package/dist/proof-systems/proof-minify/types.js.map +1 -0
- package/dist/proof-systems/proof-nets/construct.d.ts.map +1 -0
- package/dist/proof-systems/proof-nets/construct.js.map +1 -0
- package/dist/proof-systems/proof-nets/correctness.d.ts.map +1 -0
- package/dist/proof-systems/proof-nets/correctness.js.map +1 -0
- package/dist/proof-systems/proof-nets/cut-elim.d.ts.map +1 -0
- package/dist/proof-systems/proof-nets/cut-elim.js.map +1 -0
- package/dist/proof-systems/proof-nets/index.d.ts.map +1 -0
- package/dist/proof-systems/proof-nets/index.js.map +1 -0
- package/dist/proof-systems/proof-nets/types.d.ts.map +1 -0
- package/dist/proof-systems/proof-nets/types.js.map +1 -0
- package/dist/proof-systems/tableau-framework/TableauProver.d.ts.map +1 -0
- package/dist/proof-systems/tableau-framework/TableauProver.js.map +1 -0
- package/dist/proof-systems/tableau-framework/index.d.ts.map +1 -0
- package/dist/proof-systems/tableau-framework/index.js.map +1 -0
- package/dist/proof-systems/tableau-framework/propositional.d.ts.map +1 -0
- package/dist/proof-systems/tableau-framework/propositional.js.map +1 -0
- package/dist/proof-systems/tableau-framework/types.d.ts.map +1 -0
- package/dist/proof-systems/tableau-framework/types.js.map +1 -0
- package/dist/protocol/handler.js +1 -1
- package/dist/protocol/handler.js.map +1 -1
- package/dist/reasoning/abduction/entails.d.ts.map +1 -0
- package/dist/reasoning/abduction/entails.js.map +1 -0
- package/dist/reasoning/abduction/find.d.ts.map +1 -0
- package/dist/reasoning/abduction/find.js.map +1 -0
- package/dist/reasoning/abduction/index.d.ts.map +1 -0
- package/dist/reasoning/abduction/index.js.map +1 -0
- package/dist/reasoning/abduction/types.d.ts.map +1 -0
- package/dist/reasoning/abduction/types.js.map +1 -0
- package/dist/reasoning/argumentation/dot.d.ts.map +1 -0
- package/dist/reasoning/argumentation/dot.js.map +1 -0
- package/dist/reasoning/argumentation/extensions.d.ts.map +1 -0
- package/dist/reasoning/argumentation/extensions.js.map +1 -0
- package/dist/reasoning/argumentation/framework.d.ts.map +1 -0
- package/dist/reasoning/argumentation/framework.js.map +1 -0
- package/dist/reasoning/argumentation/index.d.ts.map +1 -0
- package/dist/reasoning/argumentation/index.js.map +1 -0
- package/dist/reasoning/argumentation/types.d.ts.map +1 -0
- package/dist/reasoning/argumentation/types.js.map +1 -0
- package/dist/reasoning/bayesian/factor.d.ts.map +1 -0
- package/dist/reasoning/bayesian/factor.js.map +1 -0
- package/dist/reasoning/bayesian/index.d.ts.map +1 -0
- package/dist/reasoning/bayesian/index.js.map +1 -0
- package/dist/reasoning/bayesian/inference.d.ts.map +1 -0
- package/dist/reasoning/bayesian/inference.js.map +1 -0
- package/dist/reasoning/bayesian/types.d.ts.map +1 -0
- package/dist/reasoning/bayesian/types.js.map +1 -0
- package/dist/reasoning/belief-revision/agm.d.ts.map +1 -0
- package/dist/reasoning/belief-revision/agm.js.map +1 -0
- package/dist/reasoning/belief-revision/index.d.ts.map +1 -0
- package/dist/reasoning/belief-revision/index.js.map +1 -0
- package/dist/reasoning/belief-revision/parser.d.ts.map +1 -0
- package/dist/reasoning/belief-revision/parser.js.map +1 -0
- package/dist/reasoning/belief-revision/sat.d.ts.map +1 -0
- package/dist/reasoning/belief-revision/sat.js.map +1 -0
- package/dist/reasoning/belief-revision/types.d.ts.map +1 -0
- package/dist/reasoning/belief-revision/types.js.map +1 -0
- package/dist/reasoning/citation-reasoning/derive.d.ts.map +1 -0
- package/dist/reasoning/citation-reasoning/derive.js.map +1 -0
- package/dist/reasoning/citation-reasoning/index.d.ts.map +1 -0
- package/dist/reasoning/citation-reasoning/index.js.map +1 -0
- package/dist/reasoning/citation-reasoning/types.d.ts.map +1 -0
- package/dist/reasoning/citation-reasoning/types.js.map +1 -0
- package/dist/reasoning/combinatorial-games/index.d.ts +105 -0
- package/dist/reasoning/combinatorial-games/index.d.ts.map +1 -0
- package/dist/reasoning/combinatorial-games/index.js +377 -0
- package/dist/reasoning/combinatorial-games/index.js.map +1 -0
- package/dist/reasoning/constructive-reals/index.d.ts.map +1 -0
- package/dist/reasoning/constructive-reals/index.js.map +1 -0
- package/dist/reasoning/fca/context.d.ts.map +1 -0
- package/dist/reasoning/fca/context.js.map +1 -0
- package/dist/reasoning/fca/implications.d.ts.map +1 -0
- package/dist/reasoning/fca/implications.js.map +1 -0
- package/dist/reasoning/fca/index.d.ts.map +1 -0
- package/dist/reasoning/fca/index.js.map +1 -0
- package/dist/reasoning/fca/lattice.d.ts.map +1 -0
- package/dist/reasoning/fca/lattice.js.map +1 -0
- package/dist/reasoning/fca/next-closure.d.ts.map +1 -0
- package/dist/reasoning/fca/next-closure.js.map +1 -0
- package/dist/reasoning/fca/types.d.ts.map +1 -0
- package/dist/reasoning/fca/types.js.map +1 -0
- package/dist/reasoning/game-theory/common-games.d.ts.map +1 -0
- package/dist/reasoning/game-theory/common-games.js.map +1 -0
- package/dist/reasoning/game-theory/dominance.d.ts.map +1 -0
- package/dist/reasoning/game-theory/dominance.js.map +1 -0
- package/dist/reasoning/game-theory/index.d.ts.map +1 -0
- package/dist/reasoning/game-theory/index.js.map +1 -0
- package/dist/reasoning/game-theory/lemke-howson.d.ts.map +1 -0
- package/dist/reasoning/game-theory/lemke-howson.js.map +1 -0
- package/dist/reasoning/game-theory/linalg.d.ts.map +1 -0
- package/dist/reasoning/game-theory/linalg.js.map +1 -0
- package/dist/reasoning/game-theory/pure-nash.d.ts.map +1 -0
- package/dist/reasoning/game-theory/pure-nash.js.map +1 -0
- package/dist/reasoning/game-theory/support-enumeration.d.ts.map +1 -0
- package/dist/reasoning/game-theory/support-enumeration.js.map +1 -0
- package/dist/reasoning/game-theory/types.d.ts.map +1 -0
- package/dist/reasoning/game-theory/types.js.map +1 -0
- package/dist/reasoning/hyperreal/index.d.ts.map +1 -0
- package/dist/reasoning/hyperreal/index.js.map +1 -0
- package/dist/reasoning/information-theory/index.d.ts.map +1 -0
- package/dist/reasoning/information-theory/index.js.map +1 -0
- package/dist/reasoning/lemma-synthesis/index.d.ts.map +1 -0
- package/dist/reasoning/lemma-synthesis/index.js.map +1 -0
- package/dist/reasoning/markov-logic/grounding.d.ts.map +1 -0
- package/dist/reasoning/markov-logic/grounding.js.map +1 -0
- package/dist/reasoning/markov-logic/index.d.ts.map +1 -0
- package/dist/reasoning/markov-logic/index.js.map +1 -0
- package/dist/reasoning/markov-logic/inference.d.ts.map +1 -0
- package/dist/reasoning/markov-logic/inference.js.map +1 -0
- package/dist/reasoning/markov-logic/parser.d.ts.map +1 -0
- package/dist/reasoning/markov-logic/parser.js.map +1 -0
- package/dist/reasoning/markov-logic/types.d.ts.map +1 -0
- package/dist/reasoning/markov-logic/types.js.map +1 -0
- package/dist/reasoning/mechanism-design/auctions.d.ts +49 -0
- package/dist/reasoning/mechanism-design/auctions.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/auctions.js +179 -0
- package/dist/reasoning/mechanism-design/auctions.js.map +1 -0
- package/dist/reasoning/mechanism-design/index.d.ts +5 -0
- package/dist/reasoning/mechanism-design/index.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/index.js +39 -0
- package/dist/reasoning/mechanism-design/index.js.map +1 -0
- package/dist/reasoning/mechanism-design/myerson.d.ts +64 -0
- package/dist/reasoning/mechanism-design/myerson.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/myerson.js +253 -0
- package/dist/reasoning/mechanism-design/myerson.js.map +1 -0
- package/dist/reasoning/mechanism-design/types.d.ts +44 -0
- package/dist/reasoning/mechanism-design/types.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/types.js +22 -0
- package/dist/reasoning/mechanism-design/types.js.map +1 -0
- package/dist/reasoning/mechanism-design/vcg.d.ts +29 -0
- package/dist/reasoning/mechanism-design/vcg.d.ts.map +1 -0
- package/dist/reasoning/mechanism-design/vcg.js +305 -0
- package/dist/reasoning/mechanism-design/vcg.js.map +1 -0
- package/dist/reasoning/optimization/branch-and-bound.d.ts.map +1 -0
- package/dist/reasoning/optimization/branch-and-bound.js.map +1 -0
- package/dist/reasoning/optimization/index.d.ts.map +1 -0
- package/dist/reasoning/optimization/index.js.map +1 -0
- package/dist/reasoning/optimization/simplex.d.ts.map +1 -0
- package/dist/reasoning/optimization/simplex.js.map +1 -0
- package/dist/reasoning/optimization/standard-form.d.ts.map +1 -0
- package/dist/reasoning/optimization/standard-form.js.map +1 -0
- package/dist/reasoning/optimization/types.d.ts.map +1 -0
- package/dist/reasoning/optimization/types.js.map +1 -0
- package/dist/reasoning/planning/astar.d.ts.map +1 -0
- package/dist/reasoning/planning/astar.js.map +1 -0
- package/dist/reasoning/planning/bfs.d.ts.map +1 -0
- package/dist/reasoning/planning/bfs.js.map +1 -0
- package/dist/reasoning/planning/ground.d.ts.map +1 -0
- package/dist/reasoning/planning/ground.js.map +1 -0
- package/dist/reasoning/planning/heuristic.d.ts.map +1 -0
- package/dist/reasoning/planning/heuristic.js.map +1 -0
- package/dist/reasoning/planning/index.d.ts.map +1 -0
- package/dist/reasoning/planning/index.js.map +1 -0
- package/dist/reasoning/planning/types.d.ts.map +1 -0
- package/dist/reasoning/planning/types.js.map +1 -0
- package/dist/reasoning/probabilistic/distributions.d.ts +44 -0
- package/dist/reasoning/probabilistic/distributions.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/distributions.js +207 -0
- package/dist/reasoning/probabilistic/distributions.js.map +1 -0
- package/dist/reasoning/probabilistic/examples.d.ts +31 -0
- package/dist/reasoning/probabilistic/examples.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/examples.js +85 -0
- package/dist/reasoning/probabilistic/examples.js.map +1 -0
- package/dist/reasoning/probabilistic/index.d.ts +6 -0
- package/dist/reasoning/probabilistic/index.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/index.js +42 -0
- package/dist/reasoning/probabilistic/index.js.map +1 -0
- package/dist/reasoning/probabilistic/inference.d.ts +45 -0
- package/dist/reasoning/probabilistic/inference.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/inference.js +579 -0
- package/dist/reasoning/probabilistic/inference.js.map +1 -0
- package/dist/reasoning/probabilistic/types.d.ts +153 -0
- package/dist/reasoning/probabilistic/types.d.ts.map +1 -0
- package/dist/reasoning/probabilistic/types.js +37 -0
- package/dist/reasoning/probabilistic/types.js.map +1 -0
- package/dist/reasoning/tactic-dsl/combinators.d.ts.map +1 -0
- package/dist/reasoning/tactic-dsl/combinators.js.map +1 -0
- package/dist/reasoning/tactic-dsl/index.d.ts.map +1 -0
- package/dist/reasoning/tactic-dsl/index.js.map +1 -0
- package/dist/reasoning/tactic-dsl/tactics.d.ts.map +1 -0
- package/dist/reasoning/tactic-dsl/tactics.js.map +1 -0
- package/dist/reasoning/tactic-dsl/types.d.ts.map +1 -0
- package/dist/reasoning/tactic-dsl/types.js.map +1 -0
- package/dist/repl/repl.js +2 -2
- package/dist/repl/repl.js.map +1 -1
- package/dist/runtime/bdd/index.d.ts.map +1 -0
- package/dist/runtime/bdd/index.js.map +1 -0
- package/dist/runtime/bdd/manager.d.ts.map +1 -0
- package/dist/runtime/bdd/manager.js.map +1 -0
- package/dist/runtime/bdd/types.d.ts.map +1 -0
- package/dist/runtime/bdd/types.js.map +1 -0
- package/dist/runtime/cross-system-compare.d.ts +1 -1
- package/dist/runtime/cross-system-compare.d.ts.map +1 -1
- package/dist/runtime/csp-hoare/analysis.d.ts.map +1 -0
- package/dist/runtime/csp-hoare/analysis.js.map +1 -0
- package/dist/runtime/csp-hoare/examples.d.ts.map +1 -0
- package/dist/runtime/csp-hoare/examples.js.map +1 -0
- package/dist/runtime/csp-hoare/index.d.ts.map +1 -0
- package/dist/runtime/csp-hoare/index.js.map +1 -0
- package/dist/runtime/csp-hoare/semantics.d.ts.map +1 -0
- package/dist/runtime/csp-hoare/semantics.js.map +1 -0
- package/dist/runtime/csp-hoare/types.d.ts.map +1 -0
- package/dist/runtime/csp-hoare/types.js.map +1 -0
- package/dist/runtime/fallacies.d.ts +1 -1
- package/dist/runtime/fallacies.d.ts.map +1 -1
- package/dist/runtime/interpreter.d.ts +1 -1
- package/dist/runtime/interpreter.d.ts.map +1 -1
- package/dist/runtime/interpreter.js +5 -5
- package/dist/runtime/interpreter.js.map +1 -1
- package/dist/runtime/parallel/index.d.ts +1 -1
- package/dist/runtime/parallel/index.d.ts.map +1 -1
- package/dist/runtime/parallel/index.js +2 -2
- package/dist/runtime/parallel/index.js.map +1 -1
- package/dist/runtime/parallel/worker.d.ts +1 -1
- package/dist/runtime/parallel/worker.d.ts.map +1 -1
- package/dist/runtime/parallel/worker.js +2 -2
- package/dist/runtime/parallel/worker.js.map +1 -1
- package/dist/runtime/streaming/stream-eval.d.ts +1 -1
- package/dist/runtime/streaming/stream-eval.d.ts.map +1 -1
- package/dist/runtime/streaming/stream-eval.js +3 -3
- package/dist/runtime/streaming/stream-eval.js.map +1 -1
- package/dist/semantics/categorical/fin-set.d.ts.map +1 -0
- package/dist/semantics/categorical/fin-set.js.map +1 -0
- package/dist/semantics/categorical/free.d.ts.map +1 -0
- package/dist/semantics/categorical/free.js.map +1 -0
- package/dist/semantics/categorical/functor.d.ts.map +1 -0
- package/dist/semantics/categorical/functor.js.map +1 -0
- package/dist/semantics/categorical/index.d.ts.map +1 -0
- package/dist/semantics/categorical/index.js.map +1 -0
- package/dist/semantics/categorical/limits.d.ts.map +1 -0
- package/dist/semantics/categorical/limits.js.map +1 -0
- package/dist/semantics/categorical/monoidal.d.ts.map +1 -0
- package/dist/semantics/categorical/monoidal.js.map +1 -0
- package/dist/semantics/categorical/poset.d.ts.map +1 -0
- package/dist/semantics/categorical/poset.js.map +1 -0
- package/dist/semantics/categorical/types.d.ts.map +1 -0
- package/dist/semantics/categorical/types.js.map +1 -0
- package/dist/semantics/coinduction/index.d.ts.map +1 -0
- package/dist/semantics/coinduction/index.js.map +1 -0
- package/dist/semantics/game-semantics/convert.d.ts +4 -0
- package/dist/semantics/game-semantics/convert.d.ts.map +1 -0
- package/dist/semantics/game-semantics/convert.js +28 -0
- package/dist/semantics/game-semantics/convert.js.map +1 -0
- package/dist/semantics/game-semantics/index.d.ts.map +1 -0
- package/dist/semantics/game-semantics/index.js.map +1 -0
- package/dist/semantics/game-semantics/strategy.d.ts.map +1 -0
- package/dist/semantics/game-semantics/strategy.js +336 -0
- package/dist/semantics/game-semantics/strategy.js.map +1 -0
- package/dist/semantics/game-semantics/types.d.ts.map +1 -0
- package/dist/semantics/game-semantics/types.js.map +1 -0
- package/dist/semantics/text-layer/compiler.d.ts +18 -0
- package/dist/semantics/text-layer/compiler.d.ts.map +1 -0
- package/dist/semantics/text-layer/compiler.js.map +1 -0
- package/dist/semantics/text-layer/v2/claim-graph.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/claim-graph.js.map +1 -0
- package/dist/semantics/text-layer/v2/index.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/index.js.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/diff.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/diff.js.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/index.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/index.js.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/parser.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/parser.js.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/serializer.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/serializer.js.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/types.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/mdx-bridge/types.js.map +1 -0
- package/dist/semantics/text-layer/v2/types.d.ts.map +1 -0
- package/dist/semantics/text-layer/v2/types.js.map +1 -0
- package/dist/solver/csp/ac3.d.ts.map +1 -0
- package/dist/solver/csp/ac3.js.map +1 -0
- package/dist/solver/csp/backtrack.d.ts.map +1 -0
- package/dist/solver/csp/backtrack.js.map +1 -0
- package/dist/solver/csp/builtins.d.ts.map +1 -0
- package/dist/solver/csp/builtins.js.map +1 -0
- package/dist/solver/csp/index.d.ts.map +1 -0
- package/dist/solver/csp/index.js.map +1 -0
- package/dist/solver/csp/types.d.ts.map +1 -0
- package/dist/solver/csp/types.js.map +1 -0
- package/dist/solver/mus/extract.d.ts.map +1 -0
- package/dist/solver/mus/extract.js.map +1 -0
- package/dist/solver/mus/index.d.ts.map +1 -0
- package/dist/solver/mus/index.js.map +1 -0
- package/dist/solver/mus/quickxplain.d.ts.map +1 -0
- package/dist/solver/mus/quickxplain.js.map +1 -0
- package/dist/solver/mus/types.d.ts.map +1 -0
- package/dist/solver/mus/types.js.map +1 -0
- package/dist/solver/smt/index.d.ts.map +1 -0
- package/dist/solver/smt/index.js.map +1 -0
- package/dist/solver/smt/mock-backend.d.ts.map +1 -0
- package/dist/solver/smt/mock-backend.js.map +1 -0
- package/dist/solver/smt/serializer.d.ts.map +1 -0
- package/dist/solver/smt/serializer.js.map +1 -0
- package/dist/solver/smt/subprocess-backend.d.ts.map +1 -0
- package/dist/solver/smt/subprocess-backend.js.map +1 -0
- package/dist/solver/smt/types.d.ts.map +1 -0
- package/dist/solver/smt/types.js.map +1 -0
- package/dist/solver/smt-lib/ast.d.ts.map +1 -0
- package/dist/solver/smt-lib/ast.js.map +1 -0
- package/dist/solver/smt-lib/emitter.d.ts.map +1 -0
- package/dist/solver/smt-lib/emitter.js.map +1 -0
- package/dist/solver/smt-lib/index.d.ts.map +1 -0
- package/dist/solver/smt-lib/index.js.map +1 -0
- package/dist/solver/smt-lib/parser.d.ts.map +1 -0
- package/dist/solver/smt-lib/parser.js.map +1 -0
- package/dist/solver/smt-lib/tokenizer.d.ts.map +1 -0
- package/dist/solver/smt-lib/tokenizer.js.map +1 -0
- package/dist/solver/smt-z3/index.d.ts +3 -0
- package/dist/solver/smt-z3/index.d.ts.map +1 -0
- package/dist/solver/smt-z3/index.js +11 -0
- package/dist/solver/smt-z3/index.js.map +1 -0
- package/dist/solver/smt-z3/types.d.ts +52 -0
- package/dist/solver/smt-z3/types.d.ts.map +1 -0
- package/dist/solver/smt-z3/types.js +6 -0
- package/dist/solver/smt-z3/types.js.map +1 -0
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts +88 -0
- package/dist/solver/smt-z3/z3-wasm-backend.d.ts.map +1 -0
- package/dist/solver/smt-z3/z3-wasm-backend.js +437 -0
- package/dist/solver/smt-z3/z3-wasm-backend.js.map +1 -0
- package/dist/tests/api/namespaces.test.js +1 -1
- package/dist/tests/api/namespaces.test.js.map +1 -1
- package/dist/tests/arithmetic.test.js +2 -2
- package/dist/tests/arithmetic.test.js.map +1 -1
- package/dist/tests/benchmark-cdcl.test.js +2 -2
- package/dist/tests/benchmark-cdcl.test.js.map +1 -1
- package/dist/tests/cli.test.js +1 -1
- package/dist/tests/cli.test.js.map +1 -1
- package/dist/tests/core.test.js +1 -1
- package/dist/tests/core.test.js.map +1 -1
- package/dist/tests/coverage-95/api-and-interpreter-e2e.test.js +1 -1
- package/dist/tests/coverage-95/api-and-interpreter-e2e.test.js.map +1 -1
- package/dist/tests/coverage-95/argumentation.test.js +1 -1
- package/dist/tests/coverage-95/argumentation.test.js.map +1 -1
- package/dist/tests/coverage-95/arithmetic.test.js +1 -1
- package/dist/tests/coverage-95/arithmetic.test.js.map +1 -1
- package/dist/tests/coverage-95/belnap.test.js +1 -1
- package/dist/tests/coverage-95/belnap.test.js.map +1 -1
- package/dist/tests/coverage-95/classical-propositional-direct.test.js +1 -1
- package/dist/tests/coverage-95/classical-propositional-direct.test.js.map +1 -1
- package/dist/tests/coverage-95/first-order.test.js +1 -1
- package/dist/tests/coverage-95/first-order.test.js.map +1 -1
- package/dist/tests/coverage-95/fol-prover.test.js +3 -3
- package/dist/tests/coverage-95/fol-prover.test.js.map +1 -1
- package/dist/tests/coverage-95/lsp-server.test.js +1 -1
- package/dist/tests/coverage-95/lsp-server.test.js.map +1 -1
- package/dist/tests/coverage-95/modal-tableau-profiles.test.js +5 -5
- package/dist/tests/coverage-95/modal-tableau-profiles.test.js.map +1 -1
- package/dist/tests/coverage-95/parallel-sat.test.js +1 -1
- package/dist/tests/coverage-95/parallel-sat.test.js.map +1 -1
- package/dist/tests/coverage-95/propositional-utilities.test.js +1 -1
- package/dist/tests/coverage-95/propositional-utilities.test.js.map +1 -1
- package/dist/tests/coverage-95/smt-mock-backend.test.js +1 -1
- package/dist/tests/coverage-95/smt-mock-backend.test.js.map +1 -1
- package/dist/tests/coverage-95/smt-serializer.test.js +1 -1
- package/dist/tests/coverage-95/smt-serializer.test.js.map +1 -1
- package/dist/tests/coverage-95/smt-subprocess.test.js +1 -1
- package/dist/tests/coverage-95/smt-subprocess.test.js.map +1 -1
- package/dist/tests/coverage-95/tableau-engine.test.js +1 -1
- package/dist/tests/coverage-95/tableau-engine.test.js.map +1 -1
- package/dist/tests/coverage-95/temporal-ltl.test.js +1 -1
- package/dist/tests/coverage-95/temporal-ltl.test.js.map +1 -1
- package/dist/tests/coverage-95/undecidability-detector.test.js +1 -1
- package/dist/tests/coverage-95/undecidability-detector.test.js.map +1 -1
- package/dist/tests/coverage-fill-aristotelian.test.js +1 -1
- package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -1
- package/dist/tests/coverage-fill-belnap.test.js +1 -1
- package/dist/tests/coverage-fill-belnap.test.js.map +1 -1
- package/dist/tests/coverage-fill-cross-system.test.js +1 -1
- package/dist/tests/coverage-fill-cross-system.test.js.map +1 -1
- package/dist/tests/coverage-fill-intuitionistic.test.js +1 -1
- package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -1
- package/dist/tests/coverage-fill-probabilistic.test.js +1 -1
- package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -1
- package/dist/tests/integration/cross-modules.test.js +13 -13
- package/dist/tests/integration/cross-modules.test.js.map +1 -1
- package/dist/tests/logic/ctl/check.test.d.ts.map +1 -0
- package/dist/tests/logic/ctl/check.test.js +337 -0
- package/dist/tests/logic/ctl/check.test.js.map +1 -0
- package/dist/tests/logic/default-logic/extensions.test.d.ts.map +1 -0
- package/dist/tests/logic/default-logic/extensions.test.js +323 -0
- package/dist/tests/logic/default-logic/extensions.test.js.map +1 -0
- package/dist/tests/logic/description-logic/alc.test.d.ts.map +1 -0
- package/dist/tests/logic/description-logic/alc.test.js +253 -0
- package/dist/tests/logic/description-logic/alc.test.js.map +1 -0
- package/dist/tests/logic/hybrid-logic/semantics.test.d.ts.map +1 -0
- package/dist/tests/logic/hybrid-logic/semantics.test.js +169 -0
- package/dist/tests/logic/hybrid-logic/semantics.test.js.map +1 -0
- package/dist/tests/logic/intuitionistic-nj/nj.test.d.ts.map +1 -0
- package/dist/tests/logic/intuitionistic-nj/nj.test.js +216 -0
- package/dist/tests/logic/intuitionistic-nj/nj.test.js.map +1 -0
- package/dist/tests/logic/ltl-sat/sat.test.d.ts.map +1 -0
- package/dist/tests/logic/ltl-sat/sat.test.js +160 -0
- package/dist/tests/logic/ltl-sat/sat.test.js.map +1 -0
- package/dist/tests/logic/many-valued/many-valued.test.d.ts.map +1 -0
- package/dist/tests/logic/many-valued/many-valued.test.js +150 -0
- package/dist/tests/logic/many-valued/many-valued.test.js.map +1 -0
- package/dist/tests/logic/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
- package/dist/tests/logic/modal-frame-axioms/frame-axioms.test.js +236 -0
- package/dist/tests/logic/modal-frame-axioms/frame-axioms.test.js.map +1 -0
- package/dist/tests/logic/mu-calculus/check.test.d.ts.map +1 -0
- package/dist/tests/logic/mu-calculus/check.test.js +234 -0
- package/dist/tests/logic/mu-calculus/check.test.js.map +1 -0
- package/dist/tests/logic/profile-bridge/translations.test.d.ts.map +1 -0
- package/dist/tests/logic/profile-bridge/translations.test.js +266 -0
- package/dist/tests/logic/profile-bridge/translations.test.js.map +1 -0
- package/dist/tests/logic/profiles.test.d.ts.map +1 -0
- package/dist/tests/logic/profiles.test.js +393 -0
- package/dist/tests/logic/profiles.test.js.map +1 -0
- package/dist/tests/logic/sequent-g3/prover.test.d.ts.map +1 -0
- package/dist/tests/logic/sequent-g3/prover.test.js +205 -0
- package/dist/tests/logic/sequent-g3/prover.test.js.map +1 -0
- package/dist/tests/logic/sequent-lk/prover.test.d.ts.map +1 -0
- package/dist/tests/logic/sequent-lk/prover.test.js +317 -0
- package/dist/tests/logic/sequent-lk/prover.test.js.map +1 -0
- package/dist/tests/logic/substructural/prover.test.d.ts.map +1 -0
- package/dist/tests/logic/substructural/prover.test.js +271 -0
- package/dist/tests/logic/substructural/prover.test.js.map +1 -0
- package/dist/tests/natural-deduction-workshop.test.js +1 -1
- package/dist/tests/natural-deduction-workshop.test.js.map +1 -1
- package/dist/tests/parallel/parallel-pool.test.d.ts +1 -1
- package/dist/tests/parallel/parallel-pool.test.d.ts.map +1 -1
- package/dist/tests/parallel/parallel-pool.test.js +2 -2
- package/dist/tests/parallel/parallel-pool.test.js.map +1 -1
- package/dist/tests/parallel-sat.test.js +3 -3
- package/dist/tests/parallel-sat.test.js.map +1 -1
- package/dist/tests/proof-systems/fol-prover/cnf.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/fol-prover/cnf.test.js +74 -0
- package/dist/tests/proof-systems/fol-prover/cnf.test.js.map +1 -0
- package/dist/tests/proof-systems/fol-prover/prove.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/fol-prover/prove.test.js +106 -0
- package/dist/tests/proof-systems/fol-prover/prove.test.js.map +1 -0
- package/dist/tests/proof-systems/fol-prover/unify.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/fol-prover/unify.test.js +66 -0
- package/dist/tests/proof-systems/fol-prover/unify.test.js.map +1 -0
- package/dist/tests/proof-systems/fol-prover-equality/prove.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/fol-prover-equality/prove.test.js +179 -0
- package/dist/tests/proof-systems/fol-prover-equality/prove.test.js.map +1 -0
- package/dist/tests/proof-systems/higher-order-unify/ho-unify.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/higher-order-unify/ho-unify.test.js +264 -0
- package/dist/tests/proof-systems/higher-order-unify/ho-unify.test.js.map +1 -0
- package/dist/tests/proof-systems/proof-exchange/proof-exchange.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/proof-exchange/proof-exchange.test.js +161 -0
- package/dist/tests/proof-systems/proof-exchange/proof-exchange.test.js.map +1 -0
- package/dist/tests/proof-systems/proof-minify/minify.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/proof-minify/minify.test.js +281 -0
- package/dist/tests/proof-systems/proof-minify/minify.test.js.map +1 -0
- package/dist/tests/proof-systems/proof-nets/proof-nets.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/proof-nets/proof-nets.test.js +263 -0
- package/dist/tests/proof-systems/proof-nets/proof-nets.test.js.map +1 -0
- package/dist/tests/proof-systems/tableau-framework/tableau.test.d.ts.map +1 -0
- package/dist/tests/proof-systems/tableau-framework/tableau.test.js +196 -0
- package/dist/tests/proof-systems/tableau-framework/tableau.test.js.map +1 -0
- package/dist/tests/properties/agm.property.test.js +3 -3
- package/dist/tests/properties/agm.property.test.js.map +1 -1
- package/dist/tests/properties/argumentation.property.test.js +1 -1
- package/dist/tests/properties/argumentation.property.test.js.map +1 -1
- package/dist/tests/properties/bayesian.property.test.js +1 -1
- package/dist/tests/properties/bayesian.property.test.js.map +1 -1
- package/dist/tests/properties/coinduction.property.test.js +1 -1
- package/dist/tests/properties/coinduction.property.test.js.map +1 -1
- package/dist/tests/properties/constructive-reals.property.test.js +1 -1
- package/dist/tests/properties/constructive-reals.property.test.js.map +1 -1
- package/dist/tests/properties/csp.property.test.js +1 -1
- package/dist/tests/properties/csp.property.test.js.map +1 -1
- package/dist/tests/properties/generators.d.ts +5 -5
- package/dist/tests/properties/generators.d.ts.map +1 -1
- package/dist/tests/properties/ho-unify.property.test.js +1 -1
- package/dist/tests/properties/ho-unify.property.test.js.map +1 -1
- package/dist/tests/properties/hyperreal.property.test.js +1 -1
- package/dist/tests/properties/hyperreal.property.test.js.map +1 -1
- package/dist/tests/properties/intuit-nj.property.test.js +2 -2
- package/dist/tests/properties/intuit-nj.property.test.js.map +1 -1
- package/dist/tests/properties/lambda-calc.property.test.js +1 -1
- package/dist/tests/properties/lambda-calc.property.test.js.map +1 -1
- package/dist/tests/properties/mln.property.test.js +1 -1
- package/dist/tests/properties/mln.property.test.js.map +1 -1
- package/dist/tests/properties/mltt.property.test.js +3 -3
- package/dist/tests/properties/mltt.property.test.js.map +1 -1
- package/dist/tests/properties/nbe.property.test.js +1 -1
- package/dist/tests/properties/nbe.property.test.js.map +1 -1
- package/dist/tests/properties/planning.property.test.js +1 -1
- package/dist/tests/properties/planning.property.test.js.map +1 -1
- package/dist/tests/properties/profile-bridge.property.test.js +3 -3
- package/dist/tests/properties/profile-bridge.property.test.js.map +1 -1
- package/dist/tests/properties/refinement-types.property.test.js +1 -1
- package/dist/tests/properties/refinement-types.property.test.js.map +1 -1
- package/dist/tests/properties/sequent-g3.property.test.js +1 -1
- package/dist/tests/properties/sequent-g3.property.test.js.map +1 -1
- package/dist/tests/properties/system-f.property.test.js +1 -1
- package/dist/tests/properties/system-f.property.test.js.map +1 -1
- package/dist/tests/propositional-nd-audit.test.js +1 -1
- package/dist/tests/propositional-nd-audit.test.js.map +1 -1
- package/dist/tests/protocol-text-layer.test.js +1 -1
- package/dist/tests/protocol-text-layer.test.js.map +1 -1
- package/dist/tests/reasoning/abduction/abduction.test.d.ts.map +1 -0
- package/dist/tests/reasoning/abduction/abduction.test.js +380 -0
- package/dist/tests/reasoning/abduction/abduction.test.js.map +1 -0
- package/dist/tests/reasoning/argumentation/dung.test.d.ts.map +1 -0
- package/dist/tests/reasoning/argumentation/dung.test.js +219 -0
- package/dist/tests/reasoning/argumentation/dung.test.js.map +1 -0
- package/dist/tests/reasoning/bayesian/bayesian.test.d.ts.map +1 -0
- package/dist/tests/reasoning/bayesian/bayesian.test.js +328 -0
- package/dist/tests/reasoning/bayesian/bayesian.test.js.map +1 -0
- package/dist/tests/reasoning/belief-revision/agm.test.d.ts.map +1 -0
- package/dist/tests/reasoning/belief-revision/agm.test.js +173 -0
- package/dist/tests/reasoning/belief-revision/agm.test.js.map +1 -0
- package/dist/tests/reasoning/citation-reasoning/citation-reasoning.test.d.ts.map +1 -0
- package/dist/tests/reasoning/citation-reasoning/citation-reasoning.test.js +240 -0
- package/dist/tests/reasoning/citation-reasoning/citation-reasoning.test.js.map +1 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts +2 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.d.ts.map +1 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js +203 -0
- package/dist/tests/reasoning/combinatorial-games/combinatorial-games.test.js.map +1 -0
- package/dist/tests/reasoning/constructive-reals/constructive-reals.test.d.ts.map +1 -0
- package/dist/tests/reasoning/constructive-reals/constructive-reals.test.js +357 -0
- package/dist/tests/reasoning/constructive-reals/constructive-reals.test.js.map +1 -0
- package/dist/tests/reasoning/fca/fca.test.d.ts.map +1 -0
- package/dist/tests/reasoning/fca/fca.test.js +317 -0
- package/dist/tests/reasoning/fca/fca.test.js.map +1 -0
- package/dist/tests/reasoning/game-theory/game-theory.test.d.ts.map +1 -0
- package/dist/tests/reasoning/game-theory/game-theory.test.js +252 -0
- package/dist/tests/reasoning/game-theory/game-theory.test.js.map +1 -0
- package/dist/tests/reasoning/hyperreal/hyperreal.test.d.ts.map +1 -0
- package/dist/tests/reasoning/hyperreal/hyperreal.test.js +219 -0
- package/dist/tests/reasoning/hyperreal/hyperreal.test.js.map +1 -0
- package/dist/tests/reasoning/information-theory/information-theory.test.d.ts.map +1 -0
- package/dist/tests/reasoning/information-theory/information-theory.test.js +291 -0
- package/dist/tests/reasoning/information-theory/information-theory.test.js.map +1 -0
- package/dist/tests/reasoning/lemma-synthesis/lemma-synthesis.test.d.ts.map +1 -0
- package/dist/tests/reasoning/lemma-synthesis/lemma-synthesis.test.js +460 -0
- package/dist/tests/reasoning/lemma-synthesis/lemma-synthesis.test.js.map +1 -0
- package/dist/tests/reasoning/markov-logic/markov-logic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/markov-logic/markov-logic.test.js +349 -0
- package/dist/tests/reasoning/markov-logic/markov-logic.test.js.map +1 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts +2 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.d.ts.map +1 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js +290 -0
- package/dist/tests/reasoning/mechanism-design/mechanism-design.test.js.map +1 -0
- package/dist/tests/reasoning/optimization/ilp.test.d.ts.map +1 -0
- package/dist/tests/reasoning/optimization/ilp.test.js +204 -0
- package/dist/tests/reasoning/optimization/ilp.test.js.map +1 -0
- package/dist/tests/reasoning/optimization/lp.test.d.ts.map +1 -0
- package/dist/tests/reasoning/optimization/lp.test.js +224 -0
- package/dist/tests/reasoning/optimization/lp.test.js.map +1 -0
- package/dist/tests/reasoning/planning/planning.test.d.ts.map +1 -0
- package/dist/tests/reasoning/planning/planning.test.js +397 -0
- package/dist/tests/reasoning/planning/planning.test.js.map +1 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts +2 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.d.ts.map +1 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.js +370 -0
- package/dist/tests/reasoning/probabilistic/probabilistic.test.js.map +1 -0
- package/dist/tests/reasoning/tactic-dsl/tactic-dsl.test.d.ts.map +1 -0
- package/dist/tests/reasoning/tactic-dsl/tactic-dsl.test.js +259 -0
- package/dist/tests/reasoning/tactic-dsl/tactic-dsl.test.js.map +1 -0
- package/dist/tests/result-bindings.test.js +1 -1
- package/dist/tests/result-bindings.test.js.map +1 -1
- package/dist/tests/runtime/bdd/manager.test.d.ts.map +1 -0
- package/dist/tests/runtime/bdd/manager.test.js +472 -0
- package/dist/tests/runtime/bdd/manager.test.js.map +1 -0
- package/dist/tests/runtime/csp-hoare/csp-hoare.test.d.ts.map +1 -0
- package/dist/tests/runtime/csp-hoare/csp-hoare.test.js +313 -0
- package/dist/tests/runtime/csp-hoare/csp-hoare.test.js.map +1 -0
- package/dist/tests/semantics/categorical/categorical.test.d.ts.map +1 -0
- package/dist/tests/semantics/categorical/categorical.test.js +300 -0
- package/dist/tests/semantics/categorical/categorical.test.js.map +1 -0
- package/dist/tests/semantics/coinduction/coinduction.test.d.ts.map +1 -0
- package/dist/tests/semantics/coinduction/coinduction.test.js +217 -0
- package/dist/tests/semantics/coinduction/coinduction.test.js.map +1 -0
- package/dist/tests/semantics/game-semantics/game-semantics.test.d.ts.map +1 -0
- package/dist/tests/semantics/game-semantics/game-semantics.test.js +143 -0
- package/dist/tests/semantics/game-semantics/game-semantics.test.js.map +1 -0
- package/dist/tests/semantics/text-layer-v2/claim-graph.test.d.ts.map +1 -0
- package/dist/tests/semantics/text-layer-v2/claim-graph.test.js +255 -0
- package/dist/tests/semantics/text-layer-v2/claim-graph.test.js.map +1 -0
- package/dist/tests/semantics/text-layer-v2/mdx-bridge/mdx-bridge.test.d.ts.map +1 -0
- package/dist/tests/semantics/text-layer-v2/mdx-bridge/mdx-bridge.test.js +200 -0
- package/dist/tests/semantics/text-layer-v2/mdx-bridge/mdx-bridge.test.js.map +1 -0
- package/dist/tests/solver/csp/csp.test.d.ts.map +1 -0
- package/dist/tests/solver/csp/csp.test.js +292 -0
- package/dist/tests/solver/csp/csp.test.js.map +1 -0
- package/dist/tests/solver/mus/extract.test.d.ts.map +1 -0
- package/dist/tests/solver/mus/extract.test.js +352 -0
- package/dist/tests/solver/mus/extract.test.js.map +1 -0
- package/dist/tests/solver/sat-v2/clause-learning.test.d.ts.map +1 -0
- package/dist/tests/solver/sat-v2/clause-learning.test.js +73 -0
- package/dist/tests/solver/sat-v2/clause-learning.test.js.map +1 -0
- package/dist/tests/solver/sat-v2/lbd.test.d.ts.map +1 -0
- package/dist/tests/solver/sat-v2/lbd.test.js +82 -0
- package/dist/tests/solver/sat-v2/lbd.test.js.map +1 -0
- package/dist/tests/solver/sat-v2/luby.test.d.ts.map +1 -0
- package/dist/tests/solver/sat-v2/luby.test.js +58 -0
- package/dist/tests/solver/sat-v2/luby.test.js.map +1 -0
- package/dist/tests/solver/sat-v2/phase-saving.test.d.ts.map +1 -0
- package/dist/tests/solver/sat-v2/phase-saving.test.js +38 -0
- package/dist/tests/solver/sat-v2/phase-saving.test.js.map +1 -0
- package/dist/tests/solver/sat-v2/solver-end-to-end.test.d.ts.map +1 -0
- package/dist/tests/solver/sat-v2/solver-end-to-end.test.js +199 -0
- package/dist/tests/solver/sat-v2/solver-end-to-end.test.js.map +1 -0
- package/dist/tests/solver/sat-v2/vsids.test.d.ts.map +1 -0
- package/dist/tests/solver/sat-v2/vsids.test.js +69 -0
- package/dist/tests/solver/sat-v2/vsids.test.js.map +1 -0
- package/dist/tests/solver/sat-v2-incremental/basic.test.d.ts.map +1 -0
- package/dist/tests/solver/sat-v2-incremental/basic.test.js +352 -0
- package/dist/tests/solver/sat-v2-incremental/basic.test.js.map +1 -0
- package/dist/tests/solver/smt/mock-backend.test.d.ts.map +1 -0
- package/dist/tests/solver/smt/mock-backend.test.js +129 -0
- package/dist/tests/solver/smt/mock-backend.test.js.map +1 -0
- package/dist/tests/solver/smt/serializer.test.d.ts.map +1 -0
- package/dist/tests/solver/smt/serializer.test.js +94 -0
- package/dist/tests/solver/smt/serializer.test.js.map +1 -0
- package/dist/tests/solver/smt/subprocess-backend.test.d.ts.map +1 -0
- package/dist/tests/solver/smt/subprocess-backend.test.js +89 -0
- package/dist/tests/solver/smt/subprocess-backend.test.js.map +1 -0
- package/dist/tests/solver/smt-lib/emitter.test.d.ts.map +1 -0
- package/dist/tests/solver/smt-lib/emitter.test.js +155 -0
- package/dist/tests/solver/smt-lib/emitter.test.js.map +1 -0
- package/dist/tests/solver/smt-lib/parser.test.d.ts.map +1 -0
- package/dist/tests/solver/smt-lib/parser.test.js +164 -0
- package/dist/tests/solver/smt-lib/parser.test.js.map +1 -0
- package/dist/tests/solver/smt-lib/tokenizer.test.d.ts.map +1 -0
- package/dist/tests/solver/smt-lib/tokenizer.test.js +59 -0
- package/dist/tests/solver/smt-lib/tokenizer.test.js.map +1 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts +2 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.d.ts.map +1 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js +394 -0
- package/dist/tests/solver/smt-z3/z3-wasm-backend.test.js.map +1 -0
- package/dist/tests/stress-cdcl.test.js +2 -2
- package/dist/tests/stress-cdcl.test.js.map +1 -1
- package/dist/tests/stress-extreme.test.js +1 -1
- package/dist/tests/stress-extreme.test.js.map +1 -1
- package/dist/tests/tooling/educational/checker.test.d.ts.map +1 -0
- package/dist/tests/tooling/educational/checker.test.js +212 -0
- package/dist/tests/tooling/educational/checker.test.js.map +1 -0
- package/dist/tests/tooling/educational/generator.test.d.ts.map +1 -0
- package/dist/tests/tooling/educational/generator.test.js +137 -0
- package/dist/tests/tooling/educational/generator.test.js.map +1 -0
- package/dist/tests/tooling/exporters/coq/coq-exporter.test.d.ts.map +1 -0
- package/dist/tests/tooling/exporters/coq/coq-exporter.test.js +353 -0
- package/dist/tests/tooling/exporters/coq/coq-exporter.test.js.map +1 -0
- package/dist/tests/tooling/lsp/server.test.d.ts.map +1 -0
- package/dist/tests/tooling/lsp/server.test.js +406 -0
- package/dist/tests/tooling/lsp/server.test.js.map +1 -0
- package/dist/tests/tooling/plugin-system/demo-min-logic.test.d.ts.map +1 -0
- package/dist/tests/tooling/plugin-system/demo-min-logic.test.js +85 -0
- package/dist/tests/tooling/plugin-system/demo-min-logic.test.js.map +1 -0
- package/dist/tests/tooling/plugin-system/registry.test.d.ts.map +1 -0
- package/dist/tests/tooling/plugin-system/registry.test.js +88 -0
- package/dist/tests/tooling/plugin-system/registry.test.js.map +1 -0
- package/dist/tests/tooling/plugin-system/validate.test.d.ts.map +1 -0
- package/dist/tests/tooling/plugin-system/validate.test.js +101 -0
- package/dist/tests/tooling/plugin-system/validate.test.js.map +1 -0
- package/dist/tests/tooling/proof-guidance/features.test.d.ts +2 -0
- package/dist/tests/tooling/proof-guidance/features.test.d.ts.map +1 -0
- package/dist/tests/tooling/proof-guidance/features.test.js +72 -0
- package/dist/tests/tooling/proof-guidance/features.test.js.map +1 -0
- package/dist/tests/tooling/proof-guidance/model.test.d.ts +2 -0
- package/dist/tests/tooling/proof-guidance/model.test.d.ts.map +1 -0
- package/dist/tests/tooling/proof-guidance/model.test.js +165 -0
- package/dist/tests/tooling/proof-guidance/model.test.js.map +1 -0
- package/dist/tests/tooling/proof-guidance/search.test.d.ts +2 -0
- package/dist/tests/tooling/proof-guidance/search.test.d.ts.map +1 -0
- package/dist/tests/tooling/proof-guidance/search.test.js +238 -0
- package/dist/tests/tooling/proof-guidance/search.test.js.map +1 -0
- package/dist/tests/tooling/time-travel/snapshot.test.d.ts.map +1 -0
- package/dist/tests/tooling/time-travel/snapshot.test.js +75 -0
- package/dist/tests/tooling/time-travel/snapshot.test.js.map +1 -0
- package/dist/tests/tooling/time-travel/store.test.d.ts.map +1 -0
- package/dist/tests/tooling/time-travel/store.test.js +242 -0
- package/dist/tests/tooling/time-travel/store.test.js.map +1 -0
- package/dist/tests/tooling/tptp/bridge.test.d.ts.map +1 -0
- package/dist/tests/tooling/tptp/bridge.test.js +154 -0
- package/dist/tests/tooling/tptp/bridge.test.js.map +1 -0
- package/dist/tests/tooling/tptp/emitter.test.d.ts.map +1 -0
- package/dist/tests/tooling/tptp/emitter.test.js +128 -0
- package/dist/tests/tooling/tptp/emitter.test.js.map +1 -0
- package/dist/tests/tooling/tptp/parser.test.d.ts.map +1 -0
- package/dist/tests/tooling/tptp/parser.test.js +192 -0
- package/dist/tests/tooling/tptp/parser.test.js.map +1 -0
- package/dist/tests/tooling/tptp/tokenizer.test.d.ts.map +1 -0
- package/dist/tests/tooling/tptp/tokenizer.test.js +60 -0
- package/dist/tests/tooling/tptp/tokenizer.test.js.map +1 -0
- package/dist/tests/type-theory/combinators-ski/combinators-ski.test.d.ts.map +1 -0
- package/dist/tests/type-theory/combinators-ski/combinators-ski.test.js +211 -0
- package/dist/tests/type-theory/combinators-ski/combinators-ski.test.js.map +1 -0
- package/dist/tests/type-theory/cubical/cubical.test.d.ts +2 -0
- package/dist/tests/type-theory/cubical/cubical.test.d.ts.map +1 -0
- package/dist/tests/type-theory/cubical/cubical.test.js +207 -0
- package/dist/tests/type-theory/cubical/cubical.test.js.map +1 -0
- package/dist/tests/type-theory/curry-howard/infer.test.d.ts.map +1 -0
- package/dist/tests/type-theory/curry-howard/infer.test.js +93 -0
- package/dist/tests/type-theory/curry-howard/infer.test.js.map +1 -0
- package/dist/tests/type-theory/curry-howard/proof.test.d.ts.map +1 -0
- package/dist/tests/type-theory/curry-howard/proof.test.js +105 -0
- package/dist/tests/type-theory/curry-howard/proof.test.js.map +1 -0
- package/dist/tests/type-theory/curry-howard/reduce.test.d.ts.map +1 -0
- package/dist/tests/type-theory/curry-howard/reduce.test.js +109 -0
- package/dist/tests/type-theory/curry-howard/reduce.test.js.map +1 -0
- package/dist/tests/type-theory/hindley-milner/hindley-milner.test.d.ts.map +1 -0
- package/dist/tests/type-theory/hindley-milner/hindley-milner.test.js +327 -0
- package/dist/tests/type-theory/hindley-milner/hindley-milner.test.js.map +1 -0
- package/dist/tests/type-theory/hol/hol.test.d.ts.map +1 -0
- package/dist/tests/type-theory/hol/hol.test.js +340 -0
- package/dist/tests/type-theory/hol/hol.test.js.map +1 -0
- package/dist/tests/type-theory/hott/hott.test.d.ts.map +1 -0
- package/dist/tests/type-theory/hott/hott.test.js +271 -0
- package/dist/tests/type-theory/hott/hott.test.js.map +1 -0
- package/dist/tests/type-theory/lambda-calc/lambda-calc.test.d.ts.map +1 -0
- package/dist/tests/type-theory/lambda-calc/lambda-calc.test.js +164 -0
- package/dist/tests/type-theory/lambda-calc/lambda-calc.test.js.map +1 -0
- package/dist/tests/type-theory/mltt/mltt.test.d.ts.map +1 -0
- package/dist/tests/type-theory/mltt/mltt.test.js +181 -0
- package/dist/tests/type-theory/mltt/mltt.test.js.map +1 -0
- package/dist/tests/type-theory/nbe/nbe.test.d.ts.map +1 -0
- package/dist/tests/type-theory/nbe/nbe.test.js +121 -0
- package/dist/tests/type-theory/nbe/nbe.test.js.map +1 -0
- package/dist/tests/type-theory/refinement-types/refinement-types.test.d.ts.map +1 -0
- package/dist/tests/type-theory/refinement-types/refinement-types.test.js +174 -0
- package/dist/tests/type-theory/refinement-types/refinement-types.test.js.map +1 -0
- package/dist/tests/type-theory/system-f/system-f.test.d.ts.map +1 -0
- package/dist/tests/type-theory/system-f/system-f.test.js +217 -0
- package/dist/tests/type-theory/system-f/system-f.test.js.map +1 -0
- package/dist/tests/v1-features.test.js +2 -2
- package/dist/tests/v1-features.test.js.map +1 -1
- package/dist/tooling/educational/checker.d.ts.map +1 -0
- package/dist/tooling/educational/checker.js +244 -0
- package/dist/tooling/educational/checker.js.map +1 -0
- package/dist/tooling/educational/generator.d.ts.map +1 -0
- package/dist/tooling/educational/generator.js.map +1 -0
- package/dist/tooling/educational/index.d.ts.map +1 -0
- package/dist/tooling/educational/index.js.map +1 -0
- package/dist/tooling/educational/normalize.d.ts.map +1 -0
- package/dist/tooling/educational/normalize.js.map +1 -0
- package/dist/tooling/educational/rng.d.ts.map +1 -0
- package/dist/tooling/educational/rng.js.map +1 -0
- package/dist/tooling/educational/templates.d.ts.map +1 -0
- package/dist/tooling/educational/templates.js.map +1 -0
- package/dist/tooling/educational/types.d.ts.map +1 -0
- package/dist/tooling/educational/types.js.map +1 -0
- package/dist/tooling/exporters/coq/index.d.ts +35 -0
- package/dist/tooling/exporters/coq/index.d.ts.map +1 -0
- package/dist/tooling/exporters/coq/index.js.map +1 -0
- package/dist/tooling/lsp/index.d.ts.map +1 -0
- package/dist/tooling/lsp/index.js.map +1 -0
- package/dist/tooling/lsp/protocol.d.ts.map +1 -0
- package/dist/tooling/lsp/protocol.js.map +1 -0
- package/dist/tooling/lsp/server.d.ts.map +1 -0
- package/dist/tooling/lsp/server.js +529 -0
- package/dist/tooling/lsp/server.js.map +1 -0
- package/dist/tooling/lsp/types.d.ts.map +1 -0
- package/dist/tooling/lsp/types.js.map +1 -0
- package/dist/tooling/plugin-system/demo-min-logic.d.ts.map +1 -0
- package/dist/tooling/plugin-system/demo-min-logic.js.map +1 -0
- package/dist/tooling/plugin-system/errors.d.ts.map +1 -0
- package/dist/tooling/plugin-system/errors.js.map +1 -0
- package/dist/tooling/plugin-system/index.d.ts.map +1 -0
- package/dist/tooling/plugin-system/index.js.map +1 -0
- package/dist/tooling/plugin-system/registry.d.ts.map +1 -0
- package/dist/tooling/plugin-system/registry.js.map +1 -0
- package/dist/tooling/plugin-system/types.d.ts +23 -0
- package/dist/tooling/plugin-system/types.d.ts.map +1 -0
- package/dist/tooling/plugin-system/types.js.map +1 -0
- package/dist/tooling/plugin-system/validate.d.ts.map +1 -0
- package/dist/tooling/plugin-system/validate.js.map +1 -0
- package/dist/tooling/proof-guidance/features.d.ts +10 -0
- package/dist/tooling/proof-guidance/features.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/features.js +97 -0
- package/dist/tooling/proof-guidance/features.js.map +1 -0
- package/dist/tooling/proof-guidance/index.d.ts +5 -0
- package/dist/tooling/proof-guidance/index.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/index.js +25 -0
- package/dist/tooling/proof-guidance/index.js.map +1 -0
- package/dist/tooling/proof-guidance/model.d.ts +42 -0
- package/dist/tooling/proof-guidance/model.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/model.js +149 -0
- package/dist/tooling/proof-guidance/model.js.map +1 -0
- package/dist/tooling/proof-guidance/search.d.ts +7 -0
- package/dist/tooling/proof-guidance/search.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/search.js +102 -0
- package/dist/tooling/proof-guidance/search.js.map +1 -0
- package/dist/tooling/proof-guidance/types.d.ts +77 -0
- package/dist/tooling/proof-guidance/types.d.ts.map +1 -0
- package/dist/tooling/proof-guidance/types.js +8 -0
- package/dist/tooling/proof-guidance/types.js.map +1 -0
- package/dist/tooling/time-travel/index.d.ts.map +1 -0
- package/dist/tooling/time-travel/index.js.map +1 -0
- package/dist/tooling/time-travel/snapshot.d.ts.map +1 -0
- package/dist/tooling/time-travel/snapshot.js.map +1 -0
- package/dist/tooling/time-travel/store.d.ts.map +1 -0
- package/dist/tooling/time-travel/store.js.map +1 -0
- package/dist/tooling/time-travel/types.d.ts.map +1 -0
- package/dist/tooling/time-travel/types.js.map +1 -0
- package/dist/tooling/tptp/ast.d.ts.map +1 -0
- package/dist/tooling/tptp/ast.js.map +1 -0
- package/dist/tooling/tptp/bridge.d.ts +14 -0
- package/dist/tooling/tptp/bridge.d.ts.map +1 -0
- package/dist/tooling/tptp/bridge.js.map +1 -0
- package/dist/tooling/tptp/emitter.d.ts.map +1 -0
- package/dist/tooling/tptp/emitter.js.map +1 -0
- package/dist/tooling/tptp/index.d.ts.map +1 -0
- package/dist/tooling/tptp/index.js.map +1 -0
- package/dist/tooling/tptp/parser.d.ts.map +1 -0
- package/dist/tooling/tptp/parser.js.map +1 -0
- package/dist/tooling/tptp/tokenizer.d.ts.map +1 -0
- package/dist/tooling/tptp/tokenizer.js.map +1 -0
- package/dist/type-theory/combinators-ski/abstract.d.ts.map +1 -0
- package/dist/type-theory/combinators-ski/abstract.js.map +1 -0
- package/dist/type-theory/combinators-ski/index.d.ts.map +1 -0
- package/dist/type-theory/combinators-ski/index.js.map +1 -0
- package/dist/type-theory/combinators-ski/reduce.d.ts.map +1 -0
- package/dist/type-theory/combinators-ski/reduce.js.map +1 -0
- package/dist/type-theory/combinators-ski/types.d.ts.map +1 -0
- package/dist/type-theory/combinators-ski/types.js.map +1 -0
- package/dist/type-theory/cubical/equality.d.ts +4 -0
- package/dist/type-theory/cubical/equality.d.ts.map +1 -0
- package/dist/type-theory/cubical/equality.js +78 -0
- package/dist/type-theory/cubical/equality.js.map +1 -0
- package/dist/type-theory/cubical/index.d.ts +14 -0
- package/dist/type-theory/cubical/index.d.ts.map +1 -0
- package/dist/type-theory/cubical/index.js +71 -0
- package/dist/type-theory/cubical/index.js.map +1 -0
- package/dist/type-theory/cubical/infer.d.ts +18 -0
- package/dist/type-theory/cubical/infer.d.ts.map +1 -0
- package/dist/type-theory/cubical/infer.js +241 -0
- package/dist/type-theory/cubical/infer.js.map +1 -0
- package/dist/type-theory/cubical/interval.d.ts +12 -0
- package/dist/type-theory/cubical/interval.d.ts.map +1 -0
- package/dist/type-theory/cubical/interval.js +118 -0
- package/dist/type-theory/cubical/interval.js.map +1 -0
- package/dist/type-theory/cubical/normalize.d.ts +5 -0
- package/dist/type-theory/cubical/normalize.d.ts.map +1 -0
- package/dist/type-theory/cubical/normalize.js +191 -0
- package/dist/type-theory/cubical/normalize.js.map +1 -0
- package/dist/type-theory/cubical/path-algebra.d.ts +12 -0
- package/dist/type-theory/cubical/path-algebra.d.ts.map +1 -0
- package/dist/type-theory/cubical/path-algebra.js +109 -0
- package/dist/type-theory/cubical/path-algebra.js.map +1 -0
- package/dist/type-theory/cubical/substitute.d.ts +3 -0
- package/dist/type-theory/cubical/substitute.d.ts.map +1 -0
- package/dist/type-theory/cubical/substitute.js +109 -0
- package/dist/type-theory/cubical/substitute.js.map +1 -0
- package/dist/type-theory/cubical/types.d.ts +77 -0
- package/dist/type-theory/cubical/types.d.ts.map +1 -0
- package/dist/type-theory/cubical/types.js +258 -0
- package/dist/type-theory/cubical/types.js.map +1 -0
- package/dist/type-theory/curry-howard/index.d.ts.map +1 -0
- package/dist/type-theory/curry-howard/index.js.map +1 -0
- package/dist/type-theory/curry-howard/infer.d.ts.map +1 -0
- package/dist/type-theory/curry-howard/infer.js.map +1 -0
- package/dist/type-theory/curry-howard/proof.d.ts.map +1 -0
- package/dist/type-theory/curry-howard/proof.js.map +1 -0
- package/dist/type-theory/curry-howard/reduce.d.ts.map +1 -0
- package/dist/type-theory/curry-howard/reduce.js.map +1 -0
- package/dist/type-theory/curry-howard/types.d.ts.map +1 -0
- package/dist/type-theory/curry-howard/types.js.map +1 -0
- package/dist/type-theory/hindley-milner/index.d.ts.map +1 -0
- package/dist/type-theory/hindley-milner/index.js.map +1 -0
- package/dist/type-theory/hindley-milner/infer.d.ts.map +1 -0
- package/dist/type-theory/hindley-milner/infer.js.map +1 -0
- package/dist/type-theory/hindley-milner/substitution.d.ts.map +1 -0
- package/dist/type-theory/hindley-milner/substitution.js.map +1 -0
- package/dist/type-theory/hindley-milner/types.d.ts.map +1 -0
- package/dist/type-theory/hindley-milner/types.js.map +1 -0
- package/dist/type-theory/hol/connectives.d.ts.map +1 -0
- package/dist/type-theory/hol/connectives.js.map +1 -0
- package/dist/type-theory/hol/index.d.ts.map +1 -0
- package/dist/type-theory/hol/index.js.map +1 -0
- package/dist/type-theory/hol/rules.d.ts.map +1 -0
- package/dist/type-theory/hol/rules.js.map +1 -0
- package/dist/type-theory/hol/term.d.ts.map +1 -0
- package/dist/type-theory/hol/term.js.map +1 -0
- package/dist/type-theory/hol/type-system.d.ts.map +1 -0
- package/dist/type-theory/hol/type-system.js.map +1 -0
- package/dist/type-theory/hol/types.d.ts.map +1 -0
- package/dist/type-theory/hol/types.js.map +1 -0
- package/dist/type-theory/hott/equality.d.ts.map +1 -0
- package/dist/type-theory/hott/equality.js.map +1 -0
- package/dist/type-theory/hott/index.d.ts.map +1 -0
- package/dist/type-theory/hott/index.js.map +1 -0
- package/dist/type-theory/hott/infer.d.ts.map +1 -0
- package/dist/type-theory/hott/infer.js.map +1 -0
- package/dist/type-theory/hott/normalize.d.ts.map +1 -0
- package/dist/type-theory/hott/normalize.js.map +1 -0
- package/dist/type-theory/hott/path-algebra.d.ts.map +1 -0
- package/dist/type-theory/hott/path-algebra.js.map +1 -0
- package/dist/type-theory/hott/substitute.d.ts.map +1 -0
- package/dist/type-theory/hott/substitute.js.map +1 -0
- package/dist/type-theory/hott/types.d.ts.map +1 -0
- package/dist/type-theory/hott/types.js.map +1 -0
- package/dist/type-theory/lambda-calc/church.d.ts.map +1 -0
- package/dist/type-theory/lambda-calc/church.js.map +1 -0
- package/dist/type-theory/lambda-calc/combinators.d.ts.map +1 -0
- package/dist/type-theory/lambda-calc/combinators.js.map +1 -0
- package/dist/type-theory/lambda-calc/index.d.ts.map +1 -0
- package/dist/type-theory/lambda-calc/index.js.map +1 -0
- package/dist/type-theory/lambda-calc/reduce.d.ts.map +1 -0
- package/dist/type-theory/lambda-calc/reduce.js.map +1 -0
- package/dist/type-theory/lambda-calc/substitution.d.ts.map +1 -0
- package/dist/type-theory/lambda-calc/substitution.js.map +1 -0
- package/dist/type-theory/lambda-calc/types.d.ts.map +1 -0
- package/dist/type-theory/lambda-calc/types.js.map +1 -0
- package/dist/type-theory/mltt/equality.d.ts.map +1 -0
- package/dist/type-theory/mltt/equality.js.map +1 -0
- package/dist/type-theory/mltt/index.d.ts.map +1 -0
- package/dist/type-theory/mltt/index.js.map +1 -0
- package/dist/type-theory/mltt/infer.d.ts.map +1 -0
- package/dist/type-theory/mltt/infer.js.map +1 -0
- package/dist/type-theory/mltt/normalize.d.ts.map +1 -0
- package/dist/type-theory/mltt/normalize.js.map +1 -0
- package/dist/type-theory/mltt/substitute.d.ts.map +1 -0
- package/dist/type-theory/mltt/substitute.js.map +1 -0
- package/dist/type-theory/mltt/types.d.ts.map +1 -0
- package/dist/type-theory/mltt/types.js.map +1 -0
- package/dist/type-theory/nbe/index.d.ts.map +1 -0
- package/dist/type-theory/nbe/index.js.map +1 -0
- package/dist/type-theory/nbe/nbe.d.ts.map +1 -0
- package/dist/type-theory/nbe/nbe.js.map +1 -0
- package/dist/type-theory/nbe/types.d.ts.map +1 -0
- package/dist/type-theory/nbe/types.js.map +1 -0
- package/dist/type-theory/refinement-types/checker.d.ts.map +1 -0
- package/dist/type-theory/refinement-types/checker.js.map +1 -0
- package/dist/type-theory/refinement-types/index.d.ts.map +1 -0
- package/dist/type-theory/refinement-types/index.js.map +1 -0
- package/dist/type-theory/refinement-types/predicate.d.ts.map +1 -0
- package/dist/type-theory/refinement-types/predicate.js.map +1 -0
- package/dist/type-theory/refinement-types/solver.d.ts.map +1 -0
- package/dist/type-theory/refinement-types/solver.js.map +1 -0
- package/dist/type-theory/refinement-types/subtype.d.ts.map +1 -0
- package/dist/type-theory/refinement-types/subtype.js.map +1 -0
- package/dist/type-theory/refinement-types/types.d.ts.map +1 -0
- package/dist/type-theory/refinement-types/types.js.map +1 -0
- package/dist/type-theory/system-f/index.d.ts.map +1 -0
- package/dist/type-theory/system-f/index.js.map +1 -0
- package/dist/type-theory/system-f/infer.d.ts.map +1 -0
- package/dist/type-theory/system-f/infer.js.map +1 -0
- package/dist/type-theory/system-f/reduce.d.ts.map +1 -0
- package/dist/type-theory/system-f/reduce.js.map +1 -0
- package/dist/type-theory/system-f/types.d.ts.map +1 -0
- package/dist/type-theory/system-f/types.js.map +1 -0
- package/package.json +4 -3
- package/dist/argumentation/dot.d.ts.map +0 -1
- package/dist/argumentation/dot.js.map +0 -1
- package/dist/argumentation/extensions.d.ts.map +0 -1
- package/dist/argumentation/extensions.js.map +0 -1
- package/dist/argumentation/framework.d.ts.map +0 -1
- package/dist/argumentation/framework.js.map +0 -1
- package/dist/argumentation/index.d.ts.map +0 -1
- package/dist/argumentation/index.js.map +0 -1
- package/dist/argumentation/types.d.ts.map +0 -1
- package/dist/argumentation/types.js.map +0 -1
- package/dist/bdd/index.d.ts.map +0 -1
- package/dist/bdd/index.js.map +0 -1
- package/dist/bdd/manager.d.ts.map +0 -1
- package/dist/bdd/manager.js.map +0 -1
- package/dist/bdd/types.d.ts.map +0 -1
- package/dist/bdd/types.js.map +0 -1
- package/dist/belief-revision/agm.d.ts.map +0 -1
- package/dist/belief-revision/agm.js.map +0 -1
- package/dist/belief-revision/index.d.ts.map +0 -1
- package/dist/belief-revision/index.js.map +0 -1
- package/dist/belief-revision/parser.d.ts.map +0 -1
- package/dist/belief-revision/parser.js.map +0 -1
- package/dist/belief-revision/sat.d.ts.map +0 -1
- package/dist/belief-revision/sat.js.map +0 -1
- package/dist/belief-revision/types.d.ts.map +0 -1
- package/dist/belief-revision/types.js.map +0 -1
- package/dist/categorical/fin-set.d.ts.map +0 -1
- package/dist/categorical/fin-set.js.map +0 -1
- package/dist/categorical/free.d.ts.map +0 -1
- package/dist/categorical/free.js.map +0 -1
- package/dist/categorical/functor.d.ts.map +0 -1
- package/dist/categorical/functor.js.map +0 -1
- package/dist/categorical/index.d.ts.map +0 -1
- package/dist/categorical/index.js.map +0 -1
- package/dist/categorical/limits.d.ts.map +0 -1
- package/dist/categorical/limits.js.map +0 -1
- package/dist/categorical/monoidal.d.ts.map +0 -1
- package/dist/categorical/monoidal.js.map +0 -1
- package/dist/categorical/poset.d.ts.map +0 -1
- package/dist/categorical/poset.js.map +0 -1
- package/dist/categorical/types.d.ts.map +0 -1
- package/dist/categorical/types.js.map +0 -1
- package/dist/citation-reasoning/derive.d.ts.map +0 -1
- package/dist/citation-reasoning/derive.js.map +0 -1
- package/dist/citation-reasoning/index.d.ts.map +0 -1
- package/dist/citation-reasoning/index.js.map +0 -1
- package/dist/citation-reasoning/types.d.ts.map +0 -1
- package/dist/citation-reasoning/types.js.map +0 -1
- package/dist/coinduction/index.d.ts.map +0 -1
- package/dist/coinduction/index.js.map +0 -1
- package/dist/combinators-ski/abstract.d.ts.map +0 -1
- package/dist/combinators-ski/abstract.js.map +0 -1
- package/dist/combinators-ski/index.d.ts.map +0 -1
- package/dist/combinators-ski/index.js.map +0 -1
- package/dist/combinators-ski/reduce.d.ts.map +0 -1
- package/dist/combinators-ski/reduce.js.map +0 -1
- package/dist/combinators-ski/types.d.ts.map +0 -1
- package/dist/combinators-ski/types.js.map +0 -1
- package/dist/constructive-reals/index.d.ts.map +0 -1
- package/dist/constructive-reals/index.js.map +0 -1
- package/dist/csp-hoare/analysis.d.ts.map +0 -1
- package/dist/csp-hoare/analysis.js.map +0 -1
- package/dist/csp-hoare/examples.d.ts.map +0 -1
- package/dist/csp-hoare/examples.js.map +0 -1
- package/dist/csp-hoare/index.d.ts.map +0 -1
- package/dist/csp-hoare/index.js.map +0 -1
- package/dist/csp-hoare/semantics.d.ts.map +0 -1
- package/dist/csp-hoare/semantics.js.map +0 -1
- package/dist/csp-hoare/types.d.ts.map +0 -1
- package/dist/csp-hoare/types.js.map +0 -1
- package/dist/curry-howard/index.d.ts.map +0 -1
- package/dist/curry-howard/index.js.map +0 -1
- package/dist/curry-howard/infer.d.ts.map +0 -1
- package/dist/curry-howard/infer.js.map +0 -1
- package/dist/curry-howard/proof.d.ts.map +0 -1
- package/dist/curry-howard/proof.js.map +0 -1
- package/dist/curry-howard/reduce.d.ts.map +0 -1
- package/dist/curry-howard/reduce.js.map +0 -1
- package/dist/curry-howard/types.d.ts.map +0 -1
- package/dist/curry-howard/types.js.map +0 -1
- package/dist/educational/checker.d.ts.map +0 -1
- package/dist/educational/checker.js +0 -244
- package/dist/educational/checker.js.map +0 -1
- package/dist/educational/generator.d.ts.map +0 -1
- package/dist/educational/generator.js.map +0 -1
- package/dist/educational/index.d.ts.map +0 -1
- package/dist/educational/index.js.map +0 -1
- package/dist/educational/normalize.d.ts.map +0 -1
- package/dist/educational/normalize.js.map +0 -1
- package/dist/educational/rng.d.ts.map +0 -1
- package/dist/educational/rng.js.map +0 -1
- package/dist/educational/templates.d.ts.map +0 -1
- package/dist/educational/templates.js.map +0 -1
- package/dist/educational/types.d.ts.map +0 -1
- package/dist/educational/types.js.map +0 -1
- package/dist/exporters/coq/index.d.ts +0 -35
- package/dist/exporters/coq/index.d.ts.map +0 -1
- package/dist/exporters/coq/index.js.map +0 -1
- package/dist/fol-prover/cnf.d.ts +0 -10
- package/dist/fol-prover/cnf.d.ts.map +0 -1
- package/dist/fol-prover/cnf.js.map +0 -1
- package/dist/fol-prover/index.d.ts.map +0 -1
- package/dist/fol-prover/index.js.map +0 -1
- package/dist/fol-prover/prove.d.ts +0 -4
- package/dist/fol-prover/prove.d.ts.map +0 -1
- package/dist/fol-prover/prove.js.map +0 -1
- package/dist/fol-prover/resolve.d.ts.map +0 -1
- package/dist/fol-prover/resolve.js.map +0 -1
- package/dist/fol-prover/types.d.ts.map +0 -1
- package/dist/fol-prover/types.js.map +0 -1
- package/dist/fol-prover/unify.d.ts.map +0 -1
- package/dist/fol-prover/unify.js.map +0 -1
- package/dist/fol-prover-equality/demodulate.d.ts.map +0 -1
- package/dist/fol-prover-equality/demodulate.js.map +0 -1
- package/dist/fol-prover-equality/index.d.ts.map +0 -1
- package/dist/fol-prover-equality/index.js.map +0 -1
- package/dist/fol-prover-equality/paramodulate.d.ts.map +0 -1
- package/dist/fol-prover-equality/paramodulate.js.map +0 -1
- package/dist/fol-prover-equality/prove.d.ts +0 -7
- package/dist/fol-prover-equality/prove.d.ts.map +0 -1
- package/dist/fol-prover-equality/prove.js.map +0 -1
- package/dist/fol-prover-equality/term-utils.d.ts.map +0 -1
- package/dist/fol-prover-equality/term-utils.js.map +0 -1
- package/dist/fol-prover-equality/types.d.ts.map +0 -1
- package/dist/fol-prover-equality/types.js.map +0 -1
- package/dist/game-semantics/convert.d.ts +0 -4
- package/dist/game-semantics/convert.d.ts.map +0 -1
- package/dist/game-semantics/convert.js +0 -28
- package/dist/game-semantics/convert.js.map +0 -1
- package/dist/game-semantics/index.d.ts.map +0 -1
- package/dist/game-semantics/index.js.map +0 -1
- package/dist/game-semantics/strategy.d.ts.map +0 -1
- package/dist/game-semantics/strategy.js +0 -336
- package/dist/game-semantics/strategy.js.map +0 -1
- package/dist/game-semantics/types.d.ts.map +0 -1
- package/dist/game-semantics/types.js.map +0 -1
- package/dist/game-theory/common-games.d.ts.map +0 -1
- package/dist/game-theory/common-games.js.map +0 -1
- package/dist/game-theory/dominance.d.ts.map +0 -1
- package/dist/game-theory/dominance.js.map +0 -1
- package/dist/game-theory/index.d.ts.map +0 -1
- package/dist/game-theory/index.js.map +0 -1
- package/dist/game-theory/lemke-howson.d.ts.map +0 -1
- package/dist/game-theory/lemke-howson.js.map +0 -1
- package/dist/game-theory/linalg.d.ts.map +0 -1
- package/dist/game-theory/linalg.js.map +0 -1
- package/dist/game-theory/pure-nash.d.ts.map +0 -1
- package/dist/game-theory/pure-nash.js.map +0 -1
- package/dist/game-theory/support-enumeration.d.ts.map +0 -1
- package/dist/game-theory/support-enumeration.js.map +0 -1
- package/dist/game-theory/types.d.ts.map +0 -1
- package/dist/game-theory/types.js.map +0 -1
- package/dist/higher-order-unify/index.d.ts.map +0 -1
- package/dist/higher-order-unify/index.js.map +0 -1
- package/dist/higher-order-unify/normalize.d.ts.map +0 -1
- package/dist/higher-order-unify/normalize.js.map +0 -1
- package/dist/higher-order-unify/pattern.d.ts.map +0 -1
- package/dist/higher-order-unify/pattern.js.map +0 -1
- package/dist/higher-order-unify/types.d.ts.map +0 -1
- package/dist/higher-order-unify/types.js.map +0 -1
- package/dist/higher-order-unify/unify.d.ts.map +0 -1
- package/dist/higher-order-unify/unify.js.map +0 -1
- package/dist/hindley-milner/index.d.ts.map +0 -1
- package/dist/hindley-milner/index.js.map +0 -1
- package/dist/hindley-milner/infer.d.ts.map +0 -1
- package/dist/hindley-milner/infer.js.map +0 -1
- package/dist/hindley-milner/substitution.d.ts.map +0 -1
- package/dist/hindley-milner/substitution.js.map +0 -1
- package/dist/hindley-milner/types.d.ts.map +0 -1
- package/dist/hindley-milner/types.js.map +0 -1
- package/dist/hott/equality.d.ts.map +0 -1
- package/dist/hott/equality.js.map +0 -1
- package/dist/hott/index.d.ts.map +0 -1
- package/dist/hott/index.js.map +0 -1
- package/dist/hott/infer.d.ts.map +0 -1
- package/dist/hott/infer.js.map +0 -1
- package/dist/hott/normalize.d.ts.map +0 -1
- package/dist/hott/normalize.js.map +0 -1
- package/dist/hott/path-algebra.d.ts.map +0 -1
- package/dist/hott/path-algebra.js.map +0 -1
- package/dist/hott/substitute.d.ts.map +0 -1
- package/dist/hott/substitute.js.map +0 -1
- package/dist/hott/types.d.ts.map +0 -1
- package/dist/hott/types.js.map +0 -1
- package/dist/hyperreal/index.d.ts.map +0 -1
- package/dist/hyperreal/index.js.map +0 -1
- package/dist/information-theory/index.d.ts.map +0 -1
- package/dist/information-theory/index.js.map +0 -1
- package/dist/lambda-calc/church.d.ts.map +0 -1
- package/dist/lambda-calc/church.js.map +0 -1
- package/dist/lambda-calc/combinators.d.ts.map +0 -1
- package/dist/lambda-calc/combinators.js.map +0 -1
- package/dist/lambda-calc/index.d.ts.map +0 -1
- package/dist/lambda-calc/index.js.map +0 -1
- package/dist/lambda-calc/reduce.d.ts.map +0 -1
- package/dist/lambda-calc/reduce.js.map +0 -1
- package/dist/lambda-calc/substitution.d.ts.map +0 -1
- package/dist/lambda-calc/substitution.js.map +0 -1
- package/dist/lambda-calc/types.d.ts.map +0 -1
- package/dist/lambda-calc/types.js.map +0 -1
- package/dist/lemma-synthesis/index.d.ts.map +0 -1
- package/dist/lemma-synthesis/index.js.map +0 -1
- package/dist/lsp/index.d.ts.map +0 -1
- package/dist/lsp/index.js.map +0 -1
- package/dist/lsp/protocol.d.ts.map +0 -1
- package/dist/lsp/protocol.js.map +0 -1
- package/dist/lsp/server.d.ts.map +0 -1
- package/dist/lsp/server.js +0 -529
- package/dist/lsp/server.js.map +0 -1
- package/dist/lsp/types.d.ts.map +0 -1
- package/dist/lsp/types.js.map +0 -1
- package/dist/mltt/equality.d.ts.map +0 -1
- package/dist/mltt/equality.js.map +0 -1
- package/dist/mltt/index.d.ts.map +0 -1
- package/dist/mltt/index.js.map +0 -1
- package/dist/mltt/infer.d.ts.map +0 -1
- package/dist/mltt/infer.js.map +0 -1
- package/dist/mltt/normalize.d.ts.map +0 -1
- package/dist/mltt/normalize.js.map +0 -1
- package/dist/mltt/substitute.d.ts.map +0 -1
- package/dist/mltt/substitute.js.map +0 -1
- package/dist/mltt/types.d.ts.map +0 -1
- package/dist/mltt/types.js.map +0 -1
- package/dist/nbe/index.d.ts.map +0 -1
- package/dist/nbe/index.js.map +0 -1
- package/dist/nbe/nbe.d.ts.map +0 -1
- package/dist/nbe/nbe.js.map +0 -1
- package/dist/nbe/types.d.ts.map +0 -1
- package/dist/nbe/types.js.map +0 -1
- package/dist/optimization/branch-and-bound.d.ts.map +0 -1
- package/dist/optimization/branch-and-bound.js.map +0 -1
- package/dist/optimization/index.d.ts.map +0 -1
- package/dist/optimization/index.js.map +0 -1
- package/dist/optimization/simplex.d.ts.map +0 -1
- package/dist/optimization/simplex.js.map +0 -1
- package/dist/optimization/standard-form.d.ts.map +0 -1
- package/dist/optimization/standard-form.js.map +0 -1
- package/dist/optimization/types.d.ts.map +0 -1
- package/dist/optimization/types.js.map +0 -1
- package/dist/plugin-system/demo-min-logic.d.ts.map +0 -1
- package/dist/plugin-system/demo-min-logic.js.map +0 -1
- package/dist/plugin-system/errors.d.ts.map +0 -1
- package/dist/plugin-system/errors.js.map +0 -1
- package/dist/plugin-system/index.d.ts.map +0 -1
- package/dist/plugin-system/index.js.map +0 -1
- package/dist/plugin-system/registry.d.ts.map +0 -1
- package/dist/plugin-system/registry.js.map +0 -1
- package/dist/plugin-system/types.d.ts +0 -23
- package/dist/plugin-system/types.d.ts.map +0 -1
- package/dist/plugin-system/types.js.map +0 -1
- package/dist/plugin-system/validate.d.ts.map +0 -1
- package/dist/plugin-system/validate.js.map +0 -1
- package/dist/profile-bridge/index.d.ts +0 -64
- package/dist/profile-bridge/index.d.ts.map +0 -1
- package/dist/profile-bridge/index.js.map +0 -1
- package/dist/profiles/aristotelian/syllogistic.d.ts +0 -14
- package/dist/profiles/aristotelian/syllogistic.d.ts.map +0 -1
- package/dist/profiles/aristotelian/syllogistic.js.map +0 -1
- package/dist/profiles/arithmetic/index.d.ts +0 -15
- package/dist/profiles/arithmetic/index.d.ts.map +0 -1
- package/dist/profiles/arithmetic/index.js.map +0 -1
- package/dist/profiles/classical/cdcl.d.ts +0 -34
- package/dist/profiles/classical/cdcl.d.ts.map +0 -1
- package/dist/profiles/classical/cdcl.js.map +0 -1
- package/dist/profiles/classical/dpll.d.ts +0 -20
- package/dist/profiles/classical/dpll.d.ts.map +0 -1
- package/dist/profiles/classical/dpll.js.map +0 -1
- package/dist/profiles/classical/first-order.d.ts +0 -20
- package/dist/profiles/classical/first-order.d.ts.map +0 -1
- package/dist/profiles/classical/first-order.js.map +0 -1
- package/dist/profiles/classical/parallel-sat.d.ts.map +0 -1
- package/dist/profiles/classical/parallel-sat.js.map +0 -1
- package/dist/profiles/classical/propositional.d.ts +0 -30
- package/dist/profiles/classical/propositional.d.ts.map +0 -1
- package/dist/profiles/classical/propositional.js +0 -2868
- package/dist/profiles/classical/propositional.js.map +0 -1
- package/dist/profiles/classical/sat-preprocess.d.ts.map +0 -1
- package/dist/profiles/classical/sat-preprocess.js.map +0 -1
- package/dist/profiles/classical/undecidability-detector.d.ts +0 -13
- package/dist/profiles/classical/undecidability-detector.d.ts.map +0 -1
- package/dist/profiles/classical/undecidability-detector.js.map +0 -1
- package/dist/profiles/ctl/check.d.ts.map +0 -1
- package/dist/profiles/ctl/check.js.map +0 -1
- package/dist/profiles/ctl/index.d.ts.map +0 -1
- package/dist/profiles/ctl/index.js.map +0 -1
- package/dist/profiles/ctl/types.d.ts.map +0 -1
- package/dist/profiles/ctl/types.js.map +0 -1
- package/dist/profiles/ctl/witness.d.ts.map +0 -1
- package/dist/profiles/ctl/witness.js.map +0 -1
- package/dist/profiles/default-logic/entailment.d.ts.map +0 -1
- package/dist/profiles/default-logic/entailment.js.map +0 -1
- package/dist/profiles/default-logic/extensions.d.ts.map +0 -1
- package/dist/profiles/default-logic/extensions.js.map +0 -1
- package/dist/profiles/default-logic/index.d.ts.map +0 -1
- package/dist/profiles/default-logic/index.js.map +0 -1
- package/dist/profiles/default-logic/types.d.ts.map +0 -1
- package/dist/profiles/default-logic/types.js.map +0 -1
- package/dist/profiles/deontic/standard.d.ts +0 -10
- package/dist/profiles/deontic/standard.d.ts.map +0 -1
- package/dist/profiles/deontic/standard.js.map +0 -1
- package/dist/profiles/description-logic/index.d.ts.map +0 -1
- package/dist/profiles/description-logic/index.js.map +0 -1
- package/dist/profiles/description-logic/nnf.d.ts.map +0 -1
- package/dist/profiles/description-logic/nnf.js.map +0 -1
- package/dist/profiles/description-logic/tableau.d.ts.map +0 -1
- package/dist/profiles/description-logic/tableau.js.map +0 -1
- package/dist/profiles/description-logic/types.d.ts.map +0 -1
- package/dist/profiles/description-logic/types.js.map +0 -1
- package/dist/profiles/epistemic/s5.d.ts +0 -10
- package/dist/profiles/epistemic/s5.d.ts.map +0 -1
- package/dist/profiles/epistemic/s5.js.map +0 -1
- package/dist/profiles/hol/connectives.d.ts.map +0 -1
- package/dist/profiles/hol/connectives.js.map +0 -1
- package/dist/profiles/hol/index.d.ts.map +0 -1
- package/dist/profiles/hol/index.js.map +0 -1
- package/dist/profiles/hol/rules.d.ts.map +0 -1
- package/dist/profiles/hol/rules.js.map +0 -1
- package/dist/profiles/hol/term.d.ts.map +0 -1
- package/dist/profiles/hol/term.js.map +0 -1
- package/dist/profiles/hol/type-system.d.ts.map +0 -1
- package/dist/profiles/hol/type-system.js.map +0 -1
- package/dist/profiles/hol/types.d.ts.map +0 -1
- package/dist/profiles/hol/types.js.map +0 -1
- package/dist/profiles/hybrid-logic/index.d.ts.map +0 -1
- package/dist/profiles/hybrid-logic/index.js.map +0 -1
- package/dist/profiles/hybrid-logic/sat.d.ts.map +0 -1
- package/dist/profiles/hybrid-logic/sat.js.map +0 -1
- package/dist/profiles/hybrid-logic/semantics.d.ts.map +0 -1
- package/dist/profiles/hybrid-logic/semantics.js.map +0 -1
- package/dist/profiles/hybrid-logic/types.d.ts.map +0 -1
- package/dist/profiles/hybrid-logic/types.js.map +0 -1
- package/dist/profiles/index.d.ts.map +0 -1
- package/dist/profiles/index.js.map +0 -1
- package/dist/profiles/interface.d.ts +0 -11
- package/dist/profiles/interface.d.ts.map +0 -1
- package/dist/profiles/interface.js.map +0 -1
- package/dist/profiles/intuitionistic/propositional.d.ts +0 -14
- package/dist/profiles/intuitionistic/propositional.d.ts.map +0 -1
- package/dist/profiles/intuitionistic/propositional.js.map +0 -1
- package/dist/profiles/intuitionistic-nj/formula.d.ts.map +0 -1
- package/dist/profiles/intuitionistic-nj/formula.js.map +0 -1
- package/dist/profiles/intuitionistic-nj/index.d.ts.map +0 -1
- package/dist/profiles/intuitionistic-nj/index.js.map +0 -1
- package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +0 -1
- package/dist/profiles/intuitionistic-nj/kripke.js.map +0 -1
- package/dist/profiles/intuitionistic-nj/prover.d.ts.map +0 -1
- package/dist/profiles/intuitionistic-nj/prover.js.map +0 -1
- package/dist/profiles/intuitionistic-nj/types.d.ts.map +0 -1
- package/dist/profiles/intuitionistic-nj/types.js.map +0 -1
- package/dist/profiles/ltl-sat/index.d.ts.map +0 -1
- package/dist/profiles/ltl-sat/index.js.map +0 -1
- package/dist/profiles/ltl-sat/sat.d.ts.map +0 -1
- package/dist/profiles/ltl-sat/sat.js.map +0 -1
- package/dist/profiles/ltl-sat/tableau.d.ts.map +0 -1
- package/dist/profiles/ltl-sat/tableau.js.map +0 -1
- package/dist/profiles/ltl-sat/types.d.ts.map +0 -1
- package/dist/profiles/ltl-sat/types.js.map +0 -1
- package/dist/profiles/many-valued/index.d.ts.map +0 -1
- package/dist/profiles/many-valued/index.js.map +0 -1
- package/dist/profiles/modal/k.d.ts +0 -10
- package/dist/profiles/modal/k.d.ts.map +0 -1
- package/dist/profiles/modal/k.js.map +0 -1
- package/dist/profiles/modal-frame-axioms/formula.d.ts.map +0 -1
- package/dist/profiles/modal-frame-axioms/formula.js.map +0 -1
- package/dist/profiles/modal-frame-axioms/index.d.ts.map +0 -1
- package/dist/profiles/modal-frame-axioms/index.js.map +0 -1
- package/dist/profiles/modal-frame-axioms/systems.d.ts.map +0 -1
- package/dist/profiles/modal-frame-axioms/systems.js.map +0 -1
- package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +0 -1
- package/dist/profiles/modal-frame-axioms/tableau.js.map +0 -1
- package/dist/profiles/modal-frame-axioms/types.d.ts.map +0 -1
- package/dist/profiles/modal-frame-axioms/types.js.map +0 -1
- package/dist/profiles/mu-calculus/check.d.ts.map +0 -1
- package/dist/profiles/mu-calculus/check.js.map +0 -1
- package/dist/profiles/mu-calculus/ctl-translate.d.ts.map +0 -1
- package/dist/profiles/mu-calculus/ctl-translate.js.map +0 -1
- package/dist/profiles/mu-calculus/index.d.ts.map +0 -1
- package/dist/profiles/mu-calculus/index.js.map +0 -1
- package/dist/profiles/mu-calculus/types.d.ts.map +0 -1
- package/dist/profiles/mu-calculus/types.js.map +0 -1
- package/dist/profiles/mu-calculus/wellformed.d.ts.map +0 -1
- package/dist/profiles/mu-calculus/wellformed.js.map +0 -1
- package/dist/profiles/paraconsistent/belnap.d.ts +0 -28
- package/dist/profiles/paraconsistent/belnap.d.ts.map +0 -1
- package/dist/profiles/paraconsistent/belnap.js.map +0 -1
- package/dist/profiles/probabilistic/basic.d.ts +0 -18
- package/dist/profiles/probabilistic/basic.d.ts.map +0 -1
- package/dist/profiles/probabilistic/basic.js.map +0 -1
- package/dist/profiles/sequent-g3/index.d.ts.map +0 -1
- package/dist/profiles/sequent-g3/index.js.map +0 -1
- package/dist/profiles/sequent-g3/latex.d.ts.map +0 -1
- package/dist/profiles/sequent-g3/latex.js.map +0 -1
- package/dist/profiles/sequent-g3/normalize.d.ts +0 -15
- package/dist/profiles/sequent-g3/normalize.d.ts.map +0 -1
- package/dist/profiles/sequent-g3/normalize.js.map +0 -1
- package/dist/profiles/sequent-g3/prover.d.ts +0 -16
- package/dist/profiles/sequent-g3/prover.d.ts.map +0 -1
- package/dist/profiles/sequent-g3/prover.js.map +0 -1
- package/dist/profiles/sequent-g3/types.d.ts +0 -30
- package/dist/profiles/sequent-g3/types.d.ts.map +0 -1
- package/dist/profiles/sequent-g3/types.js.map +0 -1
- package/dist/profiles/sequent-lk/cut-elimination.d.ts.map +0 -1
- package/dist/profiles/sequent-lk/cut-elimination.js.map +0 -1
- package/dist/profiles/sequent-lk/index.d.ts.map +0 -1
- package/dist/profiles/sequent-lk/index.js.map +0 -1
- package/dist/profiles/sequent-lk/prover.d.ts.map +0 -1
- package/dist/profiles/sequent-lk/prover.js.map +0 -1
- package/dist/profiles/sequent-lk/types.d.ts.map +0 -1
- package/dist/profiles/sequent-lk/types.js.map +0 -1
- package/dist/profiles/sequent-lk/util.d.ts.map +0 -1
- package/dist/profiles/sequent-lk/util.js.map +0 -1
- package/dist/profiles/shared/base-profile.d.ts +0 -22
- package/dist/profiles/shared/base-profile.d.ts.map +0 -1
- package/dist/profiles/shared/base-profile.js +0 -219
- package/dist/profiles/shared/base-profile.js.map +0 -1
- package/dist/profiles/shared/tableau-engine.d.ts +0 -73
- package/dist/profiles/shared/tableau-engine.d.ts.map +0 -1
- package/dist/profiles/shared/tableau-engine.js +0 -684
- package/dist/profiles/shared/tableau-engine.js.map +0 -1
- package/dist/profiles/substructural/index.d.ts.map +0 -1
- package/dist/profiles/substructural/index.js.map +0 -1
- package/dist/profiles/substructural/prover.d.ts.map +0 -1
- package/dist/profiles/substructural/prover.js.map +0 -1
- package/dist/profiles/substructural/types.d.ts.map +0 -1
- package/dist/profiles/substructural/types.js.map +0 -1
- package/dist/profiles/temporal/ltl.d.ts +0 -12
- package/dist/profiles/temporal/ltl.d.ts.map +0 -1
- package/dist/profiles/temporal/ltl.js.map +0 -1
- package/dist/proof-exchange/index.d.ts +0 -24
- package/dist/proof-exchange/index.d.ts.map +0 -1
- package/dist/proof-exchange/index.js.map +0 -1
- package/dist/proof-nets/construct.d.ts.map +0 -1
- package/dist/proof-nets/construct.js.map +0 -1
- package/dist/proof-nets/correctness.d.ts.map +0 -1
- package/dist/proof-nets/correctness.js.map +0 -1
- package/dist/proof-nets/cut-elim.d.ts.map +0 -1
- package/dist/proof-nets/cut-elim.js.map +0 -1
- package/dist/proof-nets/index.d.ts.map +0 -1
- package/dist/proof-nets/index.js.map +0 -1
- package/dist/proof-nets/types.d.ts.map +0 -1
- package/dist/proof-nets/types.js.map +0 -1
- package/dist/refinement-types/checker.d.ts.map +0 -1
- package/dist/refinement-types/checker.js.map +0 -1
- package/dist/refinement-types/index.d.ts.map +0 -1
- package/dist/refinement-types/index.js.map +0 -1
- package/dist/refinement-types/predicate.d.ts.map +0 -1
- package/dist/refinement-types/predicate.js.map +0 -1
- package/dist/refinement-types/solver.d.ts.map +0 -1
- package/dist/refinement-types/solver.js.map +0 -1
- package/dist/refinement-types/subtype.d.ts.map +0 -1
- package/dist/refinement-types/subtype.js.map +0 -1
- package/dist/refinement-types/types.d.ts.map +0 -1
- package/dist/refinement-types/types.js.map +0 -1
- package/dist/runtime/abduction/entails.d.ts.map +0 -1
- package/dist/runtime/abduction/entails.js.map +0 -1
- package/dist/runtime/abduction/find.d.ts.map +0 -1
- package/dist/runtime/abduction/find.js.map +0 -1
- package/dist/runtime/abduction/index.d.ts.map +0 -1
- package/dist/runtime/abduction/index.js.map +0 -1
- package/dist/runtime/abduction/types.d.ts.map +0 -1
- package/dist/runtime/abduction/types.js.map +0 -1
- package/dist/runtime/bayesian/factor.d.ts.map +0 -1
- package/dist/runtime/bayesian/factor.js.map +0 -1
- package/dist/runtime/bayesian/index.d.ts.map +0 -1
- package/dist/runtime/bayesian/index.js.map +0 -1
- package/dist/runtime/bayesian/inference.d.ts.map +0 -1
- package/dist/runtime/bayesian/inference.js.map +0 -1
- package/dist/runtime/bayesian/types.d.ts.map +0 -1
- package/dist/runtime/bayesian/types.js.map +0 -1
- package/dist/runtime/csp/ac3.d.ts.map +0 -1
- package/dist/runtime/csp/ac3.js.map +0 -1
- package/dist/runtime/csp/backtrack.d.ts.map +0 -1
- package/dist/runtime/csp/backtrack.js.map +0 -1
- package/dist/runtime/csp/builtins.d.ts.map +0 -1
- package/dist/runtime/csp/builtins.js.map +0 -1
- package/dist/runtime/csp/index.d.ts.map +0 -1
- package/dist/runtime/csp/index.js.map +0 -1
- package/dist/runtime/csp/types.d.ts.map +0 -1
- package/dist/runtime/csp/types.js.map +0 -1
- package/dist/runtime/fca/context.d.ts.map +0 -1
- package/dist/runtime/fca/context.js.map +0 -1
- package/dist/runtime/fca/implications.d.ts.map +0 -1
- package/dist/runtime/fca/implications.js.map +0 -1
- package/dist/runtime/fca/index.d.ts.map +0 -1
- package/dist/runtime/fca/index.js.map +0 -1
- package/dist/runtime/fca/lattice.d.ts.map +0 -1
- package/dist/runtime/fca/lattice.js.map +0 -1
- package/dist/runtime/fca/next-closure.d.ts.map +0 -1
- package/dist/runtime/fca/next-closure.js.map +0 -1
- package/dist/runtime/fca/types.d.ts.map +0 -1
- package/dist/runtime/fca/types.js.map +0 -1
- package/dist/runtime/markov-logic/grounding.d.ts.map +0 -1
- package/dist/runtime/markov-logic/grounding.js.map +0 -1
- package/dist/runtime/markov-logic/index.d.ts.map +0 -1
- package/dist/runtime/markov-logic/index.js.map +0 -1
- package/dist/runtime/markov-logic/inference.d.ts.map +0 -1
- package/dist/runtime/markov-logic/inference.js.map +0 -1
- package/dist/runtime/markov-logic/parser.d.ts.map +0 -1
- package/dist/runtime/markov-logic/parser.js.map +0 -1
- package/dist/runtime/markov-logic/types.d.ts.map +0 -1
- package/dist/runtime/markov-logic/types.js.map +0 -1
- package/dist/runtime/mus/extract.d.ts.map +0 -1
- package/dist/runtime/mus/extract.js.map +0 -1
- package/dist/runtime/mus/index.d.ts.map +0 -1
- package/dist/runtime/mus/index.js.map +0 -1
- package/dist/runtime/mus/quickxplain.d.ts.map +0 -1
- package/dist/runtime/mus/quickxplain.js.map +0 -1
- package/dist/runtime/mus/types.d.ts.map +0 -1
- package/dist/runtime/mus/types.js.map +0 -1
- package/dist/runtime/planning/astar.d.ts.map +0 -1
- package/dist/runtime/planning/astar.js.map +0 -1
- package/dist/runtime/planning/bfs.d.ts.map +0 -1
- package/dist/runtime/planning/bfs.js.map +0 -1
- package/dist/runtime/planning/ground.d.ts.map +0 -1
- package/dist/runtime/planning/ground.js.map +0 -1
- package/dist/runtime/planning/heuristic.d.ts.map +0 -1
- package/dist/runtime/planning/heuristic.js.map +0 -1
- package/dist/runtime/planning/index.d.ts.map +0 -1
- package/dist/runtime/planning/index.js.map +0 -1
- package/dist/runtime/planning/types.d.ts.map +0 -1
- package/dist/runtime/planning/types.js.map +0 -1
- package/dist/runtime/proof-minify/index.d.ts.map +0 -1
- package/dist/runtime/proof-minify/index.js.map +0 -1
- package/dist/runtime/proof-minify/minify.d.ts.map +0 -1
- package/dist/runtime/proof-minify/minify.js.map +0 -1
- package/dist/runtime/proof-minify/types.d.ts.map +0 -1
- package/dist/runtime/proof-minify/types.js.map +0 -1
- package/dist/runtime/smt/index.d.ts.map +0 -1
- package/dist/runtime/smt/index.js.map +0 -1
- package/dist/runtime/smt/mock-backend.d.ts.map +0 -1
- package/dist/runtime/smt/mock-backend.js.map +0 -1
- package/dist/runtime/smt/serializer.d.ts.map +0 -1
- package/dist/runtime/smt/serializer.js.map +0 -1
- package/dist/runtime/smt/subprocess-backend.d.ts.map +0 -1
- package/dist/runtime/smt/subprocess-backend.js.map +0 -1
- package/dist/runtime/smt/types.d.ts.map +0 -1
- package/dist/runtime/smt/types.js.map +0 -1
- package/dist/smt-lib/ast.d.ts.map +0 -1
- package/dist/smt-lib/ast.js.map +0 -1
- package/dist/smt-lib/emitter.d.ts.map +0 -1
- package/dist/smt-lib/emitter.js.map +0 -1
- package/dist/smt-lib/index.d.ts.map +0 -1
- package/dist/smt-lib/index.js.map +0 -1
- package/dist/smt-lib/parser.d.ts.map +0 -1
- package/dist/smt-lib/parser.js.map +0 -1
- package/dist/smt-lib/tokenizer.d.ts.map +0 -1
- package/dist/smt-lib/tokenizer.js.map +0 -1
- package/dist/system-f/index.d.ts.map +0 -1
- package/dist/system-f/index.js.map +0 -1
- package/dist/system-f/infer.d.ts.map +0 -1
- package/dist/system-f/infer.js.map +0 -1
- package/dist/system-f/reduce.d.ts.map +0 -1
- package/dist/system-f/reduce.js.map +0 -1
- package/dist/system-f/types.d.ts.map +0 -1
- package/dist/system-f/types.js.map +0 -1
- package/dist/tableau-framework/TableauProver.d.ts.map +0 -1
- package/dist/tableau-framework/TableauProver.js.map +0 -1
- package/dist/tableau-framework/index.d.ts.map +0 -1
- package/dist/tableau-framework/index.js.map +0 -1
- package/dist/tableau-framework/propositional.d.ts.map +0 -1
- package/dist/tableau-framework/propositional.js.map +0 -1
- package/dist/tableau-framework/types.d.ts.map +0 -1
- package/dist/tableau-framework/types.js.map +0 -1
- package/dist/tactic-dsl/combinators.d.ts.map +0 -1
- package/dist/tactic-dsl/combinators.js.map +0 -1
- package/dist/tactic-dsl/index.d.ts.map +0 -1
- package/dist/tactic-dsl/index.js.map +0 -1
- package/dist/tactic-dsl/tactics.d.ts.map +0 -1
- package/dist/tactic-dsl/tactics.js.map +0 -1
- package/dist/tactic-dsl/types.d.ts.map +0 -1
- package/dist/tactic-dsl/types.js.map +0 -1
- package/dist/tests/abduction/abduction.test.d.ts.map +0 -1
- package/dist/tests/abduction/abduction.test.js +0 -380
- package/dist/tests/abduction/abduction.test.js.map +0 -1
- package/dist/tests/argumentation/dung.test.d.ts.map +0 -1
- package/dist/tests/argumentation/dung.test.js +0 -219
- package/dist/tests/argumentation/dung.test.js.map +0 -1
- package/dist/tests/bayesian/bayesian.test.d.ts.map +0 -1
- package/dist/tests/bayesian/bayesian.test.js +0 -328
- package/dist/tests/bayesian/bayesian.test.js.map +0 -1
- package/dist/tests/bdd/manager.test.d.ts.map +0 -1
- package/dist/tests/bdd/manager.test.js +0 -472
- package/dist/tests/bdd/manager.test.js.map +0 -1
- package/dist/tests/belief-revision/agm.test.d.ts.map +0 -1
- package/dist/tests/belief-revision/agm.test.js +0 -173
- package/dist/tests/belief-revision/agm.test.js.map +0 -1
- package/dist/tests/categorical/categorical.test.d.ts.map +0 -1
- package/dist/tests/categorical/categorical.test.js +0 -300
- package/dist/tests/categorical/categorical.test.js.map +0 -1
- package/dist/tests/citation-reasoning/citation-reasoning.test.d.ts.map +0 -1
- package/dist/tests/citation-reasoning/citation-reasoning.test.js +0 -240
- package/dist/tests/citation-reasoning/citation-reasoning.test.js.map +0 -1
- package/dist/tests/coinduction/coinduction.test.d.ts.map +0 -1
- package/dist/tests/coinduction/coinduction.test.js +0 -217
- package/dist/tests/coinduction/coinduction.test.js.map +0 -1
- package/dist/tests/combinators-ski/combinators-ski.test.d.ts.map +0 -1
- package/dist/tests/combinators-ski/combinators-ski.test.js +0 -211
- package/dist/tests/combinators-ski/combinators-ski.test.js.map +0 -1
- package/dist/tests/constructive-reals/constructive-reals.test.d.ts.map +0 -1
- package/dist/tests/constructive-reals/constructive-reals.test.js +0 -357
- package/dist/tests/constructive-reals/constructive-reals.test.js.map +0 -1
- package/dist/tests/csp/csp.test.d.ts.map +0 -1
- package/dist/tests/csp/csp.test.js +0 -292
- package/dist/tests/csp/csp.test.js.map +0 -1
- package/dist/tests/csp-hoare/csp-hoare.test.d.ts.map +0 -1
- package/dist/tests/csp-hoare/csp-hoare.test.js +0 -313
- package/dist/tests/csp-hoare/csp-hoare.test.js.map +0 -1
- package/dist/tests/ctl/check.test.d.ts.map +0 -1
- package/dist/tests/ctl/check.test.js +0 -337
- package/dist/tests/ctl/check.test.js.map +0 -1
- package/dist/tests/curry-howard/infer.test.d.ts.map +0 -1
- package/dist/tests/curry-howard/infer.test.js +0 -93
- package/dist/tests/curry-howard/infer.test.js.map +0 -1
- package/dist/tests/curry-howard/proof.test.d.ts.map +0 -1
- package/dist/tests/curry-howard/proof.test.js +0 -105
- package/dist/tests/curry-howard/proof.test.js.map +0 -1
- package/dist/tests/curry-howard/reduce.test.d.ts.map +0 -1
- package/dist/tests/curry-howard/reduce.test.js +0 -109
- package/dist/tests/curry-howard/reduce.test.js.map +0 -1
- package/dist/tests/default-logic/extensions.test.d.ts.map +0 -1
- package/dist/tests/default-logic/extensions.test.js +0 -323
- package/dist/tests/default-logic/extensions.test.js.map +0 -1
- package/dist/tests/description-logic/alc.test.d.ts.map +0 -1
- package/dist/tests/description-logic/alc.test.js +0 -253
- package/dist/tests/description-logic/alc.test.js.map +0 -1
- package/dist/tests/educational/checker.test.d.ts.map +0 -1
- package/dist/tests/educational/checker.test.js +0 -212
- package/dist/tests/educational/checker.test.js.map +0 -1
- package/dist/tests/educational/generator.test.d.ts.map +0 -1
- package/dist/tests/educational/generator.test.js +0 -137
- package/dist/tests/educational/generator.test.js.map +0 -1
- package/dist/tests/exporters/coq/coq-exporter.test.d.ts.map +0 -1
- package/dist/tests/exporters/coq/coq-exporter.test.js +0 -353
- package/dist/tests/exporters/coq/coq-exporter.test.js.map +0 -1
- package/dist/tests/fca/fca.test.d.ts.map +0 -1
- package/dist/tests/fca/fca.test.js +0 -317
- package/dist/tests/fca/fca.test.js.map +0 -1
- package/dist/tests/fol-prover/cnf.test.d.ts.map +0 -1
- package/dist/tests/fol-prover/cnf.test.js +0 -74
- package/dist/tests/fol-prover/cnf.test.js.map +0 -1
- package/dist/tests/fol-prover/prove.test.d.ts.map +0 -1
- package/dist/tests/fol-prover/prove.test.js +0 -106
- package/dist/tests/fol-prover/prove.test.js.map +0 -1
- package/dist/tests/fol-prover/unify.test.d.ts.map +0 -1
- package/dist/tests/fol-prover/unify.test.js +0 -66
- package/dist/tests/fol-prover/unify.test.js.map +0 -1
- package/dist/tests/fol-prover-equality/prove.test.d.ts.map +0 -1
- package/dist/tests/fol-prover-equality/prove.test.js +0 -179
- package/dist/tests/fol-prover-equality/prove.test.js.map +0 -1
- package/dist/tests/game-semantics/game-semantics.test.d.ts.map +0 -1
- package/dist/tests/game-semantics/game-semantics.test.js +0 -143
- package/dist/tests/game-semantics/game-semantics.test.js.map +0 -1
- package/dist/tests/game-theory/game-theory.test.d.ts.map +0 -1
- package/dist/tests/game-theory/game-theory.test.js +0 -252
- package/dist/tests/game-theory/game-theory.test.js.map +0 -1
- package/dist/tests/higher-order-unify/ho-unify.test.d.ts.map +0 -1
- package/dist/tests/higher-order-unify/ho-unify.test.js +0 -264
- package/dist/tests/higher-order-unify/ho-unify.test.js.map +0 -1
- package/dist/tests/hindley-milner/hindley-milner.test.d.ts.map +0 -1
- package/dist/tests/hindley-milner/hindley-milner.test.js +0 -327
- package/dist/tests/hindley-milner/hindley-milner.test.js.map +0 -1
- package/dist/tests/hol/hol.test.d.ts.map +0 -1
- package/dist/tests/hol/hol.test.js +0 -340
- package/dist/tests/hol/hol.test.js.map +0 -1
- package/dist/tests/hott/hott.test.d.ts.map +0 -1
- package/dist/tests/hott/hott.test.js +0 -271
- package/dist/tests/hott/hott.test.js.map +0 -1
- package/dist/tests/hybrid-logic/semantics.test.d.ts.map +0 -1
- package/dist/tests/hybrid-logic/semantics.test.js +0 -169
- package/dist/tests/hybrid-logic/semantics.test.js.map +0 -1
- package/dist/tests/hyperreal/hyperreal.test.d.ts.map +0 -1
- package/dist/tests/hyperreal/hyperreal.test.js +0 -219
- package/dist/tests/hyperreal/hyperreal.test.js.map +0 -1
- package/dist/tests/information-theory/information-theory.test.d.ts.map +0 -1
- package/dist/tests/information-theory/information-theory.test.js +0 -291
- package/dist/tests/information-theory/information-theory.test.js.map +0 -1
- package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +0 -1
- package/dist/tests/intuitionistic-nj/nj.test.js +0 -216
- package/dist/tests/intuitionistic-nj/nj.test.js.map +0 -1
- package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +0 -1
- package/dist/tests/lambda-calc/lambda-calc.test.js +0 -164
- package/dist/tests/lambda-calc/lambda-calc.test.js.map +0 -1
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.d.ts.map +0 -1
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.js +0 -460
- package/dist/tests/lemma-synthesis/lemma-synthesis.test.js.map +0 -1
- package/dist/tests/lsp/server.test.d.ts.map +0 -1
- package/dist/tests/lsp/server.test.js +0 -406
- package/dist/tests/lsp/server.test.js.map +0 -1
- package/dist/tests/ltl-sat/sat.test.d.ts.map +0 -1
- package/dist/tests/ltl-sat/sat.test.js +0 -160
- package/dist/tests/ltl-sat/sat.test.js.map +0 -1
- package/dist/tests/many-valued/many-valued.test.d.ts.map +0 -1
- package/dist/tests/many-valued/many-valued.test.js +0 -150
- package/dist/tests/many-valued/many-valued.test.js.map +0 -1
- package/dist/tests/markov-logic/markov-logic.test.d.ts.map +0 -1
- package/dist/tests/markov-logic/markov-logic.test.js +0 -349
- package/dist/tests/markov-logic/markov-logic.test.js.map +0 -1
- package/dist/tests/mltt/mltt.test.d.ts.map +0 -1
- package/dist/tests/mltt/mltt.test.js +0 -181
- package/dist/tests/mltt/mltt.test.js.map +0 -1
- package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +0 -1
- package/dist/tests/modal-frame-axioms/frame-axioms.test.js +0 -236
- package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +0 -1
- package/dist/tests/mu-calculus/check.test.d.ts.map +0 -1
- package/dist/tests/mu-calculus/check.test.js +0 -234
- package/dist/tests/mu-calculus/check.test.js.map +0 -1
- package/dist/tests/mus/extract.test.d.ts.map +0 -1
- package/dist/tests/mus/extract.test.js +0 -352
- package/dist/tests/mus/extract.test.js.map +0 -1
- package/dist/tests/nbe/nbe.test.d.ts.map +0 -1
- package/dist/tests/nbe/nbe.test.js +0 -121
- package/dist/tests/nbe/nbe.test.js.map +0 -1
- package/dist/tests/optimization/ilp.test.d.ts.map +0 -1
- package/dist/tests/optimization/ilp.test.js +0 -204
- package/dist/tests/optimization/ilp.test.js.map +0 -1
- package/dist/tests/optimization/lp.test.d.ts.map +0 -1
- package/dist/tests/optimization/lp.test.js +0 -224
- package/dist/tests/optimization/lp.test.js.map +0 -1
- package/dist/tests/planning/planning.test.d.ts.map +0 -1
- package/dist/tests/planning/planning.test.js +0 -397
- package/dist/tests/planning/planning.test.js.map +0 -1
- package/dist/tests/plugin-system/demo-min-logic.test.d.ts.map +0 -1
- package/dist/tests/plugin-system/demo-min-logic.test.js +0 -85
- package/dist/tests/plugin-system/demo-min-logic.test.js.map +0 -1
- package/dist/tests/plugin-system/registry.test.d.ts.map +0 -1
- package/dist/tests/plugin-system/registry.test.js +0 -88
- package/dist/tests/plugin-system/registry.test.js.map +0 -1
- package/dist/tests/plugin-system/validate.test.d.ts.map +0 -1
- package/dist/tests/plugin-system/validate.test.js +0 -101
- package/dist/tests/plugin-system/validate.test.js.map +0 -1
- package/dist/tests/profile-bridge/translations.test.d.ts.map +0 -1
- package/dist/tests/profile-bridge/translations.test.js +0 -266
- package/dist/tests/profile-bridge/translations.test.js.map +0 -1
- package/dist/tests/profiles.test.d.ts.map +0 -1
- package/dist/tests/profiles.test.js +0 -393
- package/dist/tests/profiles.test.js.map +0 -1
- package/dist/tests/proof-exchange/proof-exchange.test.d.ts.map +0 -1
- package/dist/tests/proof-exchange/proof-exchange.test.js +0 -161
- package/dist/tests/proof-exchange/proof-exchange.test.js.map +0 -1
- package/dist/tests/proof-minify/minify.test.d.ts.map +0 -1
- package/dist/tests/proof-minify/minify.test.js +0 -281
- package/dist/tests/proof-minify/minify.test.js.map +0 -1
- package/dist/tests/proof-nets/proof-nets.test.d.ts.map +0 -1
- package/dist/tests/proof-nets/proof-nets.test.js +0 -263
- package/dist/tests/proof-nets/proof-nets.test.js.map +0 -1
- package/dist/tests/refinement-types/refinement-types.test.d.ts.map +0 -1
- package/dist/tests/refinement-types/refinement-types.test.js +0 -174
- package/dist/tests/refinement-types/refinement-types.test.js.map +0 -1
- package/dist/tests/sat-v2/clause-learning.test.d.ts.map +0 -1
- package/dist/tests/sat-v2/clause-learning.test.js +0 -73
- package/dist/tests/sat-v2/clause-learning.test.js.map +0 -1
- package/dist/tests/sat-v2/lbd.test.d.ts.map +0 -1
- package/dist/tests/sat-v2/lbd.test.js +0 -82
- package/dist/tests/sat-v2/lbd.test.js.map +0 -1
- package/dist/tests/sat-v2/luby.test.d.ts.map +0 -1
- package/dist/tests/sat-v2/luby.test.js +0 -58
- package/dist/tests/sat-v2/luby.test.js.map +0 -1
- package/dist/tests/sat-v2/phase-saving.test.d.ts.map +0 -1
- package/dist/tests/sat-v2/phase-saving.test.js +0 -38
- package/dist/tests/sat-v2/phase-saving.test.js.map +0 -1
- package/dist/tests/sat-v2/solver-end-to-end.test.d.ts.map +0 -1
- package/dist/tests/sat-v2/solver-end-to-end.test.js +0 -199
- package/dist/tests/sat-v2/solver-end-to-end.test.js.map +0 -1
- package/dist/tests/sat-v2/vsids.test.d.ts.map +0 -1
- package/dist/tests/sat-v2/vsids.test.js +0 -69
- package/dist/tests/sat-v2/vsids.test.js.map +0 -1
- package/dist/tests/sat-v2-incremental/basic.test.d.ts.map +0 -1
- package/dist/tests/sat-v2-incremental/basic.test.js +0 -352
- package/dist/tests/sat-v2-incremental/basic.test.js.map +0 -1
- package/dist/tests/sequent-g3/prover.test.d.ts.map +0 -1
- package/dist/tests/sequent-g3/prover.test.js +0 -205
- package/dist/tests/sequent-g3/prover.test.js.map +0 -1
- package/dist/tests/sequent-lk/prover.test.d.ts.map +0 -1
- package/dist/tests/sequent-lk/prover.test.js +0 -317
- package/dist/tests/sequent-lk/prover.test.js.map +0 -1
- package/dist/tests/smt/mock-backend.test.d.ts.map +0 -1
- package/dist/tests/smt/mock-backend.test.js +0 -129
- package/dist/tests/smt/mock-backend.test.js.map +0 -1
- package/dist/tests/smt/serializer.test.d.ts.map +0 -1
- package/dist/tests/smt/serializer.test.js +0 -94
- package/dist/tests/smt/serializer.test.js.map +0 -1
- package/dist/tests/smt/subprocess-backend.test.d.ts.map +0 -1
- package/dist/tests/smt/subprocess-backend.test.js +0 -89
- package/dist/tests/smt/subprocess-backend.test.js.map +0 -1
- package/dist/tests/smt-lib/emitter.test.d.ts.map +0 -1
- package/dist/tests/smt-lib/emitter.test.js +0 -155
- package/dist/tests/smt-lib/emitter.test.js.map +0 -1
- package/dist/tests/smt-lib/parser.test.d.ts.map +0 -1
- package/dist/tests/smt-lib/parser.test.js +0 -164
- package/dist/tests/smt-lib/parser.test.js.map +0 -1
- package/dist/tests/smt-lib/tokenizer.test.d.ts.map +0 -1
- package/dist/tests/smt-lib/tokenizer.test.js +0 -59
- package/dist/tests/smt-lib/tokenizer.test.js.map +0 -1
- package/dist/tests/substructural/prover.test.d.ts.map +0 -1
- package/dist/tests/substructural/prover.test.js +0 -271
- package/dist/tests/substructural/prover.test.js.map +0 -1
- package/dist/tests/system-f/system-f.test.d.ts.map +0 -1
- package/dist/tests/system-f/system-f.test.js +0 -217
- package/dist/tests/system-f/system-f.test.js.map +0 -1
- package/dist/tests/tableau-framework/tableau.test.d.ts.map +0 -1
- package/dist/tests/tableau-framework/tableau.test.js +0 -196
- package/dist/tests/tableau-framework/tableau.test.js.map +0 -1
- package/dist/tests/tactic-dsl/tactic-dsl.test.d.ts.map +0 -1
- package/dist/tests/tactic-dsl/tactic-dsl.test.js +0 -259
- package/dist/tests/tactic-dsl/tactic-dsl.test.js.map +0 -1
- package/dist/tests/text-layer-v2/claim-graph.test.d.ts.map +0 -1
- package/dist/tests/text-layer-v2/claim-graph.test.js +0 -255
- package/dist/tests/text-layer-v2/claim-graph.test.js.map +0 -1
- package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.d.ts.map +0 -1
- package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.js +0 -200
- package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.js.map +0 -1
- package/dist/tests/time-travel/snapshot.test.d.ts.map +0 -1
- package/dist/tests/time-travel/snapshot.test.js +0 -75
- package/dist/tests/time-travel/snapshot.test.js.map +0 -1
- package/dist/tests/time-travel/store.test.d.ts.map +0 -1
- package/dist/tests/time-travel/store.test.js +0 -242
- package/dist/tests/time-travel/store.test.js.map +0 -1
- package/dist/tests/tptp/bridge.test.d.ts.map +0 -1
- package/dist/tests/tptp/bridge.test.js +0 -154
- package/dist/tests/tptp/bridge.test.js.map +0 -1
- package/dist/tests/tptp/emitter.test.d.ts.map +0 -1
- package/dist/tests/tptp/emitter.test.js +0 -128
- package/dist/tests/tptp/emitter.test.js.map +0 -1
- package/dist/tests/tptp/parser.test.d.ts.map +0 -1
- package/dist/tests/tptp/parser.test.js +0 -192
- package/dist/tests/tptp/parser.test.js.map +0 -1
- package/dist/tests/tptp/tokenizer.test.d.ts.map +0 -1
- package/dist/tests/tptp/tokenizer.test.js +0 -60
- package/dist/tests/tptp/tokenizer.test.js.map +0 -1
- package/dist/text-layer/compiler.d.ts +0 -18
- package/dist/text-layer/compiler.d.ts.map +0 -1
- package/dist/text-layer/compiler.js.map +0 -1
- package/dist/text-layer/v2/claim-graph.d.ts.map +0 -1
- package/dist/text-layer/v2/claim-graph.js.map +0 -1
- package/dist/text-layer/v2/index.d.ts.map +0 -1
- package/dist/text-layer/v2/index.js.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/diff.d.ts.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/diff.js.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/index.d.ts.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/index.js.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/parser.d.ts.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/parser.js.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/serializer.d.ts.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/serializer.js.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/types.d.ts.map +0 -1
- package/dist/text-layer/v2/mdx-bridge/types.js.map +0 -1
- package/dist/text-layer/v2/types.d.ts.map +0 -1
- package/dist/text-layer/v2/types.js.map +0 -1
- package/dist/time-travel/index.d.ts.map +0 -1
- package/dist/time-travel/index.js.map +0 -1
- package/dist/time-travel/snapshot.d.ts.map +0 -1
- package/dist/time-travel/snapshot.js.map +0 -1
- package/dist/time-travel/store.d.ts.map +0 -1
- package/dist/time-travel/store.js.map +0 -1
- package/dist/time-travel/types.d.ts.map +0 -1
- package/dist/time-travel/types.js.map +0 -1
- package/dist/tptp/ast.d.ts.map +0 -1
- package/dist/tptp/ast.js.map +0 -1
- package/dist/tptp/bridge.d.ts +0 -14
- package/dist/tptp/bridge.d.ts.map +0 -1
- package/dist/tptp/bridge.js.map +0 -1
- package/dist/tptp/emitter.d.ts.map +0 -1
- package/dist/tptp/emitter.js.map +0 -1
- package/dist/tptp/index.d.ts.map +0 -1
- package/dist/tptp/index.js.map +0 -1
- package/dist/tptp/parser.d.ts.map +0 -1
- package/dist/tptp/parser.js.map +0 -1
- package/dist/tptp/tokenizer.d.ts.map +0 -1
- package/dist/tptp/tokenizer.js.map +0 -1
- /package/dist/{profile-bridge → logic/profile-bridge}/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/aristotelian/syllogistic.js +0 -0
- /package/dist/{profiles → logic/profiles}/arithmetic/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/classical/cdcl.js +0 -0
- /package/dist/{profiles → logic/profiles}/classical/dpll.js +0 -0
- /package/dist/{profiles → logic/profiles}/classical/first-order.js +0 -0
- /package/dist/{profiles → logic/profiles}/classical/parallel-sat.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/classical/parallel-sat.js +0 -0
- /package/dist/{profiles → logic/profiles}/classical/sat-preprocess.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/classical/sat-preprocess.js +0 -0
- /package/dist/{profiles → logic/profiles}/classical/undecidability-detector.js +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/check.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/check.js +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/witness.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ctl/witness.js +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/entailment.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/entailment.js +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/extensions.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/extensions.js +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/default-logic/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/deontic/standard.js +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/nnf.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/nnf.js +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/tableau.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/tableau.js +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/description-logic/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/epistemic/s5.js +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/sat.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/sat.js +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/semantics.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/semantics.js +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/hybrid-logic/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/interface.js +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic/propositional.js +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/formula.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/formula.js +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/kripke.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/kripke.js +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/prover.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/prover.js +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/intuitionistic-nj/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/sat.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/sat.js +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/tableau.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/tableau.js +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/ltl-sat/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/many-valued/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/many-valued/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/modal/k.js +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/formula.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/formula.js +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/systems.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/systems.js +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/tableau.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/tableau.js +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/modal-frame-axioms/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/check.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/check.js +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/ctl-translate.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/ctl-translate.js +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/wellformed.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/mu-calculus/wellformed.js +0 -0
- /package/dist/{profiles → logic/profiles}/paraconsistent/belnap.js +0 -0
- /package/dist/{profiles → logic/profiles}/probabilistic/basic.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-g3/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-g3/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-g3/latex.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-g3/latex.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-g3/normalize.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-g3/prover.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-g3/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/cut-elimination.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/cut-elimination.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/prover.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/prover.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/util.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/sequent-lk/util.js +0 -0
- /package/dist/{profiles → logic/profiles}/substructural/index.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/substructural/index.js +0 -0
- /package/dist/{profiles → logic/profiles}/substructural/prover.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/substructural/prover.js +0 -0
- /package/dist/{profiles → logic/profiles}/substructural/types.d.ts +0 -0
- /package/dist/{profiles → logic/profiles}/substructural/types.js +0 -0
- /package/dist/{profiles → logic/profiles}/temporal/ltl.js +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/cnf.js +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/index.d.ts +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/index.js +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/prove.js +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/resolve.d.ts +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/resolve.js +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/types.d.ts +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/types.js +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/unify.d.ts +0 -0
- /package/dist/{fol-prover → proof-systems/fol-prover}/unify.js +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/demodulate.d.ts +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/demodulate.js +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/index.d.ts +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/index.js +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/paramodulate.d.ts +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/paramodulate.js +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/prove.js +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/term-utils.d.ts +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/term-utils.js +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/types.d.ts +0 -0
- /package/dist/{fol-prover-equality → proof-systems/fol-prover-equality}/types.js +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/index.d.ts +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/index.js +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/normalize.d.ts +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/normalize.js +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/pattern.d.ts +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/pattern.js +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/types.d.ts +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/types.js +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/unify.d.ts +0 -0
- /package/dist/{higher-order-unify → proof-systems/higher-order-unify}/unify.js +0 -0
- /package/dist/{proof-exchange → proof-systems/proof-exchange}/index.js +0 -0
- /package/dist/{runtime → proof-systems}/proof-minify/index.d.ts +0 -0
- /package/dist/{runtime → proof-systems}/proof-minify/index.js +0 -0
- /package/dist/{runtime → proof-systems}/proof-minify/minify.d.ts +0 -0
- /package/dist/{runtime → proof-systems}/proof-minify/minify.js +0 -0
- /package/dist/{runtime → proof-systems}/proof-minify/types.d.ts +0 -0
- /package/dist/{runtime → proof-systems}/proof-minify/types.js +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/construct.d.ts +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/construct.js +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/correctness.d.ts +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/correctness.js +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/cut-elim.d.ts +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/cut-elim.js +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/index.d.ts +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/index.js +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/types.d.ts +0 -0
- /package/dist/{proof-nets → proof-systems/proof-nets}/types.js +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/TableauProver.d.ts +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/TableauProver.js +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/index.d.ts +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/index.js +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/propositional.d.ts +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/propositional.js +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/types.d.ts +0 -0
- /package/dist/{tableau-framework → proof-systems/tableau-framework}/types.js +0 -0
- /package/dist/{runtime → reasoning}/abduction/entails.d.ts +0 -0
- /package/dist/{runtime → reasoning}/abduction/entails.js +0 -0
- /package/dist/{runtime → reasoning}/abduction/find.d.ts +0 -0
- /package/dist/{runtime → reasoning}/abduction/find.js +0 -0
- /package/dist/{runtime → reasoning}/abduction/index.d.ts +0 -0
- /package/dist/{runtime → reasoning}/abduction/index.js +0 -0
- /package/dist/{runtime → reasoning}/abduction/types.d.ts +0 -0
- /package/dist/{runtime → reasoning}/abduction/types.js +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/dot.d.ts +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/dot.js +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/extensions.d.ts +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/extensions.js +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/framework.d.ts +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/framework.js +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/index.d.ts +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/index.js +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/types.d.ts +0 -0
- /package/dist/{argumentation → reasoning/argumentation}/types.js +0 -0
- /package/dist/{runtime → reasoning}/bayesian/factor.d.ts +0 -0
- /package/dist/{runtime → reasoning}/bayesian/factor.js +0 -0
- /package/dist/{runtime → reasoning}/bayesian/index.d.ts +0 -0
- /package/dist/{runtime → reasoning}/bayesian/index.js +0 -0
- /package/dist/{runtime → reasoning}/bayesian/inference.d.ts +0 -0
- /package/dist/{runtime → reasoning}/bayesian/inference.js +0 -0
- /package/dist/{runtime → reasoning}/bayesian/types.d.ts +0 -0
- /package/dist/{runtime → reasoning}/bayesian/types.js +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/agm.d.ts +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/agm.js +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/index.d.ts +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/index.js +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/parser.d.ts +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/parser.js +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/sat.d.ts +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/sat.js +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/types.d.ts +0 -0
- /package/dist/{belief-revision → reasoning/belief-revision}/types.js +0 -0
- /package/dist/{citation-reasoning → reasoning/citation-reasoning}/derive.d.ts +0 -0
- /package/dist/{citation-reasoning → reasoning/citation-reasoning}/derive.js +0 -0
- /package/dist/{citation-reasoning → reasoning/citation-reasoning}/index.d.ts +0 -0
- /package/dist/{citation-reasoning → reasoning/citation-reasoning}/index.js +0 -0
- /package/dist/{citation-reasoning → reasoning/citation-reasoning}/types.d.ts +0 -0
- /package/dist/{citation-reasoning → reasoning/citation-reasoning}/types.js +0 -0
- /package/dist/{constructive-reals → reasoning/constructive-reals}/index.d.ts +0 -0
- /package/dist/{constructive-reals → reasoning/constructive-reals}/index.js +0 -0
- /package/dist/{runtime → reasoning}/fca/context.d.ts +0 -0
- /package/dist/{runtime → reasoning}/fca/context.js +0 -0
- /package/dist/{runtime → reasoning}/fca/implications.d.ts +0 -0
- /package/dist/{runtime → reasoning}/fca/implications.js +0 -0
- /package/dist/{runtime → reasoning}/fca/index.d.ts +0 -0
- /package/dist/{runtime → reasoning}/fca/index.js +0 -0
- /package/dist/{runtime → reasoning}/fca/lattice.d.ts +0 -0
- /package/dist/{runtime → reasoning}/fca/lattice.js +0 -0
- /package/dist/{runtime → reasoning}/fca/next-closure.d.ts +0 -0
- /package/dist/{runtime → reasoning}/fca/next-closure.js +0 -0
- /package/dist/{runtime → reasoning}/fca/types.d.ts +0 -0
- /package/dist/{runtime → reasoning}/fca/types.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/common-games.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/common-games.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/dominance.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/dominance.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/index.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/index.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/lemke-howson.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/lemke-howson.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/linalg.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/linalg.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/pure-nash.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/pure-nash.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/support-enumeration.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/support-enumeration.js +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/types.d.ts +0 -0
- /package/dist/{game-theory → reasoning/game-theory}/types.js +0 -0
- /package/dist/{hyperreal → reasoning/hyperreal}/index.d.ts +0 -0
- /package/dist/{hyperreal → reasoning/hyperreal}/index.js +0 -0
- /package/dist/{information-theory → reasoning/information-theory}/index.d.ts +0 -0
- /package/dist/{information-theory → reasoning/information-theory}/index.js +0 -0
- /package/dist/{lemma-synthesis → reasoning/lemma-synthesis}/index.d.ts +0 -0
- /package/dist/{lemma-synthesis → reasoning/lemma-synthesis}/index.js +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/grounding.d.ts +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/grounding.js +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/index.d.ts +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/index.js +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/inference.d.ts +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/inference.js +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/parser.d.ts +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/parser.js +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/types.d.ts +0 -0
- /package/dist/{runtime → reasoning}/markov-logic/types.js +0 -0
- /package/dist/{optimization → reasoning/optimization}/branch-and-bound.d.ts +0 -0
- /package/dist/{optimization → reasoning/optimization}/branch-and-bound.js +0 -0
- /package/dist/{optimization → reasoning/optimization}/index.d.ts +0 -0
- /package/dist/{optimization → reasoning/optimization}/index.js +0 -0
- /package/dist/{optimization → reasoning/optimization}/simplex.d.ts +0 -0
- /package/dist/{optimization → reasoning/optimization}/simplex.js +0 -0
- /package/dist/{optimization → reasoning/optimization}/standard-form.d.ts +0 -0
- /package/dist/{optimization → reasoning/optimization}/standard-form.js +0 -0
- /package/dist/{optimization → reasoning/optimization}/types.d.ts +0 -0
- /package/dist/{optimization → reasoning/optimization}/types.js +0 -0
- /package/dist/{runtime → reasoning}/planning/astar.d.ts +0 -0
- /package/dist/{runtime → reasoning}/planning/astar.js +0 -0
- /package/dist/{runtime → reasoning}/planning/bfs.d.ts +0 -0
- /package/dist/{runtime → reasoning}/planning/bfs.js +0 -0
- /package/dist/{runtime → reasoning}/planning/ground.d.ts +0 -0
- /package/dist/{runtime → reasoning}/planning/ground.js +0 -0
- /package/dist/{runtime → reasoning}/planning/heuristic.d.ts +0 -0
- /package/dist/{runtime → reasoning}/planning/heuristic.js +0 -0
- /package/dist/{runtime → reasoning}/planning/index.d.ts +0 -0
- /package/dist/{runtime → reasoning}/planning/index.js +0 -0
- /package/dist/{runtime → reasoning}/planning/types.d.ts +0 -0
- /package/dist/{runtime → reasoning}/planning/types.js +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/combinators.d.ts +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/combinators.js +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/index.d.ts +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/index.js +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/tactics.d.ts +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/tactics.js +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/types.d.ts +0 -0
- /package/dist/{tactic-dsl → reasoning/tactic-dsl}/types.js +0 -0
- /package/dist/{bdd → runtime/bdd}/index.d.ts +0 -0
- /package/dist/{bdd → runtime/bdd}/index.js +0 -0
- /package/dist/{bdd → runtime/bdd}/manager.d.ts +0 -0
- /package/dist/{bdd → runtime/bdd}/manager.js +0 -0
- /package/dist/{bdd → runtime/bdd}/types.d.ts +0 -0
- /package/dist/{bdd → runtime/bdd}/types.js +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/analysis.d.ts +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/analysis.js +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/examples.d.ts +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/examples.js +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/index.d.ts +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/index.js +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/semantics.d.ts +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/semantics.js +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/types.d.ts +0 -0
- /package/dist/{csp-hoare → runtime/csp-hoare}/types.js +0 -0
- /package/dist/{categorical → semantics/categorical}/fin-set.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/fin-set.js +0 -0
- /package/dist/{categorical → semantics/categorical}/free.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/free.js +0 -0
- /package/dist/{categorical → semantics/categorical}/functor.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/functor.js +0 -0
- /package/dist/{categorical → semantics/categorical}/index.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/index.js +0 -0
- /package/dist/{categorical → semantics/categorical}/limits.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/limits.js +0 -0
- /package/dist/{categorical → semantics/categorical}/monoidal.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/monoidal.js +0 -0
- /package/dist/{categorical → semantics/categorical}/poset.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/poset.js +0 -0
- /package/dist/{categorical → semantics/categorical}/types.d.ts +0 -0
- /package/dist/{categorical → semantics/categorical}/types.js +0 -0
- /package/dist/{coinduction → semantics/coinduction}/index.d.ts +0 -0
- /package/dist/{coinduction → semantics/coinduction}/index.js +0 -0
- /package/dist/{game-semantics → semantics/game-semantics}/index.d.ts +0 -0
- /package/dist/{game-semantics → semantics/game-semantics}/index.js +0 -0
- /package/dist/{game-semantics → semantics/game-semantics}/strategy.d.ts +0 -0
- /package/dist/{game-semantics → semantics/game-semantics}/types.d.ts +0 -0
- /package/dist/{game-semantics → semantics/game-semantics}/types.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/compiler.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/claim-graph.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/claim-graph.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/index.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/index.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/diff.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/diff.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/index.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/index.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/parser.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/parser.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/serializer.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/serializer.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/types.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/mdx-bridge/types.js +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/types.d.ts +0 -0
- /package/dist/{text-layer → semantics/text-layer}/v2/types.js +0 -0
- /package/dist/{runtime → solver}/csp/ac3.d.ts +0 -0
- /package/dist/{runtime → solver}/csp/ac3.js +0 -0
- /package/dist/{runtime → solver}/csp/backtrack.d.ts +0 -0
- /package/dist/{runtime → solver}/csp/backtrack.js +0 -0
- /package/dist/{runtime → solver}/csp/builtins.d.ts +0 -0
- /package/dist/{runtime → solver}/csp/builtins.js +0 -0
- /package/dist/{runtime → solver}/csp/index.d.ts +0 -0
- /package/dist/{runtime → solver}/csp/index.js +0 -0
- /package/dist/{runtime → solver}/csp/types.d.ts +0 -0
- /package/dist/{runtime → solver}/csp/types.js +0 -0
- /package/dist/{runtime → solver}/mus/extract.d.ts +0 -0
- /package/dist/{runtime → solver}/mus/extract.js +0 -0
- /package/dist/{runtime → solver}/mus/index.d.ts +0 -0
- /package/dist/{runtime → solver}/mus/index.js +0 -0
- /package/dist/{runtime → solver}/mus/quickxplain.d.ts +0 -0
- /package/dist/{runtime → solver}/mus/quickxplain.js +0 -0
- /package/dist/{runtime → solver}/mus/types.d.ts +0 -0
- /package/dist/{runtime → solver}/mus/types.js +0 -0
- /package/dist/{runtime → solver}/smt/index.d.ts +0 -0
- /package/dist/{runtime → solver}/smt/index.js +0 -0
- /package/dist/{runtime → solver}/smt/mock-backend.d.ts +0 -0
- /package/dist/{runtime → solver}/smt/mock-backend.js +0 -0
- /package/dist/{runtime → solver}/smt/serializer.d.ts +0 -0
- /package/dist/{runtime → solver}/smt/serializer.js +0 -0
- /package/dist/{runtime → solver}/smt/subprocess-backend.d.ts +0 -0
- /package/dist/{runtime → solver}/smt/subprocess-backend.js +0 -0
- /package/dist/{runtime → solver}/smt/types.d.ts +0 -0
- /package/dist/{runtime → solver}/smt/types.js +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/ast.d.ts +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/ast.js +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/emitter.d.ts +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/emitter.js +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/index.d.ts +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/index.js +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/parser.d.ts +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/parser.js +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/tokenizer.d.ts +0 -0
- /package/dist/{smt-lib → solver/smt-lib}/tokenizer.js +0 -0
- /package/dist/tests/{ctl → logic/ctl}/check.test.d.ts +0 -0
- /package/dist/tests/{default-logic → logic/default-logic}/extensions.test.d.ts +0 -0
- /package/dist/tests/{description-logic → logic/description-logic}/alc.test.d.ts +0 -0
- /package/dist/tests/{hybrid-logic → logic/hybrid-logic}/semantics.test.d.ts +0 -0
- /package/dist/tests/{intuitionistic-nj → logic/intuitionistic-nj}/nj.test.d.ts +0 -0
- /package/dist/tests/{ltl-sat → logic/ltl-sat}/sat.test.d.ts +0 -0
- /package/dist/tests/{many-valued → logic/many-valued}/many-valued.test.d.ts +0 -0
- /package/dist/tests/{modal-frame-axioms → logic/modal-frame-axioms}/frame-axioms.test.d.ts +0 -0
- /package/dist/tests/{mu-calculus → logic/mu-calculus}/check.test.d.ts +0 -0
- /package/dist/tests/{profile-bridge → logic/profile-bridge}/translations.test.d.ts +0 -0
- /package/dist/tests/{profiles.test.d.ts → logic/profiles.test.d.ts} +0 -0
- /package/dist/tests/{sequent-g3 → logic/sequent-g3}/prover.test.d.ts +0 -0
- /package/dist/tests/{sequent-lk → logic/sequent-lk}/prover.test.d.ts +0 -0
- /package/dist/tests/{substructural → logic/substructural}/prover.test.d.ts +0 -0
- /package/dist/tests/{fol-prover → proof-systems/fol-prover}/cnf.test.d.ts +0 -0
- /package/dist/tests/{fol-prover → proof-systems/fol-prover}/prove.test.d.ts +0 -0
- /package/dist/tests/{fol-prover → proof-systems/fol-prover}/unify.test.d.ts +0 -0
- /package/dist/tests/{fol-prover-equality → proof-systems/fol-prover-equality}/prove.test.d.ts +0 -0
- /package/dist/tests/{higher-order-unify → proof-systems/higher-order-unify}/ho-unify.test.d.ts +0 -0
- /package/dist/tests/{proof-exchange → proof-systems/proof-exchange}/proof-exchange.test.d.ts +0 -0
- /package/dist/tests/{proof-minify → proof-systems/proof-minify}/minify.test.d.ts +0 -0
- /package/dist/tests/{proof-nets → proof-systems/proof-nets}/proof-nets.test.d.ts +0 -0
- /package/dist/tests/{tableau-framework → proof-systems/tableau-framework}/tableau.test.d.ts +0 -0
- /package/dist/tests/{abduction → reasoning/abduction}/abduction.test.d.ts +0 -0
- /package/dist/tests/{argumentation → reasoning/argumentation}/dung.test.d.ts +0 -0
- /package/dist/tests/{bayesian → reasoning/bayesian}/bayesian.test.d.ts +0 -0
- /package/dist/tests/{belief-revision → reasoning/belief-revision}/agm.test.d.ts +0 -0
- /package/dist/tests/{citation-reasoning → reasoning/citation-reasoning}/citation-reasoning.test.d.ts +0 -0
- /package/dist/tests/{constructive-reals → reasoning/constructive-reals}/constructive-reals.test.d.ts +0 -0
- /package/dist/tests/{fca → reasoning/fca}/fca.test.d.ts +0 -0
- /package/dist/tests/{game-theory → reasoning/game-theory}/game-theory.test.d.ts +0 -0
- /package/dist/tests/{hyperreal → reasoning/hyperreal}/hyperreal.test.d.ts +0 -0
- /package/dist/tests/{information-theory → reasoning/information-theory}/information-theory.test.d.ts +0 -0
- /package/dist/tests/{lemma-synthesis → reasoning/lemma-synthesis}/lemma-synthesis.test.d.ts +0 -0
- /package/dist/tests/{markov-logic → reasoning/markov-logic}/markov-logic.test.d.ts +0 -0
- /package/dist/tests/{optimization → reasoning/optimization}/ilp.test.d.ts +0 -0
- /package/dist/tests/{optimization → reasoning/optimization}/lp.test.d.ts +0 -0
- /package/dist/tests/{planning → reasoning/planning}/planning.test.d.ts +0 -0
- /package/dist/tests/{tactic-dsl → reasoning/tactic-dsl}/tactic-dsl.test.d.ts +0 -0
- /package/dist/tests/{bdd → runtime/bdd}/manager.test.d.ts +0 -0
- /package/dist/tests/{csp-hoare → runtime/csp-hoare}/csp-hoare.test.d.ts +0 -0
- /package/dist/tests/{categorical → semantics/categorical}/categorical.test.d.ts +0 -0
- /package/dist/tests/{coinduction → semantics/coinduction}/coinduction.test.d.ts +0 -0
- /package/dist/tests/{game-semantics → semantics/game-semantics}/game-semantics.test.d.ts +0 -0
- /package/dist/tests/{text-layer-v2 → semantics/text-layer-v2}/claim-graph.test.d.ts +0 -0
- /package/dist/tests/{text-layer-v2 → semantics/text-layer-v2}/mdx-bridge/mdx-bridge.test.d.ts +0 -0
- /package/dist/tests/{csp → solver/csp}/csp.test.d.ts +0 -0
- /package/dist/tests/{mus → solver/mus}/extract.test.d.ts +0 -0
- /package/dist/tests/{sat-v2 → solver/sat-v2}/clause-learning.test.d.ts +0 -0
- /package/dist/tests/{sat-v2 → solver/sat-v2}/lbd.test.d.ts +0 -0
- /package/dist/tests/{sat-v2 → solver/sat-v2}/luby.test.d.ts +0 -0
- /package/dist/tests/{sat-v2 → solver/sat-v2}/phase-saving.test.d.ts +0 -0
- /package/dist/tests/{sat-v2 → solver/sat-v2}/solver-end-to-end.test.d.ts +0 -0
- /package/dist/tests/{sat-v2 → solver/sat-v2}/vsids.test.d.ts +0 -0
- /package/dist/tests/{sat-v2-incremental → solver/sat-v2-incremental}/basic.test.d.ts +0 -0
- /package/dist/tests/{smt → solver/smt}/mock-backend.test.d.ts +0 -0
- /package/dist/tests/{smt → solver/smt}/serializer.test.d.ts +0 -0
- /package/dist/tests/{smt → solver/smt}/subprocess-backend.test.d.ts +0 -0
- /package/dist/tests/{smt-lib → solver/smt-lib}/emitter.test.d.ts +0 -0
- /package/dist/tests/{smt-lib → solver/smt-lib}/parser.test.d.ts +0 -0
- /package/dist/tests/{smt-lib → solver/smt-lib}/tokenizer.test.d.ts +0 -0
- /package/dist/tests/{educational → tooling/educational}/checker.test.d.ts +0 -0
- /package/dist/tests/{educational → tooling/educational}/generator.test.d.ts +0 -0
- /package/dist/tests/{exporters → tooling/exporters}/coq/coq-exporter.test.d.ts +0 -0
- /package/dist/tests/{lsp → tooling/lsp}/server.test.d.ts +0 -0
- /package/dist/tests/{plugin-system → tooling/plugin-system}/demo-min-logic.test.d.ts +0 -0
- /package/dist/tests/{plugin-system → tooling/plugin-system}/registry.test.d.ts +0 -0
- /package/dist/tests/{plugin-system → tooling/plugin-system}/validate.test.d.ts +0 -0
- /package/dist/tests/{time-travel → tooling/time-travel}/snapshot.test.d.ts +0 -0
- /package/dist/tests/{time-travel → tooling/time-travel}/store.test.d.ts +0 -0
- /package/dist/tests/{tptp → tooling/tptp}/bridge.test.d.ts +0 -0
- /package/dist/tests/{tptp → tooling/tptp}/emitter.test.d.ts +0 -0
- /package/dist/tests/{tptp → tooling/tptp}/parser.test.d.ts +0 -0
- /package/dist/tests/{tptp → tooling/tptp}/tokenizer.test.d.ts +0 -0
- /package/dist/tests/{combinators-ski → type-theory/combinators-ski}/combinators-ski.test.d.ts +0 -0
- /package/dist/tests/{curry-howard → type-theory/curry-howard}/infer.test.d.ts +0 -0
- /package/dist/tests/{curry-howard → type-theory/curry-howard}/proof.test.d.ts +0 -0
- /package/dist/tests/{curry-howard → type-theory/curry-howard}/reduce.test.d.ts +0 -0
- /package/dist/tests/{hindley-milner → type-theory/hindley-milner}/hindley-milner.test.d.ts +0 -0
- /package/dist/tests/{hol → type-theory/hol}/hol.test.d.ts +0 -0
- /package/dist/tests/{hott → type-theory/hott}/hott.test.d.ts +0 -0
- /package/dist/tests/{lambda-calc → type-theory/lambda-calc}/lambda-calc.test.d.ts +0 -0
- /package/dist/tests/{mltt → type-theory/mltt}/mltt.test.d.ts +0 -0
- /package/dist/tests/{nbe → type-theory/nbe}/nbe.test.d.ts +0 -0
- /package/dist/tests/{refinement-types → type-theory/refinement-types}/refinement-types.test.d.ts +0 -0
- /package/dist/tests/{system-f → type-theory/system-f}/system-f.test.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/checker.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/generator.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/generator.js +0 -0
- /package/dist/{educational → tooling/educational}/index.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/index.js +0 -0
- /package/dist/{educational → tooling/educational}/normalize.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/normalize.js +0 -0
- /package/dist/{educational → tooling/educational}/rng.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/rng.js +0 -0
- /package/dist/{educational → tooling/educational}/templates.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/templates.js +0 -0
- /package/dist/{educational → tooling/educational}/types.d.ts +0 -0
- /package/dist/{educational → tooling/educational}/types.js +0 -0
- /package/dist/{exporters → tooling/exporters}/coq/index.js +0 -0
- /package/dist/{lsp → tooling/lsp}/index.d.ts +0 -0
- /package/dist/{lsp → tooling/lsp}/index.js +0 -0
- /package/dist/{lsp → tooling/lsp}/protocol.d.ts +0 -0
- /package/dist/{lsp → tooling/lsp}/protocol.js +0 -0
- /package/dist/{lsp → tooling/lsp}/server.d.ts +0 -0
- /package/dist/{lsp → tooling/lsp}/types.d.ts +0 -0
- /package/dist/{lsp → tooling/lsp}/types.js +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/demo-min-logic.d.ts +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/demo-min-logic.js +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/errors.d.ts +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/errors.js +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/index.d.ts +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/index.js +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/registry.d.ts +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/registry.js +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/types.js +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/validate.d.ts +0 -0
- /package/dist/{plugin-system → tooling/plugin-system}/validate.js +0 -0
- /package/dist/{time-travel → tooling/time-travel}/index.d.ts +0 -0
- /package/dist/{time-travel → tooling/time-travel}/index.js +0 -0
- /package/dist/{time-travel → tooling/time-travel}/snapshot.d.ts +0 -0
- /package/dist/{time-travel → tooling/time-travel}/snapshot.js +0 -0
- /package/dist/{time-travel → tooling/time-travel}/store.d.ts +0 -0
- /package/dist/{time-travel → tooling/time-travel}/store.js +0 -0
- /package/dist/{time-travel → tooling/time-travel}/types.d.ts +0 -0
- /package/dist/{time-travel → tooling/time-travel}/types.js +0 -0
- /package/dist/{tptp → tooling/tptp}/ast.d.ts +0 -0
- /package/dist/{tptp → tooling/tptp}/ast.js +0 -0
- /package/dist/{tptp → tooling/tptp}/bridge.js +0 -0
- /package/dist/{tptp → tooling/tptp}/emitter.d.ts +0 -0
- /package/dist/{tptp → tooling/tptp}/emitter.js +0 -0
- /package/dist/{tptp → tooling/tptp}/index.d.ts +0 -0
- /package/dist/{tptp → tooling/tptp}/index.js +0 -0
- /package/dist/{tptp → tooling/tptp}/parser.d.ts +0 -0
- /package/dist/{tptp → tooling/tptp}/parser.js +0 -0
- /package/dist/{tptp → tooling/tptp}/tokenizer.d.ts +0 -0
- /package/dist/{tptp → tooling/tptp}/tokenizer.js +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/abstract.d.ts +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/abstract.js +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/index.d.ts +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/index.js +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/reduce.d.ts +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/reduce.js +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/types.d.ts +0 -0
- /package/dist/{combinators-ski → type-theory/combinators-ski}/types.js +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/index.d.ts +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/index.js +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/infer.d.ts +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/infer.js +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/proof.d.ts +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/proof.js +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/reduce.d.ts +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/reduce.js +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/types.d.ts +0 -0
- /package/dist/{curry-howard → type-theory/curry-howard}/types.js +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/index.d.ts +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/index.js +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/infer.d.ts +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/infer.js +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/substitution.d.ts +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/substitution.js +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/types.d.ts +0 -0
- /package/dist/{hindley-milner → type-theory/hindley-milner}/types.js +0 -0
- /package/dist/{profiles → type-theory}/hol/connectives.d.ts +0 -0
- /package/dist/{profiles → type-theory}/hol/connectives.js +0 -0
- /package/dist/{profiles → type-theory}/hol/index.d.ts +0 -0
- /package/dist/{profiles → type-theory}/hol/index.js +0 -0
- /package/dist/{profiles → type-theory}/hol/rules.d.ts +0 -0
- /package/dist/{profiles → type-theory}/hol/rules.js +0 -0
- /package/dist/{profiles → type-theory}/hol/term.d.ts +0 -0
- /package/dist/{profiles → type-theory}/hol/term.js +0 -0
- /package/dist/{profiles → type-theory}/hol/type-system.d.ts +0 -0
- /package/dist/{profiles → type-theory}/hol/type-system.js +0 -0
- /package/dist/{profiles → type-theory}/hol/types.d.ts +0 -0
- /package/dist/{profiles → type-theory}/hol/types.js +0 -0
- /package/dist/{hott → type-theory/hott}/equality.d.ts +0 -0
- /package/dist/{hott → type-theory/hott}/equality.js +0 -0
- /package/dist/{hott → type-theory/hott}/index.d.ts +0 -0
- /package/dist/{hott → type-theory/hott}/index.js +0 -0
- /package/dist/{hott → type-theory/hott}/infer.d.ts +0 -0
- /package/dist/{hott → type-theory/hott}/infer.js +0 -0
- /package/dist/{hott → type-theory/hott}/normalize.d.ts +0 -0
- /package/dist/{hott → type-theory/hott}/normalize.js +0 -0
- /package/dist/{hott → type-theory/hott}/path-algebra.d.ts +0 -0
- /package/dist/{hott → type-theory/hott}/path-algebra.js +0 -0
- /package/dist/{hott → type-theory/hott}/substitute.d.ts +0 -0
- /package/dist/{hott → type-theory/hott}/substitute.js +0 -0
- /package/dist/{hott → type-theory/hott}/types.d.ts +0 -0
- /package/dist/{hott → type-theory/hott}/types.js +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/church.d.ts +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/church.js +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/combinators.d.ts +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/combinators.js +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/index.d.ts +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/index.js +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/reduce.d.ts +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/reduce.js +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/substitution.d.ts +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/substitution.js +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/types.d.ts +0 -0
- /package/dist/{lambda-calc → type-theory/lambda-calc}/types.js +0 -0
- /package/dist/{mltt → type-theory/mltt}/equality.d.ts +0 -0
- /package/dist/{mltt → type-theory/mltt}/equality.js +0 -0
- /package/dist/{mltt → type-theory/mltt}/index.d.ts +0 -0
- /package/dist/{mltt → type-theory/mltt}/index.js +0 -0
- /package/dist/{mltt → type-theory/mltt}/infer.d.ts +0 -0
- /package/dist/{mltt → type-theory/mltt}/infer.js +0 -0
- /package/dist/{mltt → type-theory/mltt}/normalize.d.ts +0 -0
- /package/dist/{mltt → type-theory/mltt}/normalize.js +0 -0
- /package/dist/{mltt → type-theory/mltt}/substitute.d.ts +0 -0
- /package/dist/{mltt → type-theory/mltt}/substitute.js +0 -0
- /package/dist/{mltt → type-theory/mltt}/types.d.ts +0 -0
- /package/dist/{mltt → type-theory/mltt}/types.js +0 -0
- /package/dist/{nbe → type-theory/nbe}/index.d.ts +0 -0
- /package/dist/{nbe → type-theory/nbe}/index.js +0 -0
- /package/dist/{nbe → type-theory/nbe}/nbe.d.ts +0 -0
- /package/dist/{nbe → type-theory/nbe}/nbe.js +0 -0
- /package/dist/{nbe → type-theory/nbe}/types.d.ts +0 -0
- /package/dist/{nbe → type-theory/nbe}/types.js +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/checker.d.ts +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/checker.js +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/index.d.ts +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/index.js +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/predicate.d.ts +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/predicate.js +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/solver.d.ts +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/solver.js +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/subtype.d.ts +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/subtype.js +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/types.d.ts +0 -0
- /package/dist/{refinement-types → type-theory/refinement-types}/types.js +0 -0
- /package/dist/{system-f → type-theory/system-f}/index.d.ts +0 -0
- /package/dist/{system-f → type-theory/system-f}/index.js +0 -0
- /package/dist/{system-f → type-theory/system-f}/infer.d.ts +0 -0
- /package/dist/{system-f → type-theory/system-f}/infer.js +0 -0
- /package/dist/{system-f → type-theory/system-f}/reduce.d.ts +0 -0
- /package/dist/{system-f → type-theory/system-f}/reduce.js +0 -0
- /package/dist/{system-f → type-theory/system-f}/types.d.ts +0 -0
- /package/dist/{system-f → type-theory/system-f}/types.js +0 -0
|
@@ -0,0 +1,2868 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ST Classical Propositional — Motor completo
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ClassicalPropositional = void 0;
|
|
7
|
+
exports.collectAtoms = collectAtoms;
|
|
8
|
+
exports.evaluateClassical = evaluateClassical;
|
|
9
|
+
exports.generateValuationsLazy = generateValuationsLazy;
|
|
10
|
+
exports.formulaToString = formulaToString;
|
|
11
|
+
exports.toNNF = toNNF;
|
|
12
|
+
exports.toCNF = toCNF;
|
|
13
|
+
exports.toDNF = toDNF;
|
|
14
|
+
exports.extractClauses = extractClauses;
|
|
15
|
+
const formula_classifier_1 = require("../../../runtime/formula-classifier");
|
|
16
|
+
const format_1 = require("../../../runtime/format");
|
|
17
|
+
const educational_notes_1 = require("../../../runtime/educational-notes");
|
|
18
|
+
const memo_1 = require("../../../utils/memo");
|
|
19
|
+
const dpll_1 = require("./dpll");
|
|
20
|
+
// --- Utilidades de fórmulas ---
|
|
21
|
+
function collectAtoms(f) {
|
|
22
|
+
return (0, memo_1.memoizeAtoms)(f, computeCollectAtoms);
|
|
23
|
+
}
|
|
24
|
+
function computeCollectAtoms(f) {
|
|
25
|
+
const atoms = new Set();
|
|
26
|
+
function walk(node) {
|
|
27
|
+
if (node.kind === 'atom' && node.name) {
|
|
28
|
+
atoms.add(node.name);
|
|
29
|
+
}
|
|
30
|
+
if (node.args) {
|
|
31
|
+
for (const arg of node.args) {
|
|
32
|
+
walk(arg);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
walk(f);
|
|
37
|
+
return atoms;
|
|
38
|
+
}
|
|
39
|
+
function evaluateClassical(f, v) {
|
|
40
|
+
switch (f.kind) {
|
|
41
|
+
case 'true':
|
|
42
|
+
return true;
|
|
43
|
+
case 'false':
|
|
44
|
+
return false;
|
|
45
|
+
case 'atom':
|
|
46
|
+
return f.name ? (v[f.name] ?? false) : false;
|
|
47
|
+
case 'not':
|
|
48
|
+
return f.args && f.args[0] ? !evaluateClassical(f.args[0], v) : false;
|
|
49
|
+
case 'and':
|
|
50
|
+
return f.args && f.args[0] && f.args[1]
|
|
51
|
+
? evaluateClassical(f.args[0], v) && evaluateClassical(f.args[1], v)
|
|
52
|
+
: false;
|
|
53
|
+
case 'or':
|
|
54
|
+
return f.args && f.args[0] && f.args[1]
|
|
55
|
+
? evaluateClassical(f.args[0], v) || evaluateClassical(f.args[1], v)
|
|
56
|
+
: false;
|
|
57
|
+
case 'implies':
|
|
58
|
+
return f.args && f.args[0] && f.args[1]
|
|
59
|
+
? !evaluateClassical(f.args[0], v) || evaluateClassical(f.args[1], v)
|
|
60
|
+
: false;
|
|
61
|
+
case 'biconditional':
|
|
62
|
+
return f.args && f.args[0] && f.args[1]
|
|
63
|
+
? evaluateClassical(f.args[0], v) === evaluateClassical(f.args[1], v)
|
|
64
|
+
: false;
|
|
65
|
+
case 'nand':
|
|
66
|
+
return f.args && f.args[0] && f.args[1]
|
|
67
|
+
? !(evaluateClassical(f.args[0], v) && evaluateClassical(f.args[1], v))
|
|
68
|
+
: false;
|
|
69
|
+
case 'nor':
|
|
70
|
+
return f.args && f.args[0] && f.args[1]
|
|
71
|
+
? !(evaluateClassical(f.args[0], v) || evaluateClassical(f.args[1], v))
|
|
72
|
+
: false;
|
|
73
|
+
case 'xor':
|
|
74
|
+
return f.args && f.args[0] && f.args[1]
|
|
75
|
+
? evaluateClassical(f.args[0], v) !== evaluateClassical(f.args[1], v)
|
|
76
|
+
: false;
|
|
77
|
+
default:
|
|
78
|
+
throw new Error(`Operador lógico no soportado en evaluación clásica: ${f.kind}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Optimización: Generar valuaciones de forma más eficiente.
|
|
83
|
+
* Usa bitsets implícitos para evitar recrear objetos innecesariamente si fuera posible,
|
|
84
|
+
* pero aquí mantenemos la interfaz de Valuation (objeto) por compatibilidad.
|
|
85
|
+
*/
|
|
86
|
+
function generateValuations(atoms) {
|
|
87
|
+
const n = atoms.length;
|
|
88
|
+
if (n === 0)
|
|
89
|
+
return [{}];
|
|
90
|
+
if (n > 23)
|
|
91
|
+
throw new Error('Demasiadas variables para tabla de verdad (>23)');
|
|
92
|
+
const total = 1 << n;
|
|
93
|
+
const valuations = new Array(total);
|
|
94
|
+
for (let i = 0; i < total; i++) {
|
|
95
|
+
const v = {};
|
|
96
|
+
for (let j = 0; j < n; j++) {
|
|
97
|
+
// Usar bitwise para determinar el valor de verdad
|
|
98
|
+
v[atoms[j]] = Boolean((i >> (n - 1 - j)) & 1);
|
|
99
|
+
}
|
|
100
|
+
valuations[i] = v;
|
|
101
|
+
}
|
|
102
|
+
return valuations;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Generador lazy de valuaciones para streaming (usado por el intérprete para truth_table masivas).
|
|
106
|
+
*/
|
|
107
|
+
function* generateValuationsLazy(atoms) {
|
|
108
|
+
const n = atoms.length;
|
|
109
|
+
if (n === 0) {
|
|
110
|
+
yield {};
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (n > 23)
|
|
114
|
+
throw new Error('Demasiadas variables para tabla de verdad (>23)');
|
|
115
|
+
const total = 2 ** n;
|
|
116
|
+
for (let i = 0; i < total; i++) {
|
|
117
|
+
const v = {};
|
|
118
|
+
for (let j = 0; j < n; j++) {
|
|
119
|
+
const divisor = 2 ** (n - 1 - j);
|
|
120
|
+
v[atoms[j]] = Math.floor(i / divisor) % 2 === 1;
|
|
121
|
+
}
|
|
122
|
+
yield v;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function bvCreate(total) {
|
|
126
|
+
return new Uint32Array((total + 31) >>> 5);
|
|
127
|
+
}
|
|
128
|
+
function bvOnes(total) {
|
|
129
|
+
const words = (total + 31) >>> 5;
|
|
130
|
+
const v = new Uint32Array(words);
|
|
131
|
+
v.fill(0xffffffff);
|
|
132
|
+
// Clear trailing bits in last word
|
|
133
|
+
const tail = total & 31;
|
|
134
|
+
if (tail)
|
|
135
|
+
v[words - 1] = (1 << tail) - 1;
|
|
136
|
+
return v;
|
|
137
|
+
}
|
|
138
|
+
function bvAnd(a, b) {
|
|
139
|
+
const r = new Uint32Array(a.length);
|
|
140
|
+
for (let i = 0; i < a.length; i++)
|
|
141
|
+
r[i] = a[i] & b[i];
|
|
142
|
+
return r;
|
|
143
|
+
}
|
|
144
|
+
function bvOr(a, b) {
|
|
145
|
+
const r = new Uint32Array(a.length);
|
|
146
|
+
for (let i = 0; i < a.length; i++)
|
|
147
|
+
r[i] = a[i] | b[i];
|
|
148
|
+
return r;
|
|
149
|
+
}
|
|
150
|
+
function bvXor(a, b) {
|
|
151
|
+
const r = new Uint32Array(a.length);
|
|
152
|
+
for (let i = 0; i < a.length; i++)
|
|
153
|
+
r[i] = a[i] ^ b[i];
|
|
154
|
+
return r;
|
|
155
|
+
}
|
|
156
|
+
function bvNot(a, ones) {
|
|
157
|
+
const r = new Uint32Array(a.length);
|
|
158
|
+
for (let i = 0; i < a.length; i++)
|
|
159
|
+
r[i] = ~a[i] & ones[i];
|
|
160
|
+
return r;
|
|
161
|
+
}
|
|
162
|
+
function bvIsZero(a) {
|
|
163
|
+
for (let i = 0; i < a.length; i++)
|
|
164
|
+
if (a[i] !== 0)
|
|
165
|
+
return false;
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
function bvEquals(a, b) {
|
|
169
|
+
for (let i = 0; i < a.length; i++)
|
|
170
|
+
if (a[i] !== b[i])
|
|
171
|
+
return false;
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
function bvPopcount(a) {
|
|
175
|
+
let count = 0;
|
|
176
|
+
for (let i = 0; i < a.length; i++) {
|
|
177
|
+
let v = a[i];
|
|
178
|
+
v = v - ((v >>> 1) & 0x55555555);
|
|
179
|
+
v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);
|
|
180
|
+
count += (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;
|
|
181
|
+
}
|
|
182
|
+
return count;
|
|
183
|
+
}
|
|
184
|
+
function bvTestBit(a, i) {
|
|
185
|
+
return (a[i >>> 5] & (1 << (i & 31))) !== 0;
|
|
186
|
+
}
|
|
187
|
+
// Find first set bit, or -1
|
|
188
|
+
function bvFirstSet(a) {
|
|
189
|
+
for (let w = 0; w < a.length; w++) {
|
|
190
|
+
if (a[w] !== 0)
|
|
191
|
+
return ((w << 5) + Math.clz32(a[w] & (-a[w] | 0))) ^ 31;
|
|
192
|
+
}
|
|
193
|
+
return -1;
|
|
194
|
+
}
|
|
195
|
+
function evaluateBitset(formula, atoms) {
|
|
196
|
+
const n = atoms.length;
|
|
197
|
+
if (n > 26)
|
|
198
|
+
throw new Error('Demasiadas variables para evaluación bitset (>26)');
|
|
199
|
+
const total = 1 << n;
|
|
200
|
+
const allOnes = bvOnes(total);
|
|
201
|
+
const words = allOnes.length;
|
|
202
|
+
// Build atom masks: atom j is true when bit j of the row index is 1.
|
|
203
|
+
// Row index i has bit j set when (i >>> (n-1-j)) & 1.
|
|
204
|
+
// Equivalent: word w, bit b (i = w*32+b), atom j true iff ((w*32+b) >>> (n-1-j)) & 1.
|
|
205
|
+
const atomMasks = new Map();
|
|
206
|
+
for (let j = 0; j < n; j++) {
|
|
207
|
+
const shift = n - 1 - j;
|
|
208
|
+
const mask = bvCreate(total);
|
|
209
|
+
// The pattern for atom j repeats with period 2^(shift+1).
|
|
210
|
+
// Within each period, the first 2^shift bits are 0, next 2^shift are 1.
|
|
211
|
+
// For shift < 5, the pattern fits within single words and we can use word-level fill.
|
|
212
|
+
if (shift < 5) {
|
|
213
|
+
// Pattern period in bits
|
|
214
|
+
const period = 1 << (shift + 1);
|
|
215
|
+
const halfPeriod = 1 << shift;
|
|
216
|
+
// Build a 32-bit pattern
|
|
217
|
+
let pattern = 0;
|
|
218
|
+
for (let b = 0; b < 32; b++) {
|
|
219
|
+
if (b % period >= halfPeriod)
|
|
220
|
+
pattern |= 1 << b;
|
|
221
|
+
}
|
|
222
|
+
mask.fill(pattern);
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// shift >= 5: consecutive words are all-0 or all-1
|
|
226
|
+
const wordPeriod = 1 << (shift - 5 + 1); // period in words
|
|
227
|
+
const halfWordPeriod = wordPeriod >>> 1;
|
|
228
|
+
for (let w = 0; w < words; w++) {
|
|
229
|
+
const posInPeriod = w % wordPeriod;
|
|
230
|
+
mask[w] = posInPeriod >= halfWordPeriod ? 0xffffffff : 0;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// Clear trailing bits
|
|
234
|
+
const tail = total & 31;
|
|
235
|
+
if (tail && words > 0)
|
|
236
|
+
mask[words - 1] &= (1 << tail) - 1;
|
|
237
|
+
atomMasks.set(atoms[j], mask);
|
|
238
|
+
}
|
|
239
|
+
function evalBits(f) {
|
|
240
|
+
switch (f.kind) {
|
|
241
|
+
case 'atom':
|
|
242
|
+
return atomMasks.get(f.name ?? '') ?? bvCreate(total);
|
|
243
|
+
case 'not': {
|
|
244
|
+
const [inner] = f.args ?? [];
|
|
245
|
+
return bvNot(evalBits(inner), allOnes);
|
|
246
|
+
}
|
|
247
|
+
case 'and': {
|
|
248
|
+
const [left, right] = f.args ?? [];
|
|
249
|
+
return bvAnd(evalBits(left), evalBits(right));
|
|
250
|
+
}
|
|
251
|
+
case 'or': {
|
|
252
|
+
const [left, right] = f.args ?? [];
|
|
253
|
+
return bvOr(evalBits(left), evalBits(right));
|
|
254
|
+
}
|
|
255
|
+
case 'implies': {
|
|
256
|
+
const [left, right] = f.args ?? [];
|
|
257
|
+
return bvOr(bvNot(evalBits(left), allOnes), evalBits(right));
|
|
258
|
+
}
|
|
259
|
+
case 'biconditional': {
|
|
260
|
+
const [left, right] = f.args ?? [];
|
|
261
|
+
return bvNot(bvXor(evalBits(left), evalBits(right)), allOnes);
|
|
262
|
+
}
|
|
263
|
+
case 'xor': {
|
|
264
|
+
const [left, right] = f.args ?? [];
|
|
265
|
+
return bvXor(evalBits(left), evalBits(right));
|
|
266
|
+
}
|
|
267
|
+
case 'nand': {
|
|
268
|
+
const [left, right] = f.args ?? [];
|
|
269
|
+
return bvNot(bvAnd(evalBits(left), evalBits(right)), allOnes);
|
|
270
|
+
}
|
|
271
|
+
case 'nor': {
|
|
272
|
+
const [left, right] = f.args ?? [];
|
|
273
|
+
return bvNot(bvOr(evalBits(left), evalBits(right)), allOnes);
|
|
274
|
+
}
|
|
275
|
+
default:
|
|
276
|
+
throw new Error(`Operador no soportado en evaluación bitset: ${f.kind}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return { result: evalBits(formula), atomMasks, total, allOnes };
|
|
280
|
+
}
|
|
281
|
+
function bitsetPopcount(a) {
|
|
282
|
+
return bvPopcount(a);
|
|
283
|
+
}
|
|
284
|
+
function isPurePropositional(f) {
|
|
285
|
+
switch (f.kind) {
|
|
286
|
+
case 'atom':
|
|
287
|
+
return true;
|
|
288
|
+
case 'not':
|
|
289
|
+
case 'and':
|
|
290
|
+
case 'or':
|
|
291
|
+
case 'implies':
|
|
292
|
+
case 'biconditional':
|
|
293
|
+
case 'xor':
|
|
294
|
+
case 'nand':
|
|
295
|
+
case 'nor':
|
|
296
|
+
return (f.args || []).every(isPurePropositional);
|
|
297
|
+
default:
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Aplana recursivamente nodos binarios del mismo kind asociativo.
|
|
303
|
+
* Ej: or(or(P,Q), R) → [P, Q, R]
|
|
304
|
+
*/
|
|
305
|
+
function collectAssociativeArgs(f, kind) {
|
|
306
|
+
if (f.kind !== kind || !f.args?.length)
|
|
307
|
+
return [f];
|
|
308
|
+
const items = [];
|
|
309
|
+
for (const arg of f.args) {
|
|
310
|
+
if (!arg)
|
|
311
|
+
continue;
|
|
312
|
+
items.push(...collectAssociativeArgs(arg, kind));
|
|
313
|
+
}
|
|
314
|
+
return items;
|
|
315
|
+
}
|
|
316
|
+
function formulaToString(f) {
|
|
317
|
+
return (0, memo_1.memoizeString)(f, computeFormulaToString);
|
|
318
|
+
}
|
|
319
|
+
function computeFormulaToString(f) {
|
|
320
|
+
switch (f.kind) {
|
|
321
|
+
case 'true':
|
|
322
|
+
return '⊤';
|
|
323
|
+
case 'false':
|
|
324
|
+
return '⊥';
|
|
325
|
+
case 'atom':
|
|
326
|
+
return f.name || '?';
|
|
327
|
+
case 'not': {
|
|
328
|
+
const inner = f.args?.[0];
|
|
329
|
+
if (!inner)
|
|
330
|
+
return '!?';
|
|
331
|
+
if (inner.kind === 'atom')
|
|
332
|
+
return `!${formulaToString(inner)}`;
|
|
333
|
+
return `!(${formulaToString(inner)})`;
|
|
334
|
+
}
|
|
335
|
+
case 'and':
|
|
336
|
+
return f.args && f.args[0] && f.args[1]
|
|
337
|
+
? `(${collectAssociativeArgs(f, 'and').map(formulaToString).join(' & ')})`
|
|
338
|
+
: '? & ?';
|
|
339
|
+
case 'or':
|
|
340
|
+
return f.args && f.args[0] && f.args[1]
|
|
341
|
+
? `(${collectAssociativeArgs(f, 'or').map(formulaToString).join(' | ')})`
|
|
342
|
+
: '? | ?';
|
|
343
|
+
case 'implies':
|
|
344
|
+
return f.args && f.args[0] && f.args[1]
|
|
345
|
+
? `(${formulaToString(f.args[0])} -> ${formulaToString(f.args[1])})`
|
|
346
|
+
: '? -> ?';
|
|
347
|
+
case 'biconditional':
|
|
348
|
+
return f.args && f.args[0] && f.args[1]
|
|
349
|
+
? `(${formulaToString(f.args[0])} <-> ${formulaToString(f.args[1])})`
|
|
350
|
+
: '? <-> ?';
|
|
351
|
+
case 'nand':
|
|
352
|
+
return f.args && f.args[0] && f.args[1]
|
|
353
|
+
? `(${formulaToString(f.args[0])} ↑ ${formulaToString(f.args[1])})`
|
|
354
|
+
: '? ↑ ?';
|
|
355
|
+
case 'nor':
|
|
356
|
+
return f.args && f.args[0] && f.args[1]
|
|
357
|
+
? `(${formulaToString(f.args[0])} ↓ ${formulaToString(f.args[1])})`
|
|
358
|
+
: '? ↓ ?';
|
|
359
|
+
case 'xor':
|
|
360
|
+
return f.args && f.args[0] && f.args[1]
|
|
361
|
+
? `(${collectAssociativeArgs(f, 'xor').map(formulaToString).join(' ⊕ ')})`
|
|
362
|
+
: '? ⊕ ?';
|
|
363
|
+
case 'equals':
|
|
364
|
+
return f.args && f.args[0] && f.args[1]
|
|
365
|
+
? `(${formulaToString(f.args[0])} = ${formulaToString(f.args[1])})`
|
|
366
|
+
: '? = ?';
|
|
367
|
+
case 'temporal_next':
|
|
368
|
+
return f.args?.[0] ? `X(${formulaToString(f.args[0])})` : 'X(?)';
|
|
369
|
+
case 'temporal_until':
|
|
370
|
+
return f.args && f.args[0] && f.args[1]
|
|
371
|
+
? `(${formulaToString(f.args[0])} U ${formulaToString(f.args[1])})`
|
|
372
|
+
: '? U ?';
|
|
373
|
+
case 'modal_necessity':
|
|
374
|
+
return f.args?.[0] ? `[](${formulaToString(f.args[0])})` : '[](?)';
|
|
375
|
+
case 'modal_possibility':
|
|
376
|
+
return f.args?.[0] ? `<>(${formulaToString(f.args[0])})` : '<>(?)';
|
|
377
|
+
case 'forall':
|
|
378
|
+
return f.variable && f.args?.[0]
|
|
379
|
+
? `forall ${f.variable}(${formulaToString(f.args[0])})`
|
|
380
|
+
: 'forall ?(?)';
|
|
381
|
+
case 'exists':
|
|
382
|
+
return f.variable && f.args?.[0]
|
|
383
|
+
? `exists ${f.variable}(${formulaToString(f.args[0])})`
|
|
384
|
+
: 'exists ?(?)';
|
|
385
|
+
case 'predicate':
|
|
386
|
+
return f.name ? `${f.name}(${(f.params || []).join(', ')})` : '?(...)';
|
|
387
|
+
// Arithmetic
|
|
388
|
+
case 'number':
|
|
389
|
+
return f.value !== undefined ? String(f.value) : '?';
|
|
390
|
+
case 'add':
|
|
391
|
+
return f.args?.[0] && f.args?.[1]
|
|
392
|
+
? `(${formulaToString(f.args[0])} + ${formulaToString(f.args[1])})`
|
|
393
|
+
: '? + ?';
|
|
394
|
+
case 'subtract':
|
|
395
|
+
return f.args?.[0] && f.args?.[1]
|
|
396
|
+
? `(${formulaToString(f.args[0])} - ${formulaToString(f.args[1])})`
|
|
397
|
+
: '? - ?';
|
|
398
|
+
case 'multiply':
|
|
399
|
+
return f.args?.[0] && f.args?.[1]
|
|
400
|
+
? `(${formulaToString(f.args[0])} * ${formulaToString(f.args[1])})`
|
|
401
|
+
: '? * ?';
|
|
402
|
+
case 'divide':
|
|
403
|
+
return f.args?.[0] && f.args?.[1]
|
|
404
|
+
? `(${formulaToString(f.args[0])} / ${formulaToString(f.args[1])})`
|
|
405
|
+
: '? / ?';
|
|
406
|
+
case 'modulo':
|
|
407
|
+
return f.args?.[0] && f.args?.[1]
|
|
408
|
+
? `(${formulaToString(f.args[0])} % ${formulaToString(f.args[1])})`
|
|
409
|
+
: '? % ?';
|
|
410
|
+
case 'less':
|
|
411
|
+
return f.args?.[0] && f.args?.[1]
|
|
412
|
+
? `(${formulaToString(f.args[0])} < ${formulaToString(f.args[1])})`
|
|
413
|
+
: '? < ?';
|
|
414
|
+
case 'greater':
|
|
415
|
+
return f.args?.[0] && f.args?.[1]
|
|
416
|
+
? `(${formulaToString(f.args[0])} > ${formulaToString(f.args[1])})`
|
|
417
|
+
: '? > ?';
|
|
418
|
+
case 'less_eq':
|
|
419
|
+
return f.args?.[0] && f.args?.[1]
|
|
420
|
+
? `(${formulaToString(f.args[0])} <= ${formulaToString(f.args[1])})`
|
|
421
|
+
: '? <= ?';
|
|
422
|
+
case 'greater_eq':
|
|
423
|
+
return f.args?.[0] && f.args?.[1]
|
|
424
|
+
? `(${formulaToString(f.args[0])} >= ${formulaToString(f.args[1])})`
|
|
425
|
+
: '? >= ?';
|
|
426
|
+
default:
|
|
427
|
+
return '?';
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
function toNNF(f) {
|
|
431
|
+
return (0, memo_1.memoizeNNF)(f, computeNNF);
|
|
432
|
+
}
|
|
433
|
+
function computeNNF(f) {
|
|
434
|
+
const simplify = (node, negated) => {
|
|
435
|
+
const k = node.kind;
|
|
436
|
+
const args = node.args || [];
|
|
437
|
+
if (!negated) {
|
|
438
|
+
switch (k) {
|
|
439
|
+
case 'true':
|
|
440
|
+
case 'false':
|
|
441
|
+
case 'atom':
|
|
442
|
+
case 'predicate':
|
|
443
|
+
return node;
|
|
444
|
+
case 'not':
|
|
445
|
+
return simplify(args[0], true);
|
|
446
|
+
case 'and':
|
|
447
|
+
case 'or':
|
|
448
|
+
case 'implies':
|
|
449
|
+
case 'biconditional':
|
|
450
|
+
case 'modal_necessity':
|
|
451
|
+
case 'modal_possibility':
|
|
452
|
+
case 'temporal_next':
|
|
453
|
+
case 'forall':
|
|
454
|
+
case 'exists':
|
|
455
|
+
return { ...node, args: args.map((a) => simplify(a, false)) };
|
|
456
|
+
case 'nand':
|
|
457
|
+
return simplify({
|
|
458
|
+
kind: 'or',
|
|
459
|
+
args: [
|
|
460
|
+
{ kind: 'not', args: [args[0]] },
|
|
461
|
+
{ kind: 'not', args: [args[1]] },
|
|
462
|
+
],
|
|
463
|
+
}, false);
|
|
464
|
+
case 'nor':
|
|
465
|
+
return simplify({
|
|
466
|
+
kind: 'and',
|
|
467
|
+
args: [
|
|
468
|
+
{ kind: 'not', args: [args[0]] },
|
|
469
|
+
{ kind: 'not', args: [args[1]] },
|
|
470
|
+
],
|
|
471
|
+
}, false);
|
|
472
|
+
case 'xor':
|
|
473
|
+
return simplify({
|
|
474
|
+
kind: 'or',
|
|
475
|
+
args: [
|
|
476
|
+
{ kind: 'and', args: [args[0], { kind: 'not', args: [args[1]] }] },
|
|
477
|
+
{ kind: 'and', args: [{ kind: 'not', args: [args[0]] }, args[1]] },
|
|
478
|
+
],
|
|
479
|
+
}, false);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
switch (k) {
|
|
484
|
+
case 'true':
|
|
485
|
+
return { kind: 'false' };
|
|
486
|
+
case 'false':
|
|
487
|
+
return { kind: 'true' };
|
|
488
|
+
case 'atom':
|
|
489
|
+
case 'predicate':
|
|
490
|
+
return { kind: 'not', args: [node] };
|
|
491
|
+
case 'not':
|
|
492
|
+
return simplify(args[0], false);
|
|
493
|
+
case 'and':
|
|
494
|
+
return { kind: 'or', args: args.map((a) => simplify(a, true)) };
|
|
495
|
+
case 'or':
|
|
496
|
+
return { kind: 'and', args: args.map((a) => simplify(a, true)) };
|
|
497
|
+
case 'implies':
|
|
498
|
+
// !(A -> B) => A & !B
|
|
499
|
+
return { kind: 'and', args: [simplify(args[0], false), simplify(args[1], true)] };
|
|
500
|
+
case 'biconditional':
|
|
501
|
+
// !(A <-> B) => (A & !B) | (!A & B)
|
|
502
|
+
return simplify({
|
|
503
|
+
kind: 'or',
|
|
504
|
+
args: [
|
|
505
|
+
{ kind: 'and', args: [args[0], { kind: 'not', args: [args[1]] }] },
|
|
506
|
+
{ kind: 'and', args: [{ kind: 'not', args: [args[0]] }, args[1]] },
|
|
507
|
+
],
|
|
508
|
+
}, false);
|
|
509
|
+
case 'nand':
|
|
510
|
+
// !(A nand B) => A & B
|
|
511
|
+
return simplify({ kind: 'and', args: [args[0], args[1]] }, false);
|
|
512
|
+
case 'nor':
|
|
513
|
+
// !(A nor B) => A | B
|
|
514
|
+
return simplify({ kind: 'or', args: [args[0], args[1]] }, false);
|
|
515
|
+
case 'xor':
|
|
516
|
+
// !(A xor B) => A <-> B
|
|
517
|
+
return simplify({ kind: 'biconditional', args: [args[0], args[1]] }, false);
|
|
518
|
+
case 'modal_necessity':
|
|
519
|
+
return { kind: 'modal_possibility', args: [simplify(args[0], true)] };
|
|
520
|
+
case 'modal_possibility':
|
|
521
|
+
return { kind: 'modal_necessity', args: [simplify(args[0], true)] };
|
|
522
|
+
case 'temporal_next':
|
|
523
|
+
// ¬X(φ) ≡ X(¬φ) — next conmuta con negación en LTL
|
|
524
|
+
return { kind: 'temporal_next', args: [simplify(args[0], true)] };
|
|
525
|
+
case 'forall':
|
|
526
|
+
return {
|
|
527
|
+
kind: 'exists',
|
|
528
|
+
variable: node.variable,
|
|
529
|
+
args: [simplify(args[0], true)],
|
|
530
|
+
};
|
|
531
|
+
case 'exists':
|
|
532
|
+
return {
|
|
533
|
+
kind: 'forall',
|
|
534
|
+
variable: node.variable,
|
|
535
|
+
args: [simplify(args[0], true)],
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
return node;
|
|
540
|
+
};
|
|
541
|
+
return simplify(f, false);
|
|
542
|
+
}
|
|
543
|
+
function distributeOrOverAnd(f) {
|
|
544
|
+
if (f.kind === 'or' && f.args?.[0] && f.args?.[1]) {
|
|
545
|
+
const l = distributeOrOverAnd(f.args[0]);
|
|
546
|
+
const r = distributeOrOverAnd(f.args[1]);
|
|
547
|
+
if (l.kind === 'and' && l.args?.[0] && l.args?.[1]) {
|
|
548
|
+
return {
|
|
549
|
+
kind: 'and',
|
|
550
|
+
args: [
|
|
551
|
+
distributeOrOverAnd({ kind: 'or', args: [l.args[0], r] }),
|
|
552
|
+
distributeOrOverAnd({ kind: 'or', args: [l.args[1], r] }),
|
|
553
|
+
],
|
|
554
|
+
};
|
|
555
|
+
}
|
|
556
|
+
if (r.kind === 'and' && r.args?.[0] && r.args?.[1]) {
|
|
557
|
+
return {
|
|
558
|
+
kind: 'and',
|
|
559
|
+
args: [
|
|
560
|
+
distributeOrOverAnd({ kind: 'or', args: [l, r.args[0]] }),
|
|
561
|
+
distributeOrOverAnd({ kind: 'or', args: [l, r.args[1]] }),
|
|
562
|
+
],
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
return { kind: 'or', args: [l, r] };
|
|
566
|
+
}
|
|
567
|
+
if (f.args)
|
|
568
|
+
return { ...f, args: f.args.map((a) => (a ? distributeOrOverAnd(a) : a)) };
|
|
569
|
+
return f;
|
|
570
|
+
}
|
|
571
|
+
function toCNF(f) {
|
|
572
|
+
return (0, memo_1.memoizeCNF)(f, (formula) => distributeOrOverAnd(toNNF(formula)));
|
|
573
|
+
}
|
|
574
|
+
function distributeAndOverOr(f) {
|
|
575
|
+
if (f.kind === 'and' && f.args?.[0] && f.args?.[1]) {
|
|
576
|
+
const l = distributeAndOverOr(f.args[0]);
|
|
577
|
+
const r = distributeAndOverOr(f.args[1]);
|
|
578
|
+
if (l.kind === 'or' && l.args?.[0] && l.args?.[1]) {
|
|
579
|
+
return {
|
|
580
|
+
kind: 'or',
|
|
581
|
+
args: [
|
|
582
|
+
distributeAndOverOr({ kind: 'and', args: [l.args[0], r] }),
|
|
583
|
+
distributeAndOverOr({ kind: 'and', args: [l.args[1], r] }),
|
|
584
|
+
],
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
if (r.kind === 'or' && r.args?.[0] && r.args?.[1]) {
|
|
588
|
+
return {
|
|
589
|
+
kind: 'or',
|
|
590
|
+
args: [
|
|
591
|
+
distributeAndOverOr({ kind: 'and', args: [l, r.args[0]] }),
|
|
592
|
+
distributeAndOverOr({ kind: 'and', args: [l, r.args[1]] }),
|
|
593
|
+
],
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
return { kind: 'and', args: [l, r] };
|
|
597
|
+
}
|
|
598
|
+
if (f.args)
|
|
599
|
+
return { ...f, args: f.args.map((a) => (a ? distributeAndOverOr(a) : a)) };
|
|
600
|
+
return f;
|
|
601
|
+
}
|
|
602
|
+
function toDNF(f) {
|
|
603
|
+
return (0, memo_1.memoizeDNF)(f, (formula) => distributeAndOverOr(toNNF(formula)));
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Extracts clauses from a CNF formula for resolution analysis (#28)
|
|
607
|
+
* Returns an array of clauses, where each clause is an array of literals.
|
|
608
|
+
*/
|
|
609
|
+
function extractClauses(f) {
|
|
610
|
+
const cnf = toCNF(f);
|
|
611
|
+
const clauses = [];
|
|
612
|
+
const extractClause = (node) => {
|
|
613
|
+
if (node.kind === 'or') {
|
|
614
|
+
const lits = [];
|
|
615
|
+
for (const arg of node.args || []) {
|
|
616
|
+
lits.push(...extractClause(arg));
|
|
617
|
+
}
|
|
618
|
+
return lits;
|
|
619
|
+
}
|
|
620
|
+
if (node.kind === 'not' && node.args?.[0]) {
|
|
621
|
+
return [`¬${formulaToString(node.args[0])}`];
|
|
622
|
+
}
|
|
623
|
+
return [formulaToString(node)];
|
|
624
|
+
};
|
|
625
|
+
const extractClauses2 = (node) => {
|
|
626
|
+
if (node.kind === 'and') {
|
|
627
|
+
for (const arg of node.args || []) {
|
|
628
|
+
extractClauses2(arg);
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
else {
|
|
632
|
+
clauses.push(extractClause(node));
|
|
633
|
+
}
|
|
634
|
+
};
|
|
635
|
+
extractClauses2(cnf);
|
|
636
|
+
return clauses;
|
|
637
|
+
}
|
|
638
|
+
function getSubFormulas(f) {
|
|
639
|
+
const result = [];
|
|
640
|
+
const seen = new Set();
|
|
641
|
+
function walk(node) {
|
|
642
|
+
if (node.args)
|
|
643
|
+
node.args.forEach((a) => {
|
|
644
|
+
if (a)
|
|
645
|
+
walk(a);
|
|
646
|
+
});
|
|
647
|
+
const hash = formulaToString(node);
|
|
648
|
+
if (!seen.has(hash)) {
|
|
649
|
+
seen.add(hash);
|
|
650
|
+
result.push(node);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
walk(f);
|
|
654
|
+
// Remove atoms and the full formula itself
|
|
655
|
+
return result.filter((n) => n.kind !== 'atom' && formulaToString(n) !== formulaToString(f));
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* Igualdad estructural con alpha-equivalencia sobre variables cuantificadas.
|
|
659
|
+
* Cubre átomos, predicados, cuantificadores (∀/∃), modales y constantes.
|
|
660
|
+
*/
|
|
661
|
+
function formulasEqual(a, b) {
|
|
662
|
+
return alphaEqualFormulas(a, b, new Map(), new Map());
|
|
663
|
+
}
|
|
664
|
+
function alphaEqualFormulas(a, b, bindA, bindB, depth = 0) {
|
|
665
|
+
if (a.kind !== b.kind)
|
|
666
|
+
return false;
|
|
667
|
+
switch (a.kind) {
|
|
668
|
+
case 'true':
|
|
669
|
+
case 'false':
|
|
670
|
+
return true;
|
|
671
|
+
case 'atom': {
|
|
672
|
+
const nameA = a.name;
|
|
673
|
+
const nameB = b.name;
|
|
674
|
+
if (nameA === undefined || nameB === undefined)
|
|
675
|
+
return nameA === nameB;
|
|
676
|
+
const bA = bindA.get(nameA);
|
|
677
|
+
const bB = bindB.get(nameB);
|
|
678
|
+
if (bA !== undefined || bB !== undefined)
|
|
679
|
+
return bA === bB;
|
|
680
|
+
return nameA === nameB;
|
|
681
|
+
}
|
|
682
|
+
case 'number':
|
|
683
|
+
return a.value === b.value;
|
|
684
|
+
case 'predicate': {
|
|
685
|
+
if (a.name !== b.name)
|
|
686
|
+
return false;
|
|
687
|
+
const paramsA = a.params || a.terms || [];
|
|
688
|
+
const paramsB = b.params || b.terms || [];
|
|
689
|
+
if (paramsA.length !== paramsB.length)
|
|
690
|
+
return false;
|
|
691
|
+
for (let i = 0; i < paramsA.length; i++) {
|
|
692
|
+
const pA = paramsA[i];
|
|
693
|
+
const pB = paramsB[i];
|
|
694
|
+
const bndA = bindA.get(pA);
|
|
695
|
+
const bndB = bindB.get(pB);
|
|
696
|
+
if (bndA !== undefined || bndB !== undefined) {
|
|
697
|
+
if (bndA !== bndB)
|
|
698
|
+
return false;
|
|
699
|
+
}
|
|
700
|
+
else if (pA !== pB) {
|
|
701
|
+
return false;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
return true;
|
|
705
|
+
}
|
|
706
|
+
case 'forall':
|
|
707
|
+
case 'exists': {
|
|
708
|
+
const vA = a.variable;
|
|
709
|
+
const vB = b.variable;
|
|
710
|
+
if (!vA || !vB)
|
|
711
|
+
return vA === vB;
|
|
712
|
+
const innerA = a.args?.[0];
|
|
713
|
+
const innerB = b.args?.[0];
|
|
714
|
+
if (!innerA || !innerB)
|
|
715
|
+
return false;
|
|
716
|
+
const prevA = bindA.get(vA);
|
|
717
|
+
const prevB = bindB.get(vB);
|
|
718
|
+
bindA.set(vA, depth);
|
|
719
|
+
bindB.set(vB, depth);
|
|
720
|
+
const eq = alphaEqualFormulas(innerA, innerB, bindA, bindB, depth + 1);
|
|
721
|
+
if (prevA === undefined)
|
|
722
|
+
bindA.delete(vA);
|
|
723
|
+
else
|
|
724
|
+
bindA.set(vA, prevA);
|
|
725
|
+
if (prevB === undefined)
|
|
726
|
+
bindB.delete(vB);
|
|
727
|
+
else
|
|
728
|
+
bindB.set(vB, prevB);
|
|
729
|
+
return eq;
|
|
730
|
+
}
|
|
731
|
+
case 'modal_necessity':
|
|
732
|
+
case 'modal_possibility':
|
|
733
|
+
case 'temporal_next':
|
|
734
|
+
case 'temporal_until': {
|
|
735
|
+
if (a.name !== b.name)
|
|
736
|
+
return false;
|
|
737
|
+
const argsA = a.args || [];
|
|
738
|
+
const argsB = b.args || [];
|
|
739
|
+
if (argsA.length !== argsB.length)
|
|
740
|
+
return false;
|
|
741
|
+
return argsA.every((arg, i) => alphaEqualFormulas(arg, argsB[i], bindA, bindB, depth));
|
|
742
|
+
}
|
|
743
|
+
default: {
|
|
744
|
+
const argsA = a.args || [];
|
|
745
|
+
const argsB = b.args || [];
|
|
746
|
+
if (argsA.length !== argsB.length)
|
|
747
|
+
return false;
|
|
748
|
+
if (argsA.length === 0) {
|
|
749
|
+
if (a.name !== b.name)
|
|
750
|
+
return false;
|
|
751
|
+
return a.value === b.value;
|
|
752
|
+
}
|
|
753
|
+
return argsA.every((arg, i) => alphaEqualFormulas(arg, argsB[i], bindA, bindB, depth));
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
// --- Motor de derivación ---
|
|
758
|
+
/** Límite duro de fórmulas derivadas para evitar explosión combinatoria */
|
|
759
|
+
const MAX_KNOWN = 5000;
|
|
760
|
+
/** Profundidad máxima de negación en cualquier sub-fórmula */
|
|
761
|
+
function maxNegationDepth(f) {
|
|
762
|
+
if (f.kind === 'not' && f.args?.[0]) {
|
|
763
|
+
return 1 + maxNegationDepth(f.args[0]);
|
|
764
|
+
}
|
|
765
|
+
if (f.args) {
|
|
766
|
+
let max = 0;
|
|
767
|
+
for (const a of f.args) {
|
|
768
|
+
if (a) {
|
|
769
|
+
const d = maxNegationDepth(a);
|
|
770
|
+
if (d > max)
|
|
771
|
+
max = d;
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
return max;
|
|
775
|
+
}
|
|
776
|
+
return 0;
|
|
777
|
+
}
|
|
778
|
+
function formulaHash(f) {
|
|
779
|
+
return formulaToString(f);
|
|
780
|
+
}
|
|
781
|
+
/** Check if a formula is a sub-formula of the goal (prevents explosive rule cascading) */
|
|
782
|
+
function isRelevantToGoal(f, goal) {
|
|
783
|
+
const goalHash = formulaHash(goal);
|
|
784
|
+
const fHash = formulaHash(f);
|
|
785
|
+
if (fHash === goalHash)
|
|
786
|
+
return true;
|
|
787
|
+
// Check if f appears as sub-formula of goal
|
|
788
|
+
const checkSub = (node) => {
|
|
789
|
+
if (formulaHash(node) === fHash)
|
|
790
|
+
return true;
|
|
791
|
+
if (node.args)
|
|
792
|
+
return node.args.some(checkSub);
|
|
793
|
+
return false;
|
|
794
|
+
};
|
|
795
|
+
return checkSub(goal);
|
|
796
|
+
}
|
|
797
|
+
function addDerivedFormula(state, formula, justification, premises, source = 'rule') {
|
|
798
|
+
const hash = formulaHash(formula);
|
|
799
|
+
if (state.known.has(hash)) {
|
|
800
|
+
const variants = state.alternativeDerivations.get(hash) ?? [];
|
|
801
|
+
const isDuplicate = variants.some((variant) => variant.justification === justification &&
|
|
802
|
+
variant.source === source &&
|
|
803
|
+
variant.premises.length === premises.length &&
|
|
804
|
+
variant.premises.every((premise, index) => premise === premises[index]));
|
|
805
|
+
if (!isDuplicate) {
|
|
806
|
+
variants.push({ justification, premises: [...premises], source });
|
|
807
|
+
state.alternativeDerivations.set(hash, variants);
|
|
808
|
+
}
|
|
809
|
+
return false;
|
|
810
|
+
}
|
|
811
|
+
state.stepCount++;
|
|
812
|
+
state.steps.push({
|
|
813
|
+
stepNumber: state.stepCount,
|
|
814
|
+
formula,
|
|
815
|
+
justification,
|
|
816
|
+
premises,
|
|
817
|
+
source,
|
|
818
|
+
});
|
|
819
|
+
state.known.set(hash, formula);
|
|
820
|
+
state.formulas.push(formula);
|
|
821
|
+
state.stepByHash.set(hash, state.stepCount);
|
|
822
|
+
return true;
|
|
823
|
+
}
|
|
824
|
+
function buildPremiseRefs(theory, premiseNames) {
|
|
825
|
+
return premiseNames.map((name) => ({
|
|
826
|
+
name,
|
|
827
|
+
location: (theory.axioms.get(name) || theory.theorems.get(name))?.source,
|
|
828
|
+
}));
|
|
829
|
+
}
|
|
830
|
+
function buildProof(goal, steps, premiseNames, theory, method = 'natural_deduction', subproofs, metadataExtras = {}) {
|
|
831
|
+
const metadata = {
|
|
832
|
+
createdAt: new Date().toISOString(),
|
|
833
|
+
profile: theory.profile,
|
|
834
|
+
...metadataExtras,
|
|
835
|
+
};
|
|
836
|
+
return {
|
|
837
|
+
goal,
|
|
838
|
+
steps,
|
|
839
|
+
status: 'complete',
|
|
840
|
+
derivedFrom: premiseNames,
|
|
841
|
+
premiseRefs: buildPremiseRefs(theory, premiseNames),
|
|
842
|
+
method,
|
|
843
|
+
subproofs: subproofs ? [...subproofs] : undefined,
|
|
844
|
+
metadata,
|
|
845
|
+
};
|
|
846
|
+
}
|
|
847
|
+
function buildDerivationMetadata(state, retainedSteps, semanticFallback = false) {
|
|
848
|
+
const sampledAlternatives = Array.from(state.alternativeDerivations.entries())
|
|
849
|
+
.filter(([, variants]) => variants.length > 0)
|
|
850
|
+
.sort((left, right) => right[1].length - left[1].length)
|
|
851
|
+
.slice(0, 12)
|
|
852
|
+
.map(([hash, variants]) => ({
|
|
853
|
+
formula: hash,
|
|
854
|
+
primaryStep: state.stepByHash.get(hash) ?? 0,
|
|
855
|
+
variants: variants.slice(0, 6).map((variant) => ({
|
|
856
|
+
justification: variant.justification,
|
|
857
|
+
premises: [...variant.premises],
|
|
858
|
+
source: variant.source,
|
|
859
|
+
})),
|
|
860
|
+
}));
|
|
861
|
+
const alternativeDerivationCount = Array.from(state.alternativeDerivations.values()).reduce((count, variants) => count + variants.length, 0);
|
|
862
|
+
return {
|
|
863
|
+
exploredStepCount: state.steps.length,
|
|
864
|
+
retainedStepCount: retainedSteps.length,
|
|
865
|
+
uniqueFormulaCount: state.formulas.length,
|
|
866
|
+
alternativeDerivationCount,
|
|
867
|
+
alternativeDerivationSamples: sampledAlternatives,
|
|
868
|
+
semanticFallback,
|
|
869
|
+
};
|
|
870
|
+
}
|
|
871
|
+
function buildCompositeDerivationMetadata(state, retainedSteps, subProofs = [], semanticFallback = false) {
|
|
872
|
+
const baseMetadata = buildDerivationMetadata(state, retainedSteps, semanticFallback);
|
|
873
|
+
const baseExploredStepCount = Number(baseMetadata.exploredStepCount ?? 0);
|
|
874
|
+
const baseAlternativeDerivationCount = Number(baseMetadata.alternativeDerivationCount ?? 0);
|
|
875
|
+
const subExploredStepCount = subProofs.reduce((count, subProof) => {
|
|
876
|
+
const subMetadata = subProof.metadata ?? {};
|
|
877
|
+
const explored = Number(subMetadata.exploredStepCount ?? subProof.steps.length);
|
|
878
|
+
return count + explored;
|
|
879
|
+
}, 0);
|
|
880
|
+
const subAlternativeDerivationCount = subProofs.reduce((count, subProof) => {
|
|
881
|
+
const subMetadata = subProof.metadata ?? {};
|
|
882
|
+
const alternatives = Number(subMetadata.alternativeDerivationCount ?? 0);
|
|
883
|
+
return count + alternatives;
|
|
884
|
+
}, 0);
|
|
885
|
+
const exploredStepCount = baseExploredStepCount + subExploredStepCount;
|
|
886
|
+
const alternativeDerivationCount = baseAlternativeDerivationCount + subAlternativeDerivationCount;
|
|
887
|
+
return {
|
|
888
|
+
...baseMetadata,
|
|
889
|
+
exploredStepCount,
|
|
890
|
+
retainedStepCount: retainedSteps.length,
|
|
891
|
+
alternativeDerivationCount,
|
|
892
|
+
alternativeDerivationSamples: [],
|
|
893
|
+
};
|
|
894
|
+
}
|
|
895
|
+
function isNegationOf(a, b) {
|
|
896
|
+
return a.kind === 'not' && !!a.args?.[0] && formulasEqual(a.args[0], b);
|
|
897
|
+
}
|
|
898
|
+
function areComplementary(a, b) {
|
|
899
|
+
return isNegationOf(a, b) || isNegationOf(b, a);
|
|
900
|
+
}
|
|
901
|
+
function isExcludedMiddleFormula(formula) {
|
|
902
|
+
if (formula.kind !== 'or' || !formula.args?.[0] || !formula.args?.[1])
|
|
903
|
+
return false;
|
|
904
|
+
return (isNegationOf(formula.args[0], formula.args[1]) || isNegationOf(formula.args[1], formula.args[0]));
|
|
905
|
+
}
|
|
906
|
+
function buildSingleAssumptionProof(premiseSteps, assumption, assumptionJustification, subProof, goal, finalJustification) {
|
|
907
|
+
const mainSteps = [];
|
|
908
|
+
let stepNum = 0;
|
|
909
|
+
for (const s of premiseSteps) {
|
|
910
|
+
if (s.source === 'premise') {
|
|
911
|
+
stepNum++;
|
|
912
|
+
mainSteps.push({ ...s, stepNumber: stepNum, premises: [] });
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
stepNum++;
|
|
916
|
+
const assumptionStepNum = stepNum;
|
|
917
|
+
mainSteps.push({
|
|
918
|
+
stepNumber: stepNum,
|
|
919
|
+
formula: assumption,
|
|
920
|
+
justification: assumptionJustification,
|
|
921
|
+
premises: [],
|
|
922
|
+
source: 'assumption',
|
|
923
|
+
});
|
|
924
|
+
const subStepMap = new Map();
|
|
925
|
+
for (const s of subProof.steps) {
|
|
926
|
+
if (s.source === 'premise' && formulasEqual(s.formula, assumption)) {
|
|
927
|
+
subStepMap.set(s.stepNumber, assumptionStepNum);
|
|
928
|
+
continue;
|
|
929
|
+
}
|
|
930
|
+
if (s.source === 'premise') {
|
|
931
|
+
const existing = mainSteps.find((ms) => ms.source === 'premise' && formulasEqual(ms.formula, s.formula));
|
|
932
|
+
if (existing) {
|
|
933
|
+
subStepMap.set(s.stepNumber, existing.stepNumber);
|
|
934
|
+
continue;
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
stepNum++;
|
|
938
|
+
subStepMap.set(s.stepNumber, stepNum);
|
|
939
|
+
mainSteps.push({
|
|
940
|
+
stepNumber: stepNum,
|
|
941
|
+
formula: s.formula,
|
|
942
|
+
justification: s.justification,
|
|
943
|
+
premises: s.premises.map((p) => subStepMap.get(p) || p),
|
|
944
|
+
source: s.source,
|
|
945
|
+
});
|
|
946
|
+
}
|
|
947
|
+
stepNum++;
|
|
948
|
+
const subGoalStepNum = subStepMap.get(subProof.steps[subProof.steps.length - 1]?.stepNumber ?? 0) ?? stepNum - 1;
|
|
949
|
+
mainSteps.push({
|
|
950
|
+
stepNumber: stepNum,
|
|
951
|
+
formula: goal,
|
|
952
|
+
justification: finalJustification,
|
|
953
|
+
premises: [assumptionStepNum, subGoalStepNum],
|
|
954
|
+
subproofs: [subProof],
|
|
955
|
+
source: 'rule',
|
|
956
|
+
});
|
|
957
|
+
return mainSteps;
|
|
958
|
+
}
|
|
959
|
+
function buildMergedGoalProof(premiseSteps, subProofs, goal, finalJustification) {
|
|
960
|
+
const mainSteps = [];
|
|
961
|
+
let stepNum = 0;
|
|
962
|
+
const baseStepByHash = new Map();
|
|
963
|
+
for (const s of premiseSteps) {
|
|
964
|
+
if (s.source === 'premise') {
|
|
965
|
+
stepNum++;
|
|
966
|
+
mainSteps.push({ ...s, stepNumber: stepNum, premises: [] });
|
|
967
|
+
baseStepByHash.set(formulaHash(s.formula), stepNum);
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
const finalPremises = [];
|
|
971
|
+
for (const subProof of subProofs) {
|
|
972
|
+
const stepMap = new Map();
|
|
973
|
+
for (const s of subProof.steps) {
|
|
974
|
+
const hash = formulaHash(s.formula);
|
|
975
|
+
if (s.source === 'premise' && baseStepByHash.has(hash)) {
|
|
976
|
+
stepMap.set(s.stepNumber, baseStepByHash.get(hash) ?? 0);
|
|
977
|
+
continue;
|
|
978
|
+
}
|
|
979
|
+
if (s.source !== 'assumption' && baseStepByHash.has(hash)) {
|
|
980
|
+
stepMap.set(s.stepNumber, baseStepByHash.get(hash) ?? 0);
|
|
981
|
+
continue;
|
|
982
|
+
}
|
|
983
|
+
stepNum++;
|
|
984
|
+
stepMap.set(s.stepNumber, stepNum);
|
|
985
|
+
mainSteps.push({
|
|
986
|
+
stepNumber: stepNum,
|
|
987
|
+
formula: s.formula,
|
|
988
|
+
justification: s.justification,
|
|
989
|
+
premises: s.premises.map((p) => stepMap.get(p) || p),
|
|
990
|
+
subproofs: s.subproofs ? [...s.subproofs] : undefined,
|
|
991
|
+
source: s.source,
|
|
992
|
+
});
|
|
993
|
+
if (s.source !== 'assumption') {
|
|
994
|
+
baseStepByHash.set(hash, stepNum);
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
const mappedFinal = stepMap.get(subProof.steps[subProof.steps.length - 1]?.stepNumber ?? 0);
|
|
998
|
+
if (mappedFinal)
|
|
999
|
+
finalPremises.push(mappedFinal);
|
|
1000
|
+
}
|
|
1001
|
+
stepNum++;
|
|
1002
|
+
mainSteps.push({
|
|
1003
|
+
stepNumber: stepNum,
|
|
1004
|
+
formula: goal,
|
|
1005
|
+
justification: finalJustification,
|
|
1006
|
+
premises: finalPremises,
|
|
1007
|
+
subproofs: subProofs,
|
|
1008
|
+
source: 'rule',
|
|
1009
|
+
});
|
|
1010
|
+
return mainSteps;
|
|
1011
|
+
}
|
|
1012
|
+
function buildKnownDerivationProof(state, formula, premiseNames, theory) {
|
|
1013
|
+
const relevantSteps = traceBack(state.steps, formula);
|
|
1014
|
+
return buildProof(formula, relevantSteps, premiseNames, theory, 'natural_deduction', undefined, buildDerivationMetadata(state, relevantSteps));
|
|
1015
|
+
}
|
|
1016
|
+
function getCommutativeVariant(formula) {
|
|
1017
|
+
if ((formula.kind === 'and' || formula.kind === 'or') && formula.args?.[0] && formula.args?.[1]) {
|
|
1018
|
+
return { kind: formula.kind, args: [formula.args[1], formula.args[0]] };
|
|
1019
|
+
}
|
|
1020
|
+
return null;
|
|
1021
|
+
}
|
|
1022
|
+
function getAssociativeVariants(formula) {
|
|
1023
|
+
const variants = [];
|
|
1024
|
+
if ((formula.kind === 'and' || formula.kind === 'or') && formula.args?.[0] && formula.args?.[1]) {
|
|
1025
|
+
const [left, right] = formula.args;
|
|
1026
|
+
if (left.kind === formula.kind && left.args?.[0] && left.args?.[1]) {
|
|
1027
|
+
variants.push({
|
|
1028
|
+
kind: formula.kind,
|
|
1029
|
+
args: [left.args[0], { kind: formula.kind, args: [left.args[1], right] }],
|
|
1030
|
+
});
|
|
1031
|
+
}
|
|
1032
|
+
if (right.kind === formula.kind && right.args?.[0] && right.args?.[1]) {
|
|
1033
|
+
variants.push({
|
|
1034
|
+
kind: formula.kind,
|
|
1035
|
+
args: [{ kind: formula.kind, args: [left, right.args[0]] }, right.args[1]],
|
|
1036
|
+
});
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
return variants;
|
|
1040
|
+
}
|
|
1041
|
+
function getAbsorptionResult(formula) {
|
|
1042
|
+
if (formula.kind === 'and' && formula.args?.[0] && formula.args?.[1]) {
|
|
1043
|
+
const [left, right] = formula.args;
|
|
1044
|
+
if (right.kind === 'or' && right.args?.some((arg) => formulasEqual(arg, left)))
|
|
1045
|
+
return left;
|
|
1046
|
+
if (left.kind === 'or' && left.args?.some((arg) => formulasEqual(arg, right)))
|
|
1047
|
+
return right;
|
|
1048
|
+
}
|
|
1049
|
+
if (formula.kind === 'or' && formula.args?.[0] && formula.args?.[1]) {
|
|
1050
|
+
const [left, right] = formula.args;
|
|
1051
|
+
if (right.kind === 'and' && right.args?.some((arg) => formulasEqual(arg, left)))
|
|
1052
|
+
return left;
|
|
1053
|
+
if (left.kind === 'and' && left.args?.some((arg) => formulasEqual(arg, right)))
|
|
1054
|
+
return right;
|
|
1055
|
+
}
|
|
1056
|
+
return null;
|
|
1057
|
+
}
|
|
1058
|
+
function tryDerive(goal, theory, premiseNames, depth = 0) {
|
|
1059
|
+
const state = {
|
|
1060
|
+
known: new Map(),
|
|
1061
|
+
formulas: [],
|
|
1062
|
+
steps: [],
|
|
1063
|
+
stepCount: 0,
|
|
1064
|
+
stepByHash: new Map(),
|
|
1065
|
+
alternativeDerivations: new Map(),
|
|
1066
|
+
};
|
|
1067
|
+
// Cargar premisas
|
|
1068
|
+
for (const name of premiseNames) {
|
|
1069
|
+
let f = theory.axioms.get(name) || theory.theorems.get(name);
|
|
1070
|
+
// Fallback: if name not found directly, search for an axiom/theorem whose formula
|
|
1071
|
+
// matches the bare atom name (e.g., premise "Q" matches a theorem whose formula is atom Q)
|
|
1072
|
+
if (!f) {
|
|
1073
|
+
for (const [, formula] of theory.axioms) {
|
|
1074
|
+
if (formula.kind === 'atom' && formula.name === name) {
|
|
1075
|
+
f = formula;
|
|
1076
|
+
break;
|
|
1077
|
+
}
|
|
1078
|
+
}
|
|
1079
|
+
if (!f) {
|
|
1080
|
+
for (const [, formula] of theory.theorems) {
|
|
1081
|
+
if (formula.kind === 'atom' && formula.name === name) {
|
|
1082
|
+
f = formula;
|
|
1083
|
+
break;
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
if (f) {
|
|
1089
|
+
state.stepCount++;
|
|
1090
|
+
state.steps.push({
|
|
1091
|
+
stepNumber: state.stepCount,
|
|
1092
|
+
formula: f,
|
|
1093
|
+
justification: `Premisa (${name})`,
|
|
1094
|
+
premises: [],
|
|
1095
|
+
source: 'premise',
|
|
1096
|
+
});
|
|
1097
|
+
state.known.set(formulaHash(f), f);
|
|
1098
|
+
state.formulas.push(f);
|
|
1099
|
+
state.stepByHash.set(formulaHash(f), state.stepCount);
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
if (isExcludedMiddleFormula(goal)) {
|
|
1103
|
+
addDerivedFormula(state, goal, 'Tercero excluido', []);
|
|
1104
|
+
}
|
|
1105
|
+
// Intentar derivar con BFS aplicando reglas (optimizado)
|
|
1106
|
+
const maxIterations = 1000;
|
|
1107
|
+
let changed = true;
|
|
1108
|
+
let iterations = 0;
|
|
1109
|
+
let lastProcessedIndex = 0;
|
|
1110
|
+
while (changed && iterations < maxIterations && state.known.size < MAX_KNOWN) {
|
|
1111
|
+
changed = false;
|
|
1112
|
+
iterations++;
|
|
1113
|
+
const currentFormulas = state.formulas;
|
|
1114
|
+
const prevProcessedIndex = lastProcessedIndex;
|
|
1115
|
+
lastProcessedIndex = currentFormulas.length;
|
|
1116
|
+
for (let i = 0; i < currentFormulas.length; i++) {
|
|
1117
|
+
const f1 = currentFormulas[i];
|
|
1118
|
+
if (state.known.has(formulaHash(goal)))
|
|
1119
|
+
break;
|
|
1120
|
+
for (let j = 0; j < currentFormulas.length; j++) {
|
|
1121
|
+
// Optimización crucial O(N^2 -> N): ignorar pares antiguos
|
|
1122
|
+
if (i < prevProcessedIndex && j < prevProcessedIndex)
|
|
1123
|
+
continue;
|
|
1124
|
+
const f2 = currentFormulas[j];
|
|
1125
|
+
if (state.known.has(formulaHash(goal)))
|
|
1126
|
+
break;
|
|
1127
|
+
// Contradicción explícita: de A y !A, derivar false (⊥)
|
|
1128
|
+
if ((f1.kind === 'not' && f1.args?.[0] && formulasEqual(f1.args[0], f2)) ||
|
|
1129
|
+
(f2.kind === 'not' && f2.args?.[0] && formulasEqual(f2.args[0], f1))) {
|
|
1130
|
+
changed =
|
|
1131
|
+
addDerivedFormula(state, { kind: 'false' }, 'Contradiccion', [
|
|
1132
|
+
findStep(state.steps, f1),
|
|
1133
|
+
findStep(state.steps, f2),
|
|
1134
|
+
]) || changed;
|
|
1135
|
+
}
|
|
1136
|
+
// Modus Ponens: de A y (A -> B), derivar B
|
|
1137
|
+
if (f2.kind === 'implies' &&
|
|
1138
|
+
f2.args?.[0] &&
|
|
1139
|
+
f2.args?.[1] &&
|
|
1140
|
+
formulasEqual(f2.args[0], f1)) {
|
|
1141
|
+
const conclusion = f2.args[1];
|
|
1142
|
+
const s1 = findStep(state.steps, f1);
|
|
1143
|
+
const s2 = findStep(state.steps, f2);
|
|
1144
|
+
changed = addDerivedFormula(state, conclusion, 'Modus Ponens', [s1, s2]) || changed;
|
|
1145
|
+
}
|
|
1146
|
+
// Modus Ponens inverso: de (A -> B) y A, derivar B
|
|
1147
|
+
if (f1.kind === 'implies' &&
|
|
1148
|
+
f1.args?.[0] &&
|
|
1149
|
+
f1.args?.[1] &&
|
|
1150
|
+
formulasEqual(f1.args[0], f2)) {
|
|
1151
|
+
const conclusion = f1.args[1];
|
|
1152
|
+
const s1 = findStep(state.steps, f1);
|
|
1153
|
+
const s2 = findStep(state.steps, f2);
|
|
1154
|
+
changed = addDerivedFormula(state, conclusion, 'Modus Ponens', [s1, s2]) || changed;
|
|
1155
|
+
}
|
|
1156
|
+
// Modus Tollens: de !B y (A -> B), derivar !A
|
|
1157
|
+
if (f1.kind === 'not' &&
|
|
1158
|
+
f1.args?.[0] &&
|
|
1159
|
+
f2.kind === 'implies' &&
|
|
1160
|
+
f2.args?.[1] &&
|
|
1161
|
+
f2.args?.[0] &&
|
|
1162
|
+
formulasEqual(f1.args[0], f2.args[1])) {
|
|
1163
|
+
const conclusion = { kind: 'not', args: [f2.args[0]] };
|
|
1164
|
+
changed =
|
|
1165
|
+
addDerivedFormula(state, conclusion, 'Modus Tollens', [
|
|
1166
|
+
findStep(state.steps, f1),
|
|
1167
|
+
findStep(state.steps, f2),
|
|
1168
|
+
]) || changed;
|
|
1169
|
+
}
|
|
1170
|
+
// Modus Tollens con consecuente negado: de B y (A -> !B), derivar !A
|
|
1171
|
+
if (f2.kind === 'implies' &&
|
|
1172
|
+
f2.args?.[0] &&
|
|
1173
|
+
f2.args?.[1]?.kind === 'not' &&
|
|
1174
|
+
f2.args[1].args?.[0] &&
|
|
1175
|
+
formulasEqual(f1, f2.args[1].args[0])) {
|
|
1176
|
+
const conclusion = { kind: 'not', args: [f2.args[0]] };
|
|
1177
|
+
changed =
|
|
1178
|
+
addDerivedFormula(state, conclusion, 'Modus Tollens', [
|
|
1179
|
+
findStep(state.steps, f1),
|
|
1180
|
+
findStep(state.steps, f2),
|
|
1181
|
+
]) || changed;
|
|
1182
|
+
}
|
|
1183
|
+
// Conjunction Introduction: de A y B, derivar A & B
|
|
1184
|
+
// Only produce conjunctions that are relevant to the goal to avoid O(n²) explosion
|
|
1185
|
+
if (f1 !== f2) {
|
|
1186
|
+
const conj = { kind: 'and', args: [f1, f2] };
|
|
1187
|
+
if (formulasEqual(conj, goal) || isRelevantToGoal(conj, goal)) {
|
|
1188
|
+
changed =
|
|
1189
|
+
addDerivedFormula(state, conj, 'Introduccion de conjuncion', [
|
|
1190
|
+
findStep(state.steps, f1),
|
|
1191
|
+
findStep(state.steps, f2),
|
|
1192
|
+
]) || changed;
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
// Silogismo hipotético: de (A -> B) y (B -> C), derivar (A -> C)
|
|
1196
|
+
if (f1.kind === 'implies' &&
|
|
1197
|
+
f2.kind === 'implies' &&
|
|
1198
|
+
f1.args?.[0] &&
|
|
1199
|
+
f1.args?.[1] &&
|
|
1200
|
+
f2.args?.[0] &&
|
|
1201
|
+
f2.args?.[1] &&
|
|
1202
|
+
formulasEqual(f1.args[1], f2.args[0])) {
|
|
1203
|
+
const chained = { kind: 'implies', args: [f1.args[0], f2.args[1]] };
|
|
1204
|
+
changed =
|
|
1205
|
+
addDerivedFormula(state, chained, 'Silogismo hipotetico', [
|
|
1206
|
+
findStep(state.steps, f1),
|
|
1207
|
+
findStep(state.steps, f2),
|
|
1208
|
+
]) || changed;
|
|
1209
|
+
}
|
|
1210
|
+
// Silogismo disyuntivo: de (A | B) y un complemento de A, derivar B /
|
|
1211
|
+
// de un complemento de B, derivar A.
|
|
1212
|
+
// Esto cubre tanto !A como fórmulas positivas que complementan un disyunto negado
|
|
1213
|
+
// (p. ej. Q complementa a !Q).
|
|
1214
|
+
if (f1.kind === 'or' && f1.args?.[0] && f1.args?.[1]) {
|
|
1215
|
+
if (areComplementary(f1.args[0], f2)) {
|
|
1216
|
+
changed =
|
|
1217
|
+
addDerivedFormula(state, f1.args[1], 'Silogismo disyuntivo', [
|
|
1218
|
+
findStep(state.steps, f1),
|
|
1219
|
+
findStep(state.steps, f2),
|
|
1220
|
+
]) || changed;
|
|
1221
|
+
}
|
|
1222
|
+
if (areComplementary(f1.args[1], f2)) {
|
|
1223
|
+
changed =
|
|
1224
|
+
addDerivedFormula(state, f1.args[0], 'Silogismo disyuntivo', [
|
|
1225
|
+
findStep(state.steps, f1),
|
|
1226
|
+
findStep(state.steps, f2),
|
|
1227
|
+
]) || changed;
|
|
1228
|
+
}
|
|
1229
|
+
}
|
|
1230
|
+
// Introducción de bicondicional: de (A -> B) y (B -> A), derivar (A <-> B)
|
|
1231
|
+
if (f1.kind === 'implies' &&
|
|
1232
|
+
f2.kind === 'implies' &&
|
|
1233
|
+
f1.args?.[0] &&
|
|
1234
|
+
f1.args?.[1] &&
|
|
1235
|
+
f2.args?.[0] &&
|
|
1236
|
+
f2.args?.[1] &&
|
|
1237
|
+
formulasEqual(f1.args[0], f2.args[1]) &&
|
|
1238
|
+
formulasEqual(f1.args[1], f2.args[0])) {
|
|
1239
|
+
const biconditional = {
|
|
1240
|
+
kind: 'biconditional',
|
|
1241
|
+
args: [f1.args[0], f1.args[1]],
|
|
1242
|
+
};
|
|
1243
|
+
changed =
|
|
1244
|
+
addDerivedFormula(state, biconditional, 'Introduccion de bicondicional', [
|
|
1245
|
+
findStep(state.steps, f1),
|
|
1246
|
+
findStep(state.steps, f2),
|
|
1247
|
+
]) || changed;
|
|
1248
|
+
}
|
|
1249
|
+
// Dilema Constructivo: de (P->Q)&(R->S) y P|R derivar Q|S
|
|
1250
|
+
if (f1.kind === 'and' &&
|
|
1251
|
+
f1.args?.[0]?.kind === 'implies' &&
|
|
1252
|
+
f1.args?.[1]?.kind === 'implies' &&
|
|
1253
|
+
f2.kind === 'or' &&
|
|
1254
|
+
f2.args?.[0] &&
|
|
1255
|
+
f2.args?.[1] &&
|
|
1256
|
+
formulasEqual(f1.args[0].args[0], f2.args[0]) &&
|
|
1257
|
+
formulasEqual(f1.args[1].args[0], f2.args[1])) {
|
|
1258
|
+
const qs = {
|
|
1259
|
+
kind: 'or',
|
|
1260
|
+
args: [f1.args[0].args[1], f1.args[1].args[1]],
|
|
1261
|
+
};
|
|
1262
|
+
changed =
|
|
1263
|
+
addDerivedFormula(state, qs, 'Dilema Constructivo', [
|
|
1264
|
+
findStep(state.steps, f1),
|
|
1265
|
+
findStep(state.steps, f2),
|
|
1266
|
+
]) || changed;
|
|
1267
|
+
}
|
|
1268
|
+
// Dilema Destructivo: de (P->Q)&(R->S) y !Q|!S derivar !P|!R
|
|
1269
|
+
if (f1.kind === 'and' &&
|
|
1270
|
+
f1.args?.[0]?.kind === 'implies' &&
|
|
1271
|
+
f1.args?.[1]?.kind === 'implies' &&
|
|
1272
|
+
f2.kind === 'or' &&
|
|
1273
|
+
f2.args?.[0]?.kind === 'not' &&
|
|
1274
|
+
f2.args?.[1]?.kind === 'not' &&
|
|
1275
|
+
formulasEqual(f1.args[0].args[1], f2.args[0].args[0]) &&
|
|
1276
|
+
formulasEqual(f1.args[1].args[1], f2.args[1].args[0])) {
|
|
1277
|
+
const npnr = {
|
|
1278
|
+
kind: 'or',
|
|
1279
|
+
args: [
|
|
1280
|
+
{ kind: 'not', args: [f1.args[0].args[0]] },
|
|
1281
|
+
{ kind: 'not', args: [f1.args[1].args[0]] },
|
|
1282
|
+
],
|
|
1283
|
+
};
|
|
1284
|
+
changed =
|
|
1285
|
+
addDerivedFormula(state, npnr, 'Dilema Destructivo', [
|
|
1286
|
+
findStep(state.steps, f1),
|
|
1287
|
+
findStep(state.steps, f2),
|
|
1288
|
+
]) || changed;
|
|
1289
|
+
}
|
|
1290
|
+
// Dilema simple: P|Q, P->R, Q->R derivar R
|
|
1291
|
+
if (f1.kind === 'or' &&
|
|
1292
|
+
f1.args?.[0] &&
|
|
1293
|
+
f1.args?.[1] &&
|
|
1294
|
+
f2.kind === 'implies' &&
|
|
1295
|
+
f2.args?.[0] &&
|
|
1296
|
+
formulasEqual(f1.args[0], f2.args[0])) {
|
|
1297
|
+
for (let k = 0; k < currentFormulas.length; k++) {
|
|
1298
|
+
if (i < prevProcessedIndex && j < prevProcessedIndex && k < prevProcessedIndex)
|
|
1299
|
+
continue;
|
|
1300
|
+
const f3 = currentFormulas[k];
|
|
1301
|
+
if (f3.kind === 'implies' &&
|
|
1302
|
+
f3.args?.[0] &&
|
|
1303
|
+
f3.args?.[1] &&
|
|
1304
|
+
formulasEqual(f1.args[1], f3.args[0]) &&
|
|
1305
|
+
formulasEqual(f2.args[1], f3.args[1])) {
|
|
1306
|
+
changed =
|
|
1307
|
+
addDerivedFormula(state, f2.args[1], 'Dilema Simple', [
|
|
1308
|
+
findStep(state.steps, f1),
|
|
1309
|
+
findStep(state.steps, f2),
|
|
1310
|
+
findStep(state.steps, f3),
|
|
1311
|
+
]) || changed;
|
|
1312
|
+
break; // solo una vez por par f1,f2
|
|
1313
|
+
}
|
|
1314
|
+
}
|
|
1315
|
+
}
|
|
1316
|
+
// Dilema Constructivo (implicaciones separadas): P->Q, R->S, P|R ⊢ Q|S
|
|
1317
|
+
// No requiere que las implicaciones estén en conjunción
|
|
1318
|
+
if (f1.kind === 'implies' &&
|
|
1319
|
+
f1.args?.[0] &&
|
|
1320
|
+
f1.args?.[1] &&
|
|
1321
|
+
f2.kind === 'implies' &&
|
|
1322
|
+
f2.args?.[0] &&
|
|
1323
|
+
f2.args?.[1] &&
|
|
1324
|
+
!formulasEqual(f1, f2)) {
|
|
1325
|
+
// Search for a disjunction P|R in known formulas
|
|
1326
|
+
const p = f1.args[0];
|
|
1327
|
+
const q = f1.args[1];
|
|
1328
|
+
const r = f2.args[0];
|
|
1329
|
+
const s = f2.args[1];
|
|
1330
|
+
const disjHash = formulaHash({ kind: 'or', args: [p, r] });
|
|
1331
|
+
const disjHashRev = formulaHash({ kind: 'or', args: [r, p] });
|
|
1332
|
+
if (state.known.has(disjHash) || state.known.has(disjHashRev)) {
|
|
1333
|
+
const qs = { kind: 'or', args: [q, s] };
|
|
1334
|
+
const disjFormula = state.known.get(disjHash) ?? state.known.get(disjHashRev);
|
|
1335
|
+
if (!disjFormula)
|
|
1336
|
+
continue;
|
|
1337
|
+
changed =
|
|
1338
|
+
addDerivedFormula(state, qs, 'Dilema Constructivo', [
|
|
1339
|
+
findStep(state.steps, f1),
|
|
1340
|
+
findStep(state.steps, f2),
|
|
1341
|
+
findStep(state.steps, disjFormula),
|
|
1342
|
+
]) || changed;
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
// Resolución: P|Q, !P|R derivar Q|R
|
|
1346
|
+
if (f1.kind === 'or' &&
|
|
1347
|
+
f1.args?.[0] &&
|
|
1348
|
+
f1.args?.[1] &&
|
|
1349
|
+
f2.kind === 'or' &&
|
|
1350
|
+
f2.args?.[0] &&
|
|
1351
|
+
f2.args?.[1]) {
|
|
1352
|
+
if (f2.args[0].kind === 'not' &&
|
|
1353
|
+
f2.args[0].args?.[0] &&
|
|
1354
|
+
formulasEqual(f1.args[0], f2.args[0].args[0])) {
|
|
1355
|
+
const qr = { kind: 'or', args: [f1.args[1], f2.args[1]] };
|
|
1356
|
+
changed =
|
|
1357
|
+
addDerivedFormula(state, qr, 'Resolucion', [
|
|
1358
|
+
findStep(state.steps, f1),
|
|
1359
|
+
findStep(state.steps, f2),
|
|
1360
|
+
]) || changed;
|
|
1361
|
+
}
|
|
1362
|
+
}
|
|
1363
|
+
// Explosión: de A y !A, derivar la meta solicitada
|
|
1364
|
+
if (goal &&
|
|
1365
|
+
((f1.kind === 'not' && f1.args?.[0] && formulasEqual(f1.args[0], f2)) ||
|
|
1366
|
+
(f2.kind === 'not' && f2.args?.[0] && formulasEqual(f2.args[0], f1)))) {
|
|
1367
|
+
changed =
|
|
1368
|
+
addDerivedFormula(state, goal, 'Explosion', [
|
|
1369
|
+
findStep(state.steps, f1),
|
|
1370
|
+
findStep(state.steps, f2),
|
|
1371
|
+
]) || changed;
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
1374
|
+
// Eliminación de contradicción: de false (⊥), derivar cualquier meta
|
|
1375
|
+
if (f1.kind === 'false' && !formulasEqual(f1, goal)) {
|
|
1376
|
+
changed =
|
|
1377
|
+
addDerivedFormula(state, goal, 'Explosion', [findStep(state.steps, f1)]) || changed;
|
|
1378
|
+
}
|
|
1379
|
+
// Conjunction Elimination: de A & B, derivar A y B
|
|
1380
|
+
if (f1.kind === 'and' && f1.args) {
|
|
1381
|
+
for (const sub of f1.args) {
|
|
1382
|
+
changed =
|
|
1383
|
+
addDerivedFormula(state, sub, 'Eliminacion de conjuncion', [
|
|
1384
|
+
findStep(state.steps, f1),
|
|
1385
|
+
]) || changed;
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
const commutative = getCommutativeVariant(f1);
|
|
1389
|
+
if (commutative && isRelevantToGoal(commutative, goal)) {
|
|
1390
|
+
changed =
|
|
1391
|
+
addDerivedFormula(state, commutative, 'Conmutatividad', [findStep(state.steps, f1)]) ||
|
|
1392
|
+
changed;
|
|
1393
|
+
}
|
|
1394
|
+
for (const associative of getAssociativeVariants(f1)) {
|
|
1395
|
+
if (isRelevantToGoal(associative, goal)) {
|
|
1396
|
+
changed =
|
|
1397
|
+
addDerivedFormula(state, associative, 'Asociatividad', [findStep(state.steps, f1)]) ||
|
|
1398
|
+
changed;
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
if ((f1.kind === 'and' || f1.kind === 'or') &&
|
|
1402
|
+
f1.args?.[0] &&
|
|
1403
|
+
f1.args?.[1] &&
|
|
1404
|
+
formulasEqual(f1.args[0], f1.args[1])) {
|
|
1405
|
+
changed =
|
|
1406
|
+
addDerivedFormula(state, f1.args[0], 'Idempotencia', [findStep(state.steps, f1)]) ||
|
|
1407
|
+
changed;
|
|
1408
|
+
}
|
|
1409
|
+
const absorbed = getAbsorptionResult(f1);
|
|
1410
|
+
if (absorbed) {
|
|
1411
|
+
changed =
|
|
1412
|
+
addDerivedFormula(state, absorbed, 'Absorcion', [findStep(state.steps, f1)]) || changed;
|
|
1413
|
+
}
|
|
1414
|
+
// Disjunction Introduction: de A, derivar A | B
|
|
1415
|
+
// Relaxed: also allow intermediate disjunctions that are relevant to goal
|
|
1416
|
+
if (goal.kind === 'or' && goal.args?.[0] && goal.args?.[1]) {
|
|
1417
|
+
if (formulasEqual(f1, goal.args[0]) || formulasEqual(f1, goal.args[1])) {
|
|
1418
|
+
changed =
|
|
1419
|
+
addDerivedFormula(state, goal, 'Introduccion de disyuncion', [
|
|
1420
|
+
findStep(state.steps, f1),
|
|
1421
|
+
]) || changed;
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
// Also check if f1 can form a disjunction relevant to some intermediate goal
|
|
1425
|
+
if (goal.kind !== 'or') {
|
|
1426
|
+
// If the goal is e.g. (A|B) -> C, and we have A, generate A|B as intermediate
|
|
1427
|
+
const checkDisjGoals = (g) => {
|
|
1428
|
+
if (g.kind === 'or' && g.args?.[0] && g.args?.[1]) {
|
|
1429
|
+
if (formulasEqual(f1, g.args[0]) || formulasEqual(f1, g.args[1])) {
|
|
1430
|
+
const disj = { kind: 'or', args: [g.args[0], g.args[1]] };
|
|
1431
|
+
changed =
|
|
1432
|
+
addDerivedFormula(state, disj, 'Introduccion de disyuncion', [
|
|
1433
|
+
findStep(state.steps, f1),
|
|
1434
|
+
]) || changed;
|
|
1435
|
+
}
|
|
1436
|
+
}
|
|
1437
|
+
g.args?.forEach(checkDisjGoals);
|
|
1438
|
+
};
|
|
1439
|
+
checkDisjGoals(goal);
|
|
1440
|
+
}
|
|
1441
|
+
// Double Negation Elimination: de !!A, derivar A
|
|
1442
|
+
if (f1.kind === 'not' && f1.args?.[0]?.kind === 'not' && f1.args[0].args?.[0]) {
|
|
1443
|
+
const inner = f1.args[0].args[0];
|
|
1444
|
+
changed =
|
|
1445
|
+
addDerivedFormula(state, inner, 'Doble negacion', [findStep(state.steps, f1)]) || changed;
|
|
1446
|
+
}
|
|
1447
|
+
// Double Negation Introduction: de A, derivar !!A solo si es la meta
|
|
1448
|
+
const doubleNegation = { kind: 'not', args: [{ kind: 'not', args: [f1] }] };
|
|
1449
|
+
if (formulasEqual(doubleNegation, goal)) {
|
|
1450
|
+
changed =
|
|
1451
|
+
addDerivedFormula(state, doubleNegation, 'Introduccion de doble negacion', [
|
|
1452
|
+
findStep(state.steps, f1),
|
|
1453
|
+
]) || changed;
|
|
1454
|
+
}
|
|
1455
|
+
// Weakening (Debilitamiento): si la meta es A -> B y ya conocemos B,
|
|
1456
|
+
// entonces A -> B es válida (B ⊢ A -> B en lógica clásica).
|
|
1457
|
+
if (goal.kind === 'implies' &&
|
|
1458
|
+
goal.args?.[0] &&
|
|
1459
|
+
goal.args?.[1] &&
|
|
1460
|
+
formulasEqual(goal.args[1], f1)) {
|
|
1461
|
+
changed =
|
|
1462
|
+
addDerivedFormula(state, goal, 'Debilitamiento (B ⊢ A → B)', [
|
|
1463
|
+
findStep(state.steps, f1),
|
|
1464
|
+
]) || changed;
|
|
1465
|
+
}
|
|
1466
|
+
// Implicación material (→ a ∨): de A->B, derivar !A|B
|
|
1467
|
+
if (f1.kind === 'implies' && f1.args?.[0] && f1.args?.[1]) {
|
|
1468
|
+
const matImpl = {
|
|
1469
|
+
kind: 'or',
|
|
1470
|
+
args: [{ kind: 'not', args: [f1.args[0]] }, f1.args[1]],
|
|
1471
|
+
};
|
|
1472
|
+
if (isRelevantToGoal(matImpl, goal)) {
|
|
1473
|
+
changed =
|
|
1474
|
+
addDerivedFormula(state, matImpl, 'Implicacion material (→ a ∨)', [
|
|
1475
|
+
findStep(state.steps, f1),
|
|
1476
|
+
]) || changed;
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
// Implicación material inversa (∨ a →): de !A|B, derivar A->B
|
|
1480
|
+
if (f1.kind === 'or' &&
|
|
1481
|
+
f1.args?.[0]?.kind === 'not' &&
|
|
1482
|
+
f1.args[0].args?.[0] &&
|
|
1483
|
+
f1.args?.[1]) {
|
|
1484
|
+
const impl = {
|
|
1485
|
+
kind: 'implies',
|
|
1486
|
+
args: [f1.args[0].args[0], f1.args[1]],
|
|
1487
|
+
};
|
|
1488
|
+
if (isRelevantToGoal(impl, goal)) {
|
|
1489
|
+
changed =
|
|
1490
|
+
addDerivedFormula(state, impl, 'Implicacion material (∨ a →)', [
|
|
1491
|
+
findStep(state.steps, f1),
|
|
1492
|
+
]) || changed;
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
// Contraposition: de A->B, derivar !B->!A
|
|
1496
|
+
// Restringir a fórmulas con profundidad de negación baja para evitar
|
|
1497
|
+
// cadenas infinitas de contrapositivas (!!A→!!B → !!!B→!!!A → ...)
|
|
1498
|
+
if (f1.kind === 'implies' &&
|
|
1499
|
+
f1.args?.[0] &&
|
|
1500
|
+
f1.args?.[1] &&
|
|
1501
|
+
maxNegationDepth(f1) < 2 &&
|
|
1502
|
+
state.known.size < MAX_KNOWN) {
|
|
1503
|
+
const contra = {
|
|
1504
|
+
kind: 'implies',
|
|
1505
|
+
args: [
|
|
1506
|
+
{ kind: 'not', args: [f1.args[1]] },
|
|
1507
|
+
{ kind: 'not', args: [f1.args[0]] },
|
|
1508
|
+
],
|
|
1509
|
+
};
|
|
1510
|
+
changed =
|
|
1511
|
+
addDerivedFormula(state, contra, 'Contraposicion', [findStep(state.steps, f1)]) ||
|
|
1512
|
+
changed;
|
|
1513
|
+
}
|
|
1514
|
+
// Biconditional Elimination: de A<->B, derivar A->B y B->A
|
|
1515
|
+
if (f1.kind === 'biconditional' && f1.args?.[0] && f1.args?.[1]) {
|
|
1516
|
+
const ab = { kind: 'implies', args: [f1.args[0], f1.args[1]] };
|
|
1517
|
+
const ba = { kind: 'implies', args: [f1.args[1], f1.args[0]] };
|
|
1518
|
+
for (const impl of [ab, ba]) {
|
|
1519
|
+
changed =
|
|
1520
|
+
addDerivedFormula(state, impl, 'Eliminacion de bicondicional', [
|
|
1521
|
+
findStep(state.steps, f1),
|
|
1522
|
+
]) || changed;
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
// Absorción: P->Q ⊢ P->(P&Q) — SOLO si resultado es relevante al goal
|
|
1526
|
+
if (f1.kind === 'implies' && f1.args?.[0] && f1.args?.[1]) {
|
|
1527
|
+
const abs = {
|
|
1528
|
+
kind: 'implies',
|
|
1529
|
+
args: [f1.args[0], { kind: 'and', args: [f1.args[0], f1.args[1]] }],
|
|
1530
|
+
};
|
|
1531
|
+
if (isRelevantToGoal(abs, goal)) {
|
|
1532
|
+
changed =
|
|
1533
|
+
addDerivedFormula(state, abs, 'Absorcion', [findStep(state.steps, f1)]) || changed;
|
|
1534
|
+
}
|
|
1535
|
+
}
|
|
1536
|
+
// Exportación: (P&Q)->R ⊢ P->(Q->R) — SOLO si resultado es relevante al goal
|
|
1537
|
+
if (f1.kind === 'implies' &&
|
|
1538
|
+
f1.args?.[0]?.kind === 'and' &&
|
|
1539
|
+
f1.args[0].args?.[0] &&
|
|
1540
|
+
f1.args[0].args?.[1] &&
|
|
1541
|
+
f1.args?.[1]) {
|
|
1542
|
+
const exp = {
|
|
1543
|
+
kind: 'implies',
|
|
1544
|
+
args: [f1.args[0].args[0], { kind: 'implies', args: [f1.args[0].args[1], f1.args[1]] }],
|
|
1545
|
+
};
|
|
1546
|
+
if (isRelevantToGoal(exp, goal)) {
|
|
1547
|
+
changed =
|
|
1548
|
+
addDerivedFormula(state, exp, 'Exportacion', [findStep(state.steps, f1)]) || changed;
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
// Importación: P->(Q->R) ⊢ (P&Q)->R — SOLO si resultado es relevante al goal
|
|
1552
|
+
if (f1.kind === 'implies' &&
|
|
1553
|
+
f1.args?.[0] &&
|
|
1554
|
+
f1.args?.[1]?.kind === 'implies' &&
|
|
1555
|
+
f1.args[1].args?.[0] &&
|
|
1556
|
+
f1.args[1].args?.[1]) {
|
|
1557
|
+
const imp = {
|
|
1558
|
+
kind: 'implies',
|
|
1559
|
+
args: [{ kind: 'and', args: [f1.args[0], f1.args[1].args[0]] }, f1.args[1].args[1]],
|
|
1560
|
+
};
|
|
1561
|
+
if (isRelevantToGoal(imp, goal)) {
|
|
1562
|
+
changed =
|
|
1563
|
+
addDerivedFormula(state, imp, 'Importacion', [findStep(state.steps, f1)]) || changed;
|
|
1564
|
+
}
|
|
1565
|
+
}
|
|
1566
|
+
// De Morgan 1: !(P&Q) ⊢ !P|!Q
|
|
1567
|
+
if (f1.kind === 'not' &&
|
|
1568
|
+
f1.args?.[0]?.kind === 'and' &&
|
|
1569
|
+
f1.args[0].args?.[0] &&
|
|
1570
|
+
f1.args[0].args?.[1]) {
|
|
1571
|
+
const dm1 = {
|
|
1572
|
+
kind: 'or',
|
|
1573
|
+
args: [
|
|
1574
|
+
{ kind: 'not', args: [f1.args[0].args[0]] },
|
|
1575
|
+
{ kind: 'not', args: [f1.args[0].args[1]] },
|
|
1576
|
+
],
|
|
1577
|
+
};
|
|
1578
|
+
changed =
|
|
1579
|
+
addDerivedFormula(state, dm1, 'De Morgan (AND)', [findStep(state.steps, f1)]) || changed;
|
|
1580
|
+
}
|
|
1581
|
+
// De Morgan 2: !(P|Q) ⊢ !P&!Q
|
|
1582
|
+
if (f1.kind === 'not' &&
|
|
1583
|
+
f1.args?.[0]?.kind === 'or' &&
|
|
1584
|
+
f1.args[0].args?.[0] &&
|
|
1585
|
+
f1.args[0].args?.[1]) {
|
|
1586
|
+
const dm2 = {
|
|
1587
|
+
kind: 'and',
|
|
1588
|
+
args: [
|
|
1589
|
+
{ kind: 'not', args: [f1.args[0].args[0]] },
|
|
1590
|
+
{ kind: 'not', args: [f1.args[0].args[1]] },
|
|
1591
|
+
],
|
|
1592
|
+
};
|
|
1593
|
+
changed =
|
|
1594
|
+
addDerivedFormula(state, dm2, 'De Morgan (OR)', [findStep(state.steps, f1)]) || changed;
|
|
1595
|
+
}
|
|
1596
|
+
// Distribución 1: P & (Q | R) ⊢ (P & Q) | (P & R)
|
|
1597
|
+
if (f1.kind === 'and' &&
|
|
1598
|
+
f1.args?.[0] &&
|
|
1599
|
+
f1.args?.[1]?.kind === 'or' &&
|
|
1600
|
+
f1.args[1].args?.[0] &&
|
|
1601
|
+
f1.args[1].args?.[1]) {
|
|
1602
|
+
const dist = {
|
|
1603
|
+
kind: 'or',
|
|
1604
|
+
args: [
|
|
1605
|
+
{ kind: 'and', args: [f1.args[0], f1.args[1].args[0]] },
|
|
1606
|
+
{ kind: 'and', args: [f1.args[0], f1.args[1].args[1]] },
|
|
1607
|
+
],
|
|
1608
|
+
};
|
|
1609
|
+
changed =
|
|
1610
|
+
addDerivedFormula(state, dist, 'Distribucion (AND sobre OR)', [
|
|
1611
|
+
findStep(state.steps, f1),
|
|
1612
|
+
]) || changed;
|
|
1613
|
+
}
|
|
1614
|
+
// Distribución 1b: (Q | R) & P ⊢ (Q & P) | (R & P)
|
|
1615
|
+
if (f1.kind === 'and' &&
|
|
1616
|
+
f1.args?.[0]?.kind === 'or' &&
|
|
1617
|
+
f1.args[0].args?.[0] &&
|
|
1618
|
+
f1.args[0].args?.[1] &&
|
|
1619
|
+
f1.args?.[1]) {
|
|
1620
|
+
const dist = {
|
|
1621
|
+
kind: 'or',
|
|
1622
|
+
args: [
|
|
1623
|
+
{ kind: 'and', args: [f1.args[0].args[0], f1.args[1]] },
|
|
1624
|
+
{ kind: 'and', args: [f1.args[0].args[1], f1.args[1]] },
|
|
1625
|
+
],
|
|
1626
|
+
};
|
|
1627
|
+
changed =
|
|
1628
|
+
addDerivedFormula(state, dist, 'Distribucion (AND sobre OR)', [
|
|
1629
|
+
findStep(state.steps, f1),
|
|
1630
|
+
]) || changed;
|
|
1631
|
+
}
|
|
1632
|
+
// Distribución 2: P | (Q & R) ⊢ (P | Q) & (P | R)
|
|
1633
|
+
if (f1.kind === 'or' &&
|
|
1634
|
+
f1.args?.[0] &&
|
|
1635
|
+
f1.args?.[1]?.kind === 'and' &&
|
|
1636
|
+
f1.args[1].args?.[0] &&
|
|
1637
|
+
f1.args[1].args?.[1]) {
|
|
1638
|
+
const dist = {
|
|
1639
|
+
kind: 'and',
|
|
1640
|
+
args: [
|
|
1641
|
+
{ kind: 'or', args: [f1.args[0], f1.args[1].args[0]] },
|
|
1642
|
+
{ kind: 'or', args: [f1.args[0], f1.args[1].args[1]] },
|
|
1643
|
+
],
|
|
1644
|
+
};
|
|
1645
|
+
if (isRelevantToGoal(dist, goal)) {
|
|
1646
|
+
changed =
|
|
1647
|
+
addDerivedFormula(state, dist, 'Distribucion (OR sobre AND)', [
|
|
1648
|
+
findStep(state.steps, f1),
|
|
1649
|
+
]) || changed;
|
|
1650
|
+
}
|
|
1651
|
+
}
|
|
1652
|
+
// Distribución 2b: (Q & R) | P ⊢ (Q | P) & (R | P)
|
|
1653
|
+
if (f1.kind === 'or' &&
|
|
1654
|
+
f1.args?.[0]?.kind === 'and' &&
|
|
1655
|
+
f1.args[0].args?.[0] &&
|
|
1656
|
+
f1.args[0].args?.[1] &&
|
|
1657
|
+
f1.args?.[1]) {
|
|
1658
|
+
const dist = {
|
|
1659
|
+
kind: 'and',
|
|
1660
|
+
args: [
|
|
1661
|
+
{ kind: 'or', args: [f1.args[0].args[0], f1.args[1]] },
|
|
1662
|
+
{ kind: 'or', args: [f1.args[0].args[1], f1.args[1]] },
|
|
1663
|
+
],
|
|
1664
|
+
};
|
|
1665
|
+
if (isRelevantToGoal(dist, goal)) {
|
|
1666
|
+
changed =
|
|
1667
|
+
addDerivedFormula(state, dist, 'Distribucion (OR sobre AND)', [
|
|
1668
|
+
findStep(state.steps, f1),
|
|
1669
|
+
]) || changed;
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
// RAA (Reductio ad Absurdum) #29:
|
|
1673
|
+
// Si tenemos P→Q y P→¬Q (o ¬Q→P y Q→P), derivar ¬P
|
|
1674
|
+
if (f1.kind === 'implies' && f1.args?.[0] && f1.args?.[1]) {
|
|
1675
|
+
for (let j = 0; j < currentFormulas.length; j++) {
|
|
1676
|
+
if (i < prevProcessedIndex && j < prevProcessedIndex)
|
|
1677
|
+
continue;
|
|
1678
|
+
const f2 = currentFormulas[j];
|
|
1679
|
+
if (f2.kind === 'implies' &&
|
|
1680
|
+
f2.args?.[0] &&
|
|
1681
|
+
f2.args?.[1] &&
|
|
1682
|
+
formulasEqual(f1.args[0], f2.args[0])) {
|
|
1683
|
+
// P→Q and P→¬Q => ¬P
|
|
1684
|
+
if (f2.args[1].kind === 'not' &&
|
|
1685
|
+
f2.args[1].args?.[0] &&
|
|
1686
|
+
formulasEqual(f1.args[1], f2.args[1].args[0])) {
|
|
1687
|
+
const negP = { kind: 'not', args: [f1.args[0]] };
|
|
1688
|
+
changed =
|
|
1689
|
+
addDerivedFormula(state, negP, 'Reduccion al Absurdo (RAA)', [
|
|
1690
|
+
findStep(state.steps, f1),
|
|
1691
|
+
findStep(state.steps, f2),
|
|
1692
|
+
]) || changed;
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
}
|
|
1697
|
+
// Prueba Condicional (#30):
|
|
1698
|
+
// Si el goal es A→B y tenemos A entre las premisas/conocidas,
|
|
1699
|
+
// y derivamos B, entonces obtenemos A→B
|
|
1700
|
+
if (goal.kind === 'implies' &&
|
|
1701
|
+
goal.args?.[0] &&
|
|
1702
|
+
goal.args?.[1] &&
|
|
1703
|
+
formulasEqual(f1, goal.args[1])) {
|
|
1704
|
+
// We have B derived, and goal is A→B
|
|
1705
|
+
if (state.known.has(formulaHash(goal.args[0]))) {
|
|
1706
|
+
// We also have A, so A→B via Prueba Condicional
|
|
1707
|
+
changed =
|
|
1708
|
+
addDerivedFormula(state, goal, 'Prueba Condicional', [
|
|
1709
|
+
findStep(state.steps, goal.args[0]),
|
|
1710
|
+
findStep(state.steps, f1),
|
|
1711
|
+
]) || changed;
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
if (state.known.has(formulaHash(goal))) {
|
|
1717
|
+
// Filtrar solo pasos relevantes para la derivación
|
|
1718
|
+
const relevantSteps = traceBack(state.steps, goal);
|
|
1719
|
+
return buildProof(goal, relevantSteps, premiseNames, theory, 'natural_deduction', undefined, buildDerivationMetadata(state, relevantSteps));
|
|
1720
|
+
}
|
|
1721
|
+
// --- Sub-derivaciones recursivas (antes del fallback semántico) ---
|
|
1722
|
+
const MAX_SUB_DEPTH = 3;
|
|
1723
|
+
// Prueba Condicional real (→-Introducción / Deduction Theorem):
|
|
1724
|
+
// Para derivar A→B, asumimos A como premisa temporal y derivamos B.
|
|
1725
|
+
if (depth < MAX_SUB_DEPTH && goal.kind === 'implies' && goal.args?.[0] && goal.args?.[1]) {
|
|
1726
|
+
const assumption = goal.args[0];
|
|
1727
|
+
const subGoal = goal.args[1];
|
|
1728
|
+
// Create a temporary theory with the assumption added
|
|
1729
|
+
const tempTheory = {
|
|
1730
|
+
profile: theory.profile,
|
|
1731
|
+
axioms: new Map(theory.axioms),
|
|
1732
|
+
theorems: new Map(theory.theorems),
|
|
1733
|
+
claims: theory.claims,
|
|
1734
|
+
judgments: theory.judgments,
|
|
1735
|
+
};
|
|
1736
|
+
const assumptionName = `__assumption_${depth}_${formulaHash(assumption)}`;
|
|
1737
|
+
tempTheory.axioms.set(assumptionName, assumption);
|
|
1738
|
+
const subPremises = [...premiseNames, assumptionName];
|
|
1739
|
+
const subProof = tryDerive(subGoal, tempTheory, subPremises, depth + 1);
|
|
1740
|
+
if (subProof && subProof.status === 'complete') {
|
|
1741
|
+
// Check the sub-proof doesn't rely solely on semantic fallback
|
|
1742
|
+
const isSyntactic = subProof.steps.every((s) => s.source !== 'semantic');
|
|
1743
|
+
if (isSyntactic) {
|
|
1744
|
+
// Build the main proof: premises + sub-derivation steps + conditional proof conclusion
|
|
1745
|
+
const mainSteps = [];
|
|
1746
|
+
let stepNum = 0;
|
|
1747
|
+
// Copy premise steps from current state
|
|
1748
|
+
for (const s of state.steps) {
|
|
1749
|
+
if (s.source === 'premise') {
|
|
1750
|
+
stepNum++;
|
|
1751
|
+
mainSteps.push({ ...s, stepNumber: stepNum, premises: [] });
|
|
1752
|
+
}
|
|
1753
|
+
}
|
|
1754
|
+
// Add assumption step
|
|
1755
|
+
stepNum++;
|
|
1756
|
+
const assumptionStepNum = stepNum;
|
|
1757
|
+
mainSteps.push({
|
|
1758
|
+
stepNumber: stepNum,
|
|
1759
|
+
formula: assumption,
|
|
1760
|
+
justification: 'Supuesto (para prueba condicional)',
|
|
1761
|
+
premises: [],
|
|
1762
|
+
source: 'assumption',
|
|
1763
|
+
});
|
|
1764
|
+
// Add sub-derivation steps (renumber, adjusting premise references)
|
|
1765
|
+
const subStepMap = new Map();
|
|
1766
|
+
for (const s of subProof.steps) {
|
|
1767
|
+
if (s.source === 'premise' && formulasEqual(s.formula, assumption)) {
|
|
1768
|
+
subStepMap.set(s.stepNumber, assumptionStepNum);
|
|
1769
|
+
continue;
|
|
1770
|
+
}
|
|
1771
|
+
if (s.source === 'premise') {
|
|
1772
|
+
// Find existing premise step in main
|
|
1773
|
+
const existing = mainSteps.find((ms) => ms.source === 'premise' && formulasEqual(ms.formula, s.formula));
|
|
1774
|
+
if (existing) {
|
|
1775
|
+
subStepMap.set(s.stepNumber, existing.stepNumber);
|
|
1776
|
+
continue;
|
|
1777
|
+
}
|
|
1778
|
+
}
|
|
1779
|
+
stepNum++;
|
|
1780
|
+
subStepMap.set(s.stepNumber, stepNum);
|
|
1781
|
+
mainSteps.push({
|
|
1782
|
+
stepNumber: stepNum,
|
|
1783
|
+
formula: s.formula,
|
|
1784
|
+
justification: s.justification,
|
|
1785
|
+
premises: s.premises.map((p) => subStepMap.get(p) || p),
|
|
1786
|
+
source: s.source,
|
|
1787
|
+
});
|
|
1788
|
+
}
|
|
1789
|
+
// Add final conditional proof step
|
|
1790
|
+
stepNum++;
|
|
1791
|
+
const subGoalStepNum = subStepMap.get(subProof.steps[subProof.steps.length - 1]?.stepNumber ?? 0) ?? stepNum - 1;
|
|
1792
|
+
mainSteps.push({
|
|
1793
|
+
stepNumber: stepNum,
|
|
1794
|
+
formula: goal,
|
|
1795
|
+
justification: 'Prueba Condicional (Teorema de Deduccion)',
|
|
1796
|
+
premises: [assumptionStepNum, subGoalStepNum],
|
|
1797
|
+
subproofs: [subProof],
|
|
1798
|
+
source: 'rule',
|
|
1799
|
+
});
|
|
1800
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [subProof], buildCompositeDerivationMetadata(state, mainSteps, [subProof]));
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
// Prueba por Casos (∨-Eliminación / Disjunction Elimination):
|
|
1805
|
+
// Si tenemos A|B y queremos derivar C, asumimos A→C y B→C por separado.
|
|
1806
|
+
if (depth < MAX_SUB_DEPTH) {
|
|
1807
|
+
const disjunctions = state.formulas.filter((f) => f.kind === 'or' && f.args?.[0] && f.args?.[1]);
|
|
1808
|
+
for (const disj of disjunctions) {
|
|
1809
|
+
const left = disj.args?.[0];
|
|
1810
|
+
const right = disj.args?.[1];
|
|
1811
|
+
if (!left || !right)
|
|
1812
|
+
continue;
|
|
1813
|
+
// Try to derive goal assuming left
|
|
1814
|
+
const tempTheoryL = {
|
|
1815
|
+
profile: theory.profile,
|
|
1816
|
+
axioms: new Map(theory.axioms),
|
|
1817
|
+
theorems: new Map(theory.theorems),
|
|
1818
|
+
claims: theory.claims,
|
|
1819
|
+
judgments: theory.judgments,
|
|
1820
|
+
};
|
|
1821
|
+
const leftName = `__case_left_${depth}_${formulaHash(left)}`;
|
|
1822
|
+
tempTheoryL.axioms.set(leftName, left);
|
|
1823
|
+
const subPremisesL = [...premiseNames, leftName];
|
|
1824
|
+
const subProofL = tryDerive(goal, tempTheoryL, subPremisesL, depth + 1);
|
|
1825
|
+
if (!subProofL || subProofL.status !== 'complete')
|
|
1826
|
+
continue;
|
|
1827
|
+
const isSyntacticL = subProofL.steps.every((s) => s.source !== 'semantic');
|
|
1828
|
+
if (!isSyntacticL)
|
|
1829
|
+
continue;
|
|
1830
|
+
// Try to derive goal assuming right
|
|
1831
|
+
const tempTheoryR = {
|
|
1832
|
+
profile: theory.profile,
|
|
1833
|
+
axioms: new Map(theory.axioms),
|
|
1834
|
+
theorems: new Map(theory.theorems),
|
|
1835
|
+
claims: theory.claims,
|
|
1836
|
+
judgments: theory.judgments,
|
|
1837
|
+
};
|
|
1838
|
+
const rightName = `__case_right_${depth}_${formulaHash(right)}`;
|
|
1839
|
+
tempTheoryR.axioms.set(rightName, right);
|
|
1840
|
+
const subPremisesR = [...premiseNames, rightName];
|
|
1841
|
+
const subProofR = tryDerive(goal, tempTheoryR, subPremisesR, depth + 1);
|
|
1842
|
+
if (!subProofR || subProofR.status !== 'complete')
|
|
1843
|
+
continue;
|
|
1844
|
+
const isSyntacticR = subProofR.steps.every((s) => s.source !== 'semantic');
|
|
1845
|
+
if (!isSyntacticR)
|
|
1846
|
+
continue;
|
|
1847
|
+
// Both cases succeed — build proof by cases
|
|
1848
|
+
const mainSteps = [];
|
|
1849
|
+
let stepNum = 0;
|
|
1850
|
+
// Copy premise steps
|
|
1851
|
+
for (const s of state.steps) {
|
|
1852
|
+
if (s.source === 'premise') {
|
|
1853
|
+
stepNum++;
|
|
1854
|
+
mainSteps.push({ ...s, stepNumber: stepNum, premises: [] });
|
|
1855
|
+
}
|
|
1856
|
+
}
|
|
1857
|
+
const disjStepNum = mainSteps.find((ms) => formulasEqual(ms.formula, disj))?.stepNumber ?? 0;
|
|
1858
|
+
// Left case sub-derivation
|
|
1859
|
+
stepNum++;
|
|
1860
|
+
const leftAssumptionStep = stepNum;
|
|
1861
|
+
mainSteps.push({
|
|
1862
|
+
stepNumber: stepNum,
|
|
1863
|
+
formula: left,
|
|
1864
|
+
justification: 'Supuesto (caso izquierdo)',
|
|
1865
|
+
premises: [],
|
|
1866
|
+
source: 'assumption',
|
|
1867
|
+
});
|
|
1868
|
+
const leftStepMap = new Map();
|
|
1869
|
+
for (const s of subProofL.steps) {
|
|
1870
|
+
if (s.source === 'premise' && formulasEqual(s.formula, left)) {
|
|
1871
|
+
leftStepMap.set(s.stepNumber, leftAssumptionStep);
|
|
1872
|
+
continue;
|
|
1873
|
+
}
|
|
1874
|
+
if (s.source === 'premise') {
|
|
1875
|
+
const existing = mainSteps.find((ms) => ms.source === 'premise' && formulasEqual(ms.formula, s.formula));
|
|
1876
|
+
if (existing) {
|
|
1877
|
+
leftStepMap.set(s.stepNumber, existing.stepNumber);
|
|
1878
|
+
continue;
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
stepNum++;
|
|
1882
|
+
leftStepMap.set(s.stepNumber, stepNum);
|
|
1883
|
+
mainSteps.push({
|
|
1884
|
+
stepNumber: stepNum,
|
|
1885
|
+
formula: s.formula,
|
|
1886
|
+
justification: s.justification,
|
|
1887
|
+
premises: s.premises.map((p) => leftStepMap.get(p) || p),
|
|
1888
|
+
source: s.source,
|
|
1889
|
+
});
|
|
1890
|
+
}
|
|
1891
|
+
const leftGoalStep = leftStepMap.get(subProofL.steps[subProofL.steps.length - 1]?.stepNumber ?? 0) ?? stepNum;
|
|
1892
|
+
// Right case sub-derivation
|
|
1893
|
+
stepNum++;
|
|
1894
|
+
const rightAssumptionStep = stepNum;
|
|
1895
|
+
mainSteps.push({
|
|
1896
|
+
stepNumber: stepNum,
|
|
1897
|
+
formula: right,
|
|
1898
|
+
justification: 'Supuesto (caso derecho)',
|
|
1899
|
+
premises: [],
|
|
1900
|
+
source: 'assumption',
|
|
1901
|
+
});
|
|
1902
|
+
const rightStepMap = new Map();
|
|
1903
|
+
for (const s of subProofR.steps) {
|
|
1904
|
+
if (s.source === 'premise' && formulasEqual(s.formula, right)) {
|
|
1905
|
+
rightStepMap.set(s.stepNumber, rightAssumptionStep);
|
|
1906
|
+
continue;
|
|
1907
|
+
}
|
|
1908
|
+
if (s.source === 'premise') {
|
|
1909
|
+
const existing = mainSteps.find((ms) => ms.source === 'premise' && formulasEqual(ms.formula, s.formula));
|
|
1910
|
+
if (existing) {
|
|
1911
|
+
rightStepMap.set(s.stepNumber, existing.stepNumber);
|
|
1912
|
+
continue;
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
stepNum++;
|
|
1916
|
+
rightStepMap.set(s.stepNumber, stepNum);
|
|
1917
|
+
mainSteps.push({
|
|
1918
|
+
stepNumber: stepNum,
|
|
1919
|
+
formula: s.formula,
|
|
1920
|
+
justification: s.justification,
|
|
1921
|
+
premises: s.premises.map((p) => rightStepMap.get(p) || p),
|
|
1922
|
+
source: s.source,
|
|
1923
|
+
});
|
|
1924
|
+
}
|
|
1925
|
+
const rightGoalStep = rightStepMap.get(subProofR.steps[subProofR.steps.length - 1]?.stepNumber ?? 0) ?? stepNum;
|
|
1926
|
+
// Final disjunction elimination step
|
|
1927
|
+
stepNum++;
|
|
1928
|
+
mainSteps.push({
|
|
1929
|
+
stepNumber: stepNum,
|
|
1930
|
+
formula: goal,
|
|
1931
|
+
justification: 'Eliminacion de disyuncion (prueba por casos)',
|
|
1932
|
+
premises: [disjStepNum, leftGoalStep, rightGoalStep],
|
|
1933
|
+
subproofs: [subProofL, subProofR],
|
|
1934
|
+
source: 'rule',
|
|
1935
|
+
});
|
|
1936
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [subProofL, subProofR], buildCompositeDerivationMetadata(state, mainSteps, [subProofL, subProofR]));
|
|
1937
|
+
}
|
|
1938
|
+
}
|
|
1939
|
+
// Backchaining dirigido por meta: si tenemos A → objetivo,
|
|
1940
|
+
// intentamos derivar A para cerrar con Modus Ponens sin esperar a que aparezca espontáneamente.
|
|
1941
|
+
if (depth < MAX_SUB_DEPTH) {
|
|
1942
|
+
const candidateImplications = state.formulas.filter((formula) => formula.kind === 'implies' &&
|
|
1943
|
+
!!formula.args?.[0] &&
|
|
1944
|
+
!!formula.args?.[1] &&
|
|
1945
|
+
formulasEqual(formula.args[1], goal));
|
|
1946
|
+
for (const implication of candidateImplications) {
|
|
1947
|
+
const antecedent = implication.args?.[0];
|
|
1948
|
+
if (!antecedent || formulasEqual(antecedent, goal))
|
|
1949
|
+
continue;
|
|
1950
|
+
const antecedentProof = tryDerive(antecedent, theory, premiseNames, depth + 1);
|
|
1951
|
+
if (!antecedentProof || antecedentProof.status !== 'complete')
|
|
1952
|
+
continue;
|
|
1953
|
+
const antecedentIsSyntactic = antecedentProof.steps.every((step) => step.source !== 'semantic');
|
|
1954
|
+
if (!antecedentIsSyntactic)
|
|
1955
|
+
continue;
|
|
1956
|
+
const implicationProof = buildKnownDerivationProof(state, implication, premiseNames, theory);
|
|
1957
|
+
const mainSteps = buildMergedGoalProof(state.steps, [implicationProof, antecedentProof], goal, 'Modus Ponens');
|
|
1958
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [implicationProof, antecedentProof], buildCompositeDerivationMetadata(state, mainSteps, [implicationProof, antecedentProof]));
|
|
1959
|
+
}
|
|
1960
|
+
}
|
|
1961
|
+
// Backchaining dirigido por meta para Modus Tollens:
|
|
1962
|
+
// Si la meta es ¬A y conocemos A → B, intentamos derivar ¬B.
|
|
1963
|
+
// Si la meta es ¬A y conocemos A → ¬B, intentamos derivar B.
|
|
1964
|
+
if (depth < MAX_SUB_DEPTH && goal.kind === 'not' && goal.args?.[0]) {
|
|
1965
|
+
const negatedAntecedent = goal.args[0];
|
|
1966
|
+
const candidateImplications = state.formulas.filter((formula) => formula.kind === 'implies' &&
|
|
1967
|
+
!!formula.args?.[0] &&
|
|
1968
|
+
!!formula.args?.[1] &&
|
|
1969
|
+
formulasEqual(formula.args[0], negatedAntecedent));
|
|
1970
|
+
for (const implication of candidateImplications) {
|
|
1971
|
+
const consequent = implication.args?.[1];
|
|
1972
|
+
if (!consequent)
|
|
1973
|
+
continue;
|
|
1974
|
+
const counterGoal = consequent.kind === 'not' && consequent.args?.[0]
|
|
1975
|
+
? consequent.args[0]
|
|
1976
|
+
: { kind: 'not', args: [consequent] };
|
|
1977
|
+
if (formulasEqual(counterGoal, goal) || formulasEqual(counterGoal, negatedAntecedent)) {
|
|
1978
|
+
continue;
|
|
1979
|
+
}
|
|
1980
|
+
const counterProof = tryDerive(counterGoal, theory, premiseNames, depth + 1);
|
|
1981
|
+
if (!counterProof || counterProof.status !== 'complete')
|
|
1982
|
+
continue;
|
|
1983
|
+
const counterIsSyntactic = counterProof.steps.every((step) => step.source !== 'semantic');
|
|
1984
|
+
if (!counterIsSyntactic)
|
|
1985
|
+
continue;
|
|
1986
|
+
const implicationProof = buildKnownDerivationProof(state, implication, premiseNames, theory);
|
|
1987
|
+
const mainSteps = buildMergedGoalProof(state.steps, [implicationProof, counterProof], goal, 'Modus Tollens');
|
|
1988
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [implicationProof, counterProof], buildCompositeDerivationMetadata(state, mainSteps, [implicationProof, counterProof]));
|
|
1989
|
+
}
|
|
1990
|
+
}
|
|
1991
|
+
// Meta conjuntiva (∧-Introducción dirigida por meta): derivar ambos componentes por separado.
|
|
1992
|
+
if (depth < MAX_SUB_DEPTH && goal.kind === 'and' && goal.args?.[0] && goal.args?.[1]) {
|
|
1993
|
+
const leftGoal = goal.args[0];
|
|
1994
|
+
const rightGoal = goal.args[1];
|
|
1995
|
+
const leftProof = tryDerive(leftGoal, theory, premiseNames, depth + 1);
|
|
1996
|
+
const rightProof = tryDerive(rightGoal, theory, premiseNames, depth + 1);
|
|
1997
|
+
if (leftProof &&
|
|
1998
|
+
rightProof &&
|
|
1999
|
+
leftProof.status === 'complete' &&
|
|
2000
|
+
rightProof.status === 'complete') {
|
|
2001
|
+
const leftSyntactic = leftProof.steps.every((s) => s.source !== 'semantic');
|
|
2002
|
+
const rightSyntactic = rightProof.steps.every((s) => s.source !== 'semantic');
|
|
2003
|
+
if (leftSyntactic && rightSyntactic) {
|
|
2004
|
+
const mainSteps = buildMergedGoalProof(state.steps, [leftProof, rightProof], goal, 'Introduccion de conjuncion');
|
|
2005
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [leftProof, rightProof], buildCompositeDerivationMetadata(state, mainSteps, [leftProof, rightProof]));
|
|
2006
|
+
}
|
|
2007
|
+
}
|
|
2008
|
+
}
|
|
2009
|
+
// Meta bicondicional (↔-Introducción dirigida por meta): demostrar ambos sentidos.
|
|
2010
|
+
if (depth < MAX_SUB_DEPTH && goal.kind === 'biconditional' && goal.args?.[0] && goal.args?.[1]) {
|
|
2011
|
+
const leftToRight = { kind: 'implies', args: [goal.args[0], goal.args[1]] };
|
|
2012
|
+
const rightToLeft = { kind: 'implies', args: [goal.args[1], goal.args[0]] };
|
|
2013
|
+
const leftProof = tryDerive(leftToRight, theory, premiseNames, depth + 1);
|
|
2014
|
+
const rightProof = tryDerive(rightToLeft, theory, premiseNames, depth + 1);
|
|
2015
|
+
if (leftProof &&
|
|
2016
|
+
rightProof &&
|
|
2017
|
+
leftProof.status === 'complete' &&
|
|
2018
|
+
rightProof.status === 'complete') {
|
|
2019
|
+
const leftSyntactic = leftProof.steps.every((s) => s.source !== 'semantic');
|
|
2020
|
+
const rightSyntactic = rightProof.steps.every((s) => s.source !== 'semantic');
|
|
2021
|
+
if (leftSyntactic && rightSyntactic) {
|
|
2022
|
+
const mainSteps = buildMergedGoalProof(state.steps, [leftProof, rightProof], goal, 'Introduccion de bicondicional');
|
|
2023
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [leftProof, rightProof], buildCompositeDerivationMetadata(state, mainSteps, [leftProof, rightProof]));
|
|
2024
|
+
}
|
|
2025
|
+
}
|
|
2026
|
+
}
|
|
2027
|
+
// Introducción de negación (¬-Introducción): para derivar ¬A,
|
|
2028
|
+
// asumimos A y derivamos contradicción explícita (false / ⊥).
|
|
2029
|
+
if (depth < MAX_SUB_DEPTH && goal.kind === 'not' && goal.args?.[0]) {
|
|
2030
|
+
const assumption = goal.args[0];
|
|
2031
|
+
const contradiction = { kind: 'false' };
|
|
2032
|
+
const tempTheory = {
|
|
2033
|
+
profile: theory.profile,
|
|
2034
|
+
axioms: new Map(theory.axioms),
|
|
2035
|
+
theorems: new Map(theory.theorems),
|
|
2036
|
+
claims: theory.claims,
|
|
2037
|
+
judgments: theory.judgments,
|
|
2038
|
+
};
|
|
2039
|
+
const assumptionName = `__neg_assumption_${depth}_${formulaHash(assumption)}`;
|
|
2040
|
+
tempTheory.axioms.set(assumptionName, assumption);
|
|
2041
|
+
const subPremises = [...premiseNames, assumptionName];
|
|
2042
|
+
const subProof = tryDerive(contradiction, tempTheory, subPremises, depth + 1);
|
|
2043
|
+
if (subProof && subProof.status === 'complete') {
|
|
2044
|
+
const isSyntactic = subProof.steps.every((s) => s.source !== 'semantic');
|
|
2045
|
+
if (isSyntactic) {
|
|
2046
|
+
const mainSteps = buildSingleAssumptionProof(state.steps, assumption, 'Supuesto (para negacion)', subProof, goal, 'Introduccion de negacion');
|
|
2047
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [subProof], buildCompositeDerivationMetadata(state, mainSteps, [subProof]));
|
|
2048
|
+
}
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
// RAA genérica: para derivar A en lógica clásica,
|
|
2052
|
+
// asumimos ¬A y buscamos contradicción explícita.
|
|
2053
|
+
if (depth < MAX_SUB_DEPTH && goal.kind !== 'not' && goal.kind !== 'false') {
|
|
2054
|
+
const assumption = { kind: 'not', args: [goal] };
|
|
2055
|
+
const contradiction = { kind: 'false' };
|
|
2056
|
+
const tempTheory = {
|
|
2057
|
+
profile: theory.profile,
|
|
2058
|
+
axioms: new Map(theory.axioms),
|
|
2059
|
+
theorems: new Map(theory.theorems),
|
|
2060
|
+
claims: theory.claims,
|
|
2061
|
+
judgments: theory.judgments,
|
|
2062
|
+
};
|
|
2063
|
+
const assumptionName = `__raa_assumption_${depth}_${formulaHash(assumption)}`;
|
|
2064
|
+
tempTheory.axioms.set(assumptionName, assumption);
|
|
2065
|
+
const subPremises = [...premiseNames, assumptionName];
|
|
2066
|
+
const subProof = tryDerive(contradiction, tempTheory, subPremises, depth + 1);
|
|
2067
|
+
if (subProof && subProof.status === 'complete') {
|
|
2068
|
+
const isSyntactic = subProof.steps.every((s) => s.source !== 'semantic');
|
|
2069
|
+
if (isSyntactic) {
|
|
2070
|
+
const mainSteps = buildSingleAssumptionProof(state.steps, assumption, 'Supuesto (para RAA)', subProof, goal, 'RAA (Reduccion al Absurdo)');
|
|
2071
|
+
return buildProof(goal, mainSteps, premiseNames, theory, 'natural_deduction', [subProof], buildCompositeDerivationMetadata(state, mainSteps, [subProof]));
|
|
2072
|
+
}
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2075
|
+
// Fallback: verificar semánticamente
|
|
2076
|
+
const allAxiomFormulas = premiseNames
|
|
2077
|
+
.map((n) => theory.axioms.get(n) || theory.theorems.get(n))
|
|
2078
|
+
.filter((f) => f !== undefined);
|
|
2079
|
+
if (allAxiomFormulas.length > 0) {
|
|
2080
|
+
const atoms = new Set();
|
|
2081
|
+
for (const f of allAxiomFormulas)
|
|
2082
|
+
collectAtoms(f).forEach((a) => atoms.add(a));
|
|
2083
|
+
collectAtoms(goal).forEach((a) => atoms.add(a));
|
|
2084
|
+
const atomList = Array.from(atoms).sort();
|
|
2085
|
+
let semanticResult;
|
|
2086
|
+
// Fast path: bitset semantic check
|
|
2087
|
+
const allPure = allAxiomFormulas.every(isPurePropositional) && isPurePropositional(goal);
|
|
2088
|
+
if (allPure && atomList.length <= 26) {
|
|
2089
|
+
const premiseBits = allAxiomFormulas.map((f) => evaluateBitset(f, atomList).result);
|
|
2090
|
+
const goalBits = evaluateBitset(goal, atomList).result;
|
|
2091
|
+
const allOnes = bvOnes(1 << atomList.length);
|
|
2092
|
+
// Conjunction of all premises
|
|
2093
|
+
let premisesConj = allOnes;
|
|
2094
|
+
for (const pb of premiseBits)
|
|
2095
|
+
premisesConj = bvAnd(premisesConj, pb);
|
|
2096
|
+
// Valid if: wherever premises are true, goal is also true
|
|
2097
|
+
// i.e., premisesConj & ~goalBits === 0
|
|
2098
|
+
semanticResult = bvIsZero(bvAnd(premisesConj, bvNot(goalBits, allOnes)));
|
|
2099
|
+
}
|
|
2100
|
+
else if (allPure && atomList.length > 26) {
|
|
2101
|
+
// DPLL fallback for >26 atoms
|
|
2102
|
+
let conjunction = allAxiomFormulas[0];
|
|
2103
|
+
for (let i = 1; i < allAxiomFormulas.length; i++) {
|
|
2104
|
+
conjunction = { kind: 'and', args: [conjunction, allAxiomFormulas[i]] };
|
|
2105
|
+
}
|
|
2106
|
+
const negGoal = { kind: 'not', args: [goal] };
|
|
2107
|
+
const check = { kind: 'and', args: [conjunction, negGoal] };
|
|
2108
|
+
const result = (0, dpll_1.dpll)(check);
|
|
2109
|
+
semanticResult = !result.satisfiable;
|
|
2110
|
+
}
|
|
2111
|
+
else {
|
|
2112
|
+
// Classic fallback
|
|
2113
|
+
const valuations = generateValuations(atomList);
|
|
2114
|
+
semanticResult = true;
|
|
2115
|
+
for (const v of valuations) {
|
|
2116
|
+
const premisesTrue = allAxiomFormulas.every((f) => evaluateClassical(f, v));
|
|
2117
|
+
if (premisesTrue && !evaluateClassical(goal, v)) {
|
|
2118
|
+
semanticResult = false;
|
|
2119
|
+
break;
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
}
|
|
2123
|
+
if (semanticResult) {
|
|
2124
|
+
// Generate a synthetic final proof step so the user sees a complete derivation
|
|
2125
|
+
// instead of just "derivado exitosamente" with no proof trace.
|
|
2126
|
+
const goalHash = formulaHash(goal);
|
|
2127
|
+
if (!state.known.has(goalHash)) {
|
|
2128
|
+
const premiseStepNums = premiseNames
|
|
2129
|
+
.map((n) => {
|
|
2130
|
+
const f = theory.axioms.get(n) || theory.theorems.get(n);
|
|
2131
|
+
return f ? findStep(state.steps, f) : 0;
|
|
2132
|
+
})
|
|
2133
|
+
.filter((n) => n > 0);
|
|
2134
|
+
state.stepCount++;
|
|
2135
|
+
state.steps.push({
|
|
2136
|
+
stepNumber: state.stepCount,
|
|
2137
|
+
formula: goal,
|
|
2138
|
+
justification: 'Verificacion semantica (todas las valuaciones satisfacen la consecuencia)',
|
|
2139
|
+
premises: premiseStepNums,
|
|
2140
|
+
source: 'semantic',
|
|
2141
|
+
});
|
|
2142
|
+
state.known.set(goalHash, goal);
|
|
2143
|
+
}
|
|
2144
|
+
const relevantSteps = traceBack(state.steps, goal);
|
|
2145
|
+
return buildProof(goal, relevantSteps, premiseNames, theory, 'semantic', undefined, buildDerivationMetadata(state, relevantSteps, true));
|
|
2146
|
+
}
|
|
2147
|
+
}
|
|
2148
|
+
return null;
|
|
2149
|
+
}
|
|
2150
|
+
function findStep(stateOrSteps, formula) {
|
|
2151
|
+
const hash = formulaHash(formula);
|
|
2152
|
+
if (!Array.isArray(stateOrSteps)) {
|
|
2153
|
+
const cached = stateOrSteps.stepByHash.get(hash);
|
|
2154
|
+
if (cached !== undefined)
|
|
2155
|
+
return cached;
|
|
2156
|
+
}
|
|
2157
|
+
const steps = Array.isArray(stateOrSteps) ? stateOrSteps : stateOrSteps.steps;
|
|
2158
|
+
for (const s of steps) {
|
|
2159
|
+
if (formulaHash(s.formula) === hash)
|
|
2160
|
+
return s.stepNumber;
|
|
2161
|
+
}
|
|
2162
|
+
return 0;
|
|
2163
|
+
}
|
|
2164
|
+
function traceBack(steps, goal) {
|
|
2165
|
+
const goalHash = formulaHash(goal);
|
|
2166
|
+
const needed = new Set();
|
|
2167
|
+
const goalStep = steps.find((s) => formulaHash(s.formula) === goalHash);
|
|
2168
|
+
if (!goalStep)
|
|
2169
|
+
return steps;
|
|
2170
|
+
function trace(stepNum) {
|
|
2171
|
+
if (needed.has(stepNum))
|
|
2172
|
+
return;
|
|
2173
|
+
needed.add(stepNum);
|
|
2174
|
+
const step = steps.find((s) => s.stepNumber === stepNum);
|
|
2175
|
+
if (step) {
|
|
2176
|
+
for (const p of step.premises) {
|
|
2177
|
+
trace(p);
|
|
2178
|
+
}
|
|
2179
|
+
}
|
|
2180
|
+
}
|
|
2181
|
+
trace(goalStep.stepNumber);
|
|
2182
|
+
const filtered = steps.filter((s) => needed.has(s.stepNumber));
|
|
2183
|
+
// Compact renumbering: eliminate gaps in step numbers
|
|
2184
|
+
const oldToNew = new Map();
|
|
2185
|
+
filtered.forEach((s, i) => {
|
|
2186
|
+
oldToNew.set(s.stepNumber, i + 1);
|
|
2187
|
+
});
|
|
2188
|
+
return filtered.map((s) => ({
|
|
2189
|
+
...s,
|
|
2190
|
+
stepNumber: oldToNew.get(s.stepNumber) ?? s.stepNumber,
|
|
2191
|
+
premises: s.premises.map((p) => oldToNew.get(p) ?? p),
|
|
2192
|
+
}));
|
|
2193
|
+
}
|
|
2194
|
+
// --- Perfil Classical Propositional ---
|
|
2195
|
+
class ClassicalPropositional {
|
|
2196
|
+
name = 'classical.propositional';
|
|
2197
|
+
description = 'Logica clasica proposicional con tabla de verdad, validez, satisfacibilidad, derivacion y contramodelo';
|
|
2198
|
+
checkWellFormed(formula) {
|
|
2199
|
+
const diags = [];
|
|
2200
|
+
function check(f) {
|
|
2201
|
+
switch (f.kind) {
|
|
2202
|
+
case 'atom':
|
|
2203
|
+
if (!f.name) {
|
|
2204
|
+
diags.push({ severity: 'error', message: 'Atomo sin nombre' });
|
|
2205
|
+
}
|
|
2206
|
+
break;
|
|
2207
|
+
case 'not':
|
|
2208
|
+
if (!f.args || f.args.length !== 1) {
|
|
2209
|
+
diags.push({
|
|
2210
|
+
severity: 'error',
|
|
2211
|
+
message: 'Negacion requiere exactamente un argumento',
|
|
2212
|
+
});
|
|
2213
|
+
}
|
|
2214
|
+
else if (f.args[0]) {
|
|
2215
|
+
check(f.args[0]);
|
|
2216
|
+
}
|
|
2217
|
+
break;
|
|
2218
|
+
case 'and':
|
|
2219
|
+
case 'or':
|
|
2220
|
+
case 'implies':
|
|
2221
|
+
case 'biconditional':
|
|
2222
|
+
if (!f.args || f.args.length !== 2) {
|
|
2223
|
+
diags.push({
|
|
2224
|
+
severity: 'error',
|
|
2225
|
+
message: `${f.kind} requiere exactamente dos argumentos`,
|
|
2226
|
+
});
|
|
2227
|
+
}
|
|
2228
|
+
else {
|
|
2229
|
+
if (f.args[0])
|
|
2230
|
+
check(f.args[0]);
|
|
2231
|
+
if (f.args[1])
|
|
2232
|
+
check(f.args[1]);
|
|
2233
|
+
}
|
|
2234
|
+
break;
|
|
2235
|
+
case 'forall':
|
|
2236
|
+
case 'exists':
|
|
2237
|
+
case 'predicate':
|
|
2238
|
+
case 'equals':
|
|
2239
|
+
case 'modal_necessity':
|
|
2240
|
+
case 'modal_possibility':
|
|
2241
|
+
diags.push({
|
|
2242
|
+
severity: 'error',
|
|
2243
|
+
message: `'${f.kind}' no esta soportado en logica proposicional clasica`,
|
|
2244
|
+
});
|
|
2245
|
+
break;
|
|
2246
|
+
}
|
|
2247
|
+
}
|
|
2248
|
+
check(formula);
|
|
2249
|
+
return diags;
|
|
2250
|
+
}
|
|
2251
|
+
checkValid(formula) {
|
|
2252
|
+
const wf = this.checkWellFormed(formula);
|
|
2253
|
+
if (wf.length > 0) {
|
|
2254
|
+
return { status: 'error', diagnostics: wf, formula };
|
|
2255
|
+
}
|
|
2256
|
+
// Fast path: bitset validity check (no row materialization)
|
|
2257
|
+
const atoms = Array.from(collectAtoms(formula)).sort();
|
|
2258
|
+
if (isPurePropositional(formula) && atoms.length <= 26) {
|
|
2259
|
+
const { result, allOnes } = evaluateBitset(formula, atoms);
|
|
2260
|
+
const isValid = bvEquals(result, allOnes);
|
|
2261
|
+
return {
|
|
2262
|
+
status: isValid ? 'valid' : 'invalid',
|
|
2263
|
+
output: isValid
|
|
2264
|
+
? `${formulaToString(formula)} es VALIDA (tautologia)`
|
|
2265
|
+
: `${formulaToString(formula)} NO es valida`,
|
|
2266
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'valid', valid: isValid }),
|
|
2267
|
+
diagnostics: [],
|
|
2268
|
+
formula,
|
|
2269
|
+
};
|
|
2270
|
+
}
|
|
2271
|
+
// DPLL path: for formulas with >26 atoms, use SAT solver
|
|
2272
|
+
if (isPurePropositional(formula) && atoms.length > 26) {
|
|
2273
|
+
const negated = { kind: 'not', args: [formula] };
|
|
2274
|
+
const result = (0, dpll_1.dpll)(negated);
|
|
2275
|
+
const isValid = !result.satisfiable;
|
|
2276
|
+
return {
|
|
2277
|
+
status: isValid ? 'valid' : 'invalid',
|
|
2278
|
+
output: isValid
|
|
2279
|
+
? `${formulaToString(formula)} es VALIDA (tautologia)`
|
|
2280
|
+
: `${formulaToString(formula)} NO es valida`,
|
|
2281
|
+
model: !isValid && result.model ? { type: 'propositional', valuation: result.model } : undefined,
|
|
2282
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'valid', valid: isValid }),
|
|
2283
|
+
diagnostics: [],
|
|
2284
|
+
formula,
|
|
2285
|
+
};
|
|
2286
|
+
}
|
|
2287
|
+
const tt = this.truthTable(formula);
|
|
2288
|
+
if (tt.isTautology) {
|
|
2289
|
+
return {
|
|
2290
|
+
status: 'valid',
|
|
2291
|
+
output: `${formulaToString(formula)} es VALIDA (tautologia)`,
|
|
2292
|
+
truthTable: tt,
|
|
2293
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'valid', valid: true }),
|
|
2294
|
+
diagnostics: [],
|
|
2295
|
+
formula,
|
|
2296
|
+
};
|
|
2297
|
+
}
|
|
2298
|
+
else {
|
|
2299
|
+
const cm = tt.rows.find((r) => !r.result);
|
|
2300
|
+
return {
|
|
2301
|
+
status: 'invalid',
|
|
2302
|
+
output: `${formulaToString(formula)} NO es valida`,
|
|
2303
|
+
truthTable: tt,
|
|
2304
|
+
model: cm ? { type: 'propositional', valuation: cm.valuation } : undefined,
|
|
2305
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'valid', valid: false }),
|
|
2306
|
+
diagnostics: [],
|
|
2307
|
+
formula,
|
|
2308
|
+
};
|
|
2309
|
+
}
|
|
2310
|
+
}
|
|
2311
|
+
checkSatisfiable(formula) {
|
|
2312
|
+
const wf = this.checkWellFormed(formula);
|
|
2313
|
+
if (wf.length > 0) {
|
|
2314
|
+
return { status: 'error', diagnostics: wf, formula };
|
|
2315
|
+
}
|
|
2316
|
+
// Fast path: bitset satisfiability check (no row materialization)
|
|
2317
|
+
const atoms = Array.from(collectAtoms(formula)).sort();
|
|
2318
|
+
if (isPurePropositional(formula) && atoms.length <= 26) {
|
|
2319
|
+
const { result } = evaluateBitset(formula, atoms);
|
|
2320
|
+
const isSat = !bvIsZero(result);
|
|
2321
|
+
return {
|
|
2322
|
+
status: isSat ? 'satisfiable' : 'unsatisfiable',
|
|
2323
|
+
output: isSat
|
|
2324
|
+
? `${formulaToString(formula)} es SATISFACIBLE`
|
|
2325
|
+
: `${formulaToString(formula)} es INSATISFACIBLE (contradiccion)`,
|
|
2326
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'satisfiable', sat: isSat }),
|
|
2327
|
+
diagnostics: [],
|
|
2328
|
+
formula,
|
|
2329
|
+
};
|
|
2330
|
+
}
|
|
2331
|
+
// DPLL path: for formulas with >26 atoms, use SAT solver
|
|
2332
|
+
if (isPurePropositional(formula) && atoms.length > 26) {
|
|
2333
|
+
const result = (0, dpll_1.dpll)(formula);
|
|
2334
|
+
return {
|
|
2335
|
+
status: result.satisfiable ? 'satisfiable' : 'unsatisfiable',
|
|
2336
|
+
output: result.satisfiable
|
|
2337
|
+
? `${formulaToString(formula)} es SATISFACIBLE`
|
|
2338
|
+
: `${formulaToString(formula)} es INSATISFACIBLE (contradiccion)`,
|
|
2339
|
+
model: result.satisfiable && result.model
|
|
2340
|
+
? { type: 'propositional', valuation: result.model }
|
|
2341
|
+
: undefined,
|
|
2342
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'satisfiable', sat: result.satisfiable }),
|
|
2343
|
+
diagnostics: [],
|
|
2344
|
+
formula,
|
|
2345
|
+
};
|
|
2346
|
+
}
|
|
2347
|
+
const tt = this.truthTable(formula);
|
|
2348
|
+
if (tt.isSatisfiable) {
|
|
2349
|
+
const sat = tt.rows.find((r) => r.result);
|
|
2350
|
+
return {
|
|
2351
|
+
status: 'satisfiable',
|
|
2352
|
+
output: `${formulaToString(formula)} es SATISFACIBLE`,
|
|
2353
|
+
model: sat ? { type: 'propositional', valuation: sat.valuation } : undefined,
|
|
2354
|
+
truthTable: tt,
|
|
2355
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'satisfiable', sat: true }),
|
|
2356
|
+
diagnostics: [],
|
|
2357
|
+
formula,
|
|
2358
|
+
};
|
|
2359
|
+
}
|
|
2360
|
+
else {
|
|
2361
|
+
return {
|
|
2362
|
+
status: 'unsatisfiable',
|
|
2363
|
+
output: `${formulaToString(formula)} es INSATISFACIBLE (contradiccion)`,
|
|
2364
|
+
truthTable: tt,
|
|
2365
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'satisfiable', sat: false }),
|
|
2366
|
+
diagnostics: [],
|
|
2367
|
+
formula,
|
|
2368
|
+
};
|
|
2369
|
+
}
|
|
2370
|
+
}
|
|
2371
|
+
prove(goal, theory, premises) {
|
|
2372
|
+
const wf = this.checkWellFormed(goal);
|
|
2373
|
+
if (wf.length > 0) {
|
|
2374
|
+
return { status: 'error', diagnostics: wf, formula: goal };
|
|
2375
|
+
}
|
|
2376
|
+
const usingRestricted = premises !== undefined && premises.length > 0;
|
|
2377
|
+
const premiseNames = usingRestricted
|
|
2378
|
+
? premises.filter((n) => theory.axioms.has(n) || theory.theorems.has(n))
|
|
2379
|
+
: Array.from(theory.axioms.keys());
|
|
2380
|
+
const diagnostics = [];
|
|
2381
|
+
if (usingRestricted) {
|
|
2382
|
+
for (const n of premises) {
|
|
2383
|
+
if (!theory.axioms.has(n) && !theory.theorems.has(n)) {
|
|
2384
|
+
diagnostics.push({
|
|
2385
|
+
severity: 'warning',
|
|
2386
|
+
message: `Premisa '${n}' no encontrada en la teoría; será ignorada en prove`,
|
|
2387
|
+
});
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
}
|
|
2391
|
+
const effectiveTheory = usingRestricted
|
|
2392
|
+
? {
|
|
2393
|
+
profile: theory.profile,
|
|
2394
|
+
axioms: new Map(premiseNames
|
|
2395
|
+
.filter((n) => theory.axioms.has(n))
|
|
2396
|
+
.map((n) => [n, theory.axioms.get(n)])),
|
|
2397
|
+
theorems: new Map(premiseNames
|
|
2398
|
+
.filter((n) => theory.theorems.has(n))
|
|
2399
|
+
.map((n) => [n, theory.theorems.get(n)])),
|
|
2400
|
+
claims: theory.claims,
|
|
2401
|
+
judgments: theory.judgments,
|
|
2402
|
+
}
|
|
2403
|
+
: theory;
|
|
2404
|
+
const proof = tryDerive(goal, effectiveTheory, premiseNames);
|
|
2405
|
+
if (proof && proof.status === 'complete') {
|
|
2406
|
+
const isSemantic = proof.method === 'semantic';
|
|
2407
|
+
return {
|
|
2408
|
+
status: 'provable',
|
|
2409
|
+
output: isSemantic
|
|
2410
|
+
? `${formulaToString(goal)} es DEMOSTRABLE desde la teoria (verificación semántica, sin derivación sintáctica)`
|
|
2411
|
+
: `${formulaToString(goal)} es DEMOSTRABLE desde la teoria`,
|
|
2412
|
+
proof,
|
|
2413
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'prove', ok: true }),
|
|
2414
|
+
diagnostics,
|
|
2415
|
+
formula: goal,
|
|
2416
|
+
};
|
|
2417
|
+
}
|
|
2418
|
+
// Semantic fallback: verify via SAT/truth-table whether goal follows from axioms
|
|
2419
|
+
const allAxiomFormulas = premiseNames
|
|
2420
|
+
.map((n) => effectiveTheory.axioms.get(n) || effectiveTheory.theorems.get(n))
|
|
2421
|
+
.filter((f) => f !== undefined);
|
|
2422
|
+
let semanticResult;
|
|
2423
|
+
const atoms = new Set();
|
|
2424
|
+
for (const f of allAxiomFormulas)
|
|
2425
|
+
collectAtoms(f).forEach((a) => atoms.add(a));
|
|
2426
|
+
collectAtoms(goal).forEach((a) => atoms.add(a));
|
|
2427
|
+
const atomList = Array.from(atoms).sort();
|
|
2428
|
+
if (allAxiomFormulas.length > 0) {
|
|
2429
|
+
// With premises: check if premises entail goal
|
|
2430
|
+
const allPure = allAxiomFormulas.every(isPurePropositional) && isPurePropositional(goal);
|
|
2431
|
+
if (allPure && atomList.length <= 26) {
|
|
2432
|
+
const premiseBits = allAxiomFormulas.map((f) => evaluateBitset(f, atomList).result);
|
|
2433
|
+
const goalBits = evaluateBitset(goal, atomList).result;
|
|
2434
|
+
const allOnes = bvOnes(1 << atomList.length);
|
|
2435
|
+
let premisesConj = allOnes;
|
|
2436
|
+
for (const pb of premiseBits)
|
|
2437
|
+
premisesConj = bvAnd(premisesConj, pb);
|
|
2438
|
+
semanticResult = bvIsZero(bvAnd(premisesConj, bvNot(goalBits, allOnes)));
|
|
2439
|
+
}
|
|
2440
|
+
else if (allPure && atomList.length > 26) {
|
|
2441
|
+
let conjunction = allAxiomFormulas[0];
|
|
2442
|
+
for (let i = 1; i < allAxiomFormulas.length; i++) {
|
|
2443
|
+
conjunction = { kind: 'and', args: [conjunction, allAxiomFormulas[i]] };
|
|
2444
|
+
}
|
|
2445
|
+
const negGoal = { kind: 'not', args: [goal] };
|
|
2446
|
+
const check = { kind: 'and', args: [conjunction, negGoal] };
|
|
2447
|
+
semanticResult = !(0, dpll_1.dpll)(check).satisfiable;
|
|
2448
|
+
}
|
|
2449
|
+
else {
|
|
2450
|
+
const valuations = generateValuations(atomList);
|
|
2451
|
+
semanticResult = true;
|
|
2452
|
+
for (const v of valuations) {
|
|
2453
|
+
const premisesTrue = allAxiomFormulas.every((f) => evaluateClassical(f, v));
|
|
2454
|
+
if (premisesTrue && !evaluateClassical(goal, v)) {
|
|
2455
|
+
semanticResult = false;
|
|
2456
|
+
break;
|
|
2457
|
+
}
|
|
2458
|
+
}
|
|
2459
|
+
}
|
|
2460
|
+
}
|
|
2461
|
+
else {
|
|
2462
|
+
// No premises: check if goal is a tautology
|
|
2463
|
+
if (isPurePropositional(goal) && atomList.length <= 26) {
|
|
2464
|
+
const { result, allOnes } = evaluateBitset(goal, atomList);
|
|
2465
|
+
semanticResult = bvEquals(result, allOnes);
|
|
2466
|
+
}
|
|
2467
|
+
else if (isPurePropositional(goal) && atomList.length > 26) {
|
|
2468
|
+
const negated = { kind: 'not', args: [goal] };
|
|
2469
|
+
semanticResult = !(0, dpll_1.dpll)(negated).satisfiable;
|
|
2470
|
+
}
|
|
2471
|
+
else {
|
|
2472
|
+
const valuations = generateValuations(atomList);
|
|
2473
|
+
semanticResult = valuations.every((v) => evaluateClassical(goal, v));
|
|
2474
|
+
}
|
|
2475
|
+
}
|
|
2476
|
+
if (semanticResult) {
|
|
2477
|
+
const premiseSteps = [];
|
|
2478
|
+
premiseNames.forEach((n, i) => {
|
|
2479
|
+
const f = effectiveTheory.axioms.get(n) || effectiveTheory.theorems.get(n);
|
|
2480
|
+
if (f) {
|
|
2481
|
+
premiseSteps.push({
|
|
2482
|
+
stepNumber: i + 1,
|
|
2483
|
+
formula: f,
|
|
2484
|
+
justification: `Premisa (${n})`,
|
|
2485
|
+
premises: [],
|
|
2486
|
+
source: 'premise',
|
|
2487
|
+
});
|
|
2488
|
+
}
|
|
2489
|
+
});
|
|
2490
|
+
const semanticProofSteps = [
|
|
2491
|
+
...premiseSteps,
|
|
2492
|
+
{
|
|
2493
|
+
stepNumber: premiseNames.length + 1,
|
|
2494
|
+
formula: goal,
|
|
2495
|
+
justification: 'Verificacion semantica (tautologia o consecuencia logica)',
|
|
2496
|
+
premises: premiseNames.map((_, i) => i + 1),
|
|
2497
|
+
source: 'semantic',
|
|
2498
|
+
},
|
|
2499
|
+
];
|
|
2500
|
+
const semanticProof = buildProof(goal, semanticProofSteps, premiseNames, effectiveTheory, 'semantic');
|
|
2501
|
+
return {
|
|
2502
|
+
status: 'provable',
|
|
2503
|
+
output: `${formulaToString(goal)} es DEMOSTRABLE desde la teoria (verificación semántica, sin derivación sintáctica)`,
|
|
2504
|
+
proof: semanticProof,
|
|
2505
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'prove', ok: true }),
|
|
2506
|
+
diagnostics,
|
|
2507
|
+
formula: goal,
|
|
2508
|
+
};
|
|
2509
|
+
}
|
|
2510
|
+
// Ni derivación sintáctica ni consecuencia semántica: existe contramodelo.
|
|
2511
|
+
// Esto sí es refutable en el sentido fuerte.
|
|
2512
|
+
return {
|
|
2513
|
+
status: 'refutable',
|
|
2514
|
+
output: `${formulaToString(goal)} NO se sigue de la teoría (existe contramodelo en ${formulaToString(goal)})`,
|
|
2515
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'prove', ok: false }),
|
|
2516
|
+
diagnostics,
|
|
2517
|
+
formula: goal,
|
|
2518
|
+
};
|
|
2519
|
+
}
|
|
2520
|
+
derive(goal, premises, theory) {
|
|
2521
|
+
const wf = this.checkWellFormed(goal);
|
|
2522
|
+
if (wf.length > 0) {
|
|
2523
|
+
return { status: 'error', diagnostics: wf, formula: goal };
|
|
2524
|
+
}
|
|
2525
|
+
const proof = tryDerive(goal, theory, premises);
|
|
2526
|
+
if (proof && proof.status === 'complete') {
|
|
2527
|
+
// Build reasoning info
|
|
2528
|
+
const rulesUsed = new Set();
|
|
2529
|
+
for (const step of proof.steps) {
|
|
2530
|
+
if (step.source !== 'premise') {
|
|
2531
|
+
rulesUsed.add(step.justification);
|
|
2532
|
+
}
|
|
2533
|
+
}
|
|
2534
|
+
const reasoningType = rulesUsed.size > 0 ? Array.from(rulesUsed).join(', ') : 'Derivación directa';
|
|
2535
|
+
const isSemantic = proof.method === 'semantic';
|
|
2536
|
+
return {
|
|
2537
|
+
status: 'provable',
|
|
2538
|
+
output: isSemantic
|
|
2539
|
+
? `${formulaToString(goal)} derivado (verificación semántica, sin derivación sintáctica)`
|
|
2540
|
+
: `${formulaToString(goal)} derivado exitosamente`,
|
|
2541
|
+
proof,
|
|
2542
|
+
reasoningType,
|
|
2543
|
+
reasoningSchema: rulesUsed.has('Introduccion de negacion')
|
|
2544
|
+
? '[φ] ⊢ ⊥, por lo tanto ¬φ'
|
|
2545
|
+
: rulesUsed.has('RAA (Reduccion al Absurdo)')
|
|
2546
|
+
? '[¬φ] ⊢ ⊥, por lo tanto φ'
|
|
2547
|
+
: rulesUsed.has('Contradiccion')
|
|
2548
|
+
? 'φ, ¬φ ⊢ ⊥'
|
|
2549
|
+
: rulesUsed.has('Explosion')
|
|
2550
|
+
? '⊥ ⊢ ψ'
|
|
2551
|
+
: rulesUsed.has('Prueba Condicional (Teorema de Deduccion)')
|
|
2552
|
+
? '[φ] ⊢ ψ, por lo tanto φ → ψ'
|
|
2553
|
+
: rulesUsed.has('Modus Ponens')
|
|
2554
|
+
? 'φ → ψ, φ ⊢ ψ'
|
|
2555
|
+
: rulesUsed.has('Modus Tollens')
|
|
2556
|
+
? 'φ → ψ, ¬ψ ⊢ ¬φ'
|
|
2557
|
+
: rulesUsed.has('Silogismo Hipotetico')
|
|
2558
|
+
? 'φ → ψ, ψ → χ ⊢ φ → χ'
|
|
2559
|
+
: undefined,
|
|
2560
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({
|
|
2561
|
+
op: 'derive',
|
|
2562
|
+
ok: true,
|
|
2563
|
+
steps: proof.steps.length,
|
|
2564
|
+
rules: Array.from(rulesUsed),
|
|
2565
|
+
}),
|
|
2566
|
+
diagnostics: [],
|
|
2567
|
+
formula: goal,
|
|
2568
|
+
};
|
|
2569
|
+
}
|
|
2570
|
+
return {
|
|
2571
|
+
status: 'unknown',
|
|
2572
|
+
output: `No se pudo derivar ${formulaToString(goal)} desde las premisas dadas (sin refutación)`,
|
|
2573
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'derive', ok: false }),
|
|
2574
|
+
diagnostics: [],
|
|
2575
|
+
formula: goal,
|
|
2576
|
+
};
|
|
2577
|
+
}
|
|
2578
|
+
countermodel(formula) {
|
|
2579
|
+
const wf = this.checkWellFormed(formula);
|
|
2580
|
+
if (wf.length > 0) {
|
|
2581
|
+
return { status: 'error', diagnostics: wf, formula };
|
|
2582
|
+
}
|
|
2583
|
+
const atoms = Array.from(collectAtoms(formula)).sort();
|
|
2584
|
+
const n = atoms.length;
|
|
2585
|
+
// Fast path: bitset finds countermodel in one pass
|
|
2586
|
+
if (isPurePropositional(formula) && n <= 26) {
|
|
2587
|
+
const { result, allOnes } = evaluateBitset(formula, atoms);
|
|
2588
|
+
if (bvEquals(result, allOnes)) {
|
|
2589
|
+
return {
|
|
2590
|
+
status: 'valid',
|
|
2591
|
+
output: `${formulaToString(formula)} es tautologia, no hay contramodelo`,
|
|
2592
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'countermodel', found: false }),
|
|
2593
|
+
diagnostics: [],
|
|
2594
|
+
formula,
|
|
2595
|
+
};
|
|
2596
|
+
}
|
|
2597
|
+
// Find first 0 bit (first falsifying row)
|
|
2598
|
+
const inverted = bvNot(result, allOnes);
|
|
2599
|
+
const idx = bvFirstSet(inverted);
|
|
2600
|
+
const v = {};
|
|
2601
|
+
for (let j = 0; j < n; j++) {
|
|
2602
|
+
v[atoms[j]] = Boolean((idx >> (n - 1 - j)) & 1);
|
|
2603
|
+
}
|
|
2604
|
+
const valStr = atoms.map((a) => `${a}=${v[a] ? 'V' : 'F'}`).join(', ');
|
|
2605
|
+
return {
|
|
2606
|
+
status: 'invalid',
|
|
2607
|
+
output: `Contramodelo encontrado para ${formulaToString(formula)}\n ← ${valStr}`,
|
|
2608
|
+
model: { type: 'propositional', valuation: v },
|
|
2609
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'countermodel', found: true }),
|
|
2610
|
+
diagnostics: [],
|
|
2611
|
+
formula,
|
|
2612
|
+
};
|
|
2613
|
+
}
|
|
2614
|
+
// DPLL path: for formulas with >26 atoms, use SAT solver to find countermodel
|
|
2615
|
+
if (isPurePropositional(formula) && n > 26) {
|
|
2616
|
+
const negated = { kind: 'not', args: [formula] };
|
|
2617
|
+
const result = (0, dpll_1.dpll)(negated);
|
|
2618
|
+
if (result.satisfiable && result.model) {
|
|
2619
|
+
const valStr = atoms.map((a) => `${a}=${result.model?.[a] ? 'V' : 'F'}`).join(', ');
|
|
2620
|
+
return {
|
|
2621
|
+
status: 'invalid',
|
|
2622
|
+
output: `Contramodelo encontrado para ${formulaToString(formula)}\n ← ${valStr}`,
|
|
2623
|
+
model: { type: 'propositional', valuation: result.model },
|
|
2624
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'countermodel', found: true }),
|
|
2625
|
+
diagnostics: [],
|
|
2626
|
+
formula,
|
|
2627
|
+
};
|
|
2628
|
+
}
|
|
2629
|
+
return {
|
|
2630
|
+
status: 'valid',
|
|
2631
|
+
output: `${formulaToString(formula)} es tautologia, no hay contramodelo`,
|
|
2632
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'countermodel', found: false }),
|
|
2633
|
+
diagnostics: [],
|
|
2634
|
+
formula,
|
|
2635
|
+
};
|
|
2636
|
+
}
|
|
2637
|
+
// Fallback: classic evaluation
|
|
2638
|
+
const valuations = generateValuations(atoms);
|
|
2639
|
+
for (const v of valuations) {
|
|
2640
|
+
if (!evaluateClassical(formula, v)) {
|
|
2641
|
+
const valStr = atoms.map((a) => `${a}=${v[a] ? 'V' : 'F'}`).join(', ');
|
|
2642
|
+
return {
|
|
2643
|
+
status: 'invalid',
|
|
2644
|
+
output: `Contramodelo encontrado para ${formulaToString(formula)}\n ← ${valStr}`,
|
|
2645
|
+
model: { type: 'propositional', valuation: v },
|
|
2646
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'countermodel', found: true }),
|
|
2647
|
+
diagnostics: [],
|
|
2648
|
+
formula,
|
|
2649
|
+
};
|
|
2650
|
+
}
|
|
2651
|
+
}
|
|
2652
|
+
return {
|
|
2653
|
+
status: 'valid',
|
|
2654
|
+
output: `${formulaToString(formula)} es tautologia, no hay contramodelo`,
|
|
2655
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'countermodel', found: false }),
|
|
2656
|
+
diagnostics: [],
|
|
2657
|
+
formula,
|
|
2658
|
+
};
|
|
2659
|
+
}
|
|
2660
|
+
explain(formula) {
|
|
2661
|
+
if (!isPurePropositional(formula)) {
|
|
2662
|
+
return {
|
|
2663
|
+
status: 'error',
|
|
2664
|
+
output: `explain solo esta disponible para formulas puramente proposicionales: ${(0, format_1.formulaToUnicode)(formula)}`,
|
|
2665
|
+
diagnostics: [
|
|
2666
|
+
{
|
|
2667
|
+
severity: 'error',
|
|
2668
|
+
message: 'La formula incluye operadores no proposicionales; use un perfil con explain semantico especifico.',
|
|
2669
|
+
},
|
|
2670
|
+
...this.checkWellFormed(formula),
|
|
2671
|
+
],
|
|
2672
|
+
formula,
|
|
2673
|
+
};
|
|
2674
|
+
}
|
|
2675
|
+
const wf = this.checkWellFormed(formula);
|
|
2676
|
+
if (wf.length > 0) {
|
|
2677
|
+
return { status: 'error', diagnostics: wf, formula };
|
|
2678
|
+
}
|
|
2679
|
+
const tt = this.truthTable(formula);
|
|
2680
|
+
const tAnalysis = (0, formula_classifier_1.classifyFormula)(formula);
|
|
2681
|
+
let explanation = `Fórmula: ${(0, format_1.formulaToUnicode)(formula)}\n`;
|
|
2682
|
+
if (tAnalysis.formulaAnalysis.mainConnective) {
|
|
2683
|
+
explanation += `Conectivo principal: ${tAnalysis.formulaAnalysis.mainConnective}\n`;
|
|
2684
|
+
}
|
|
2685
|
+
explanation += `Profundidad: ${tAnalysis.formulaAnalysis.depth}\n`;
|
|
2686
|
+
explanation += `Complejidad: ${tAnalysis.formulaAnalysis.complexity} conectivos\n`;
|
|
2687
|
+
explanation += `Átomos: { ${Array.from(collectAtoms(formula)).join(', ')} }\n`;
|
|
2688
|
+
if (tAnalysis.formulaAnalysis.subFormulas.length > 0) {
|
|
2689
|
+
explanation += `\nSub-fórmulas:\n`;
|
|
2690
|
+
for (const sf of tAnalysis.formulaAnalysis.subFormulas) {
|
|
2691
|
+
explanation += ` ├─ ${sf}\n`;
|
|
2692
|
+
}
|
|
2693
|
+
}
|
|
2694
|
+
explanation += `\nFormas normales:\n`;
|
|
2695
|
+
const nnf = toNNF(formula);
|
|
2696
|
+
const cnf = toCNF(formula);
|
|
2697
|
+
const dnf = toDNF(formula);
|
|
2698
|
+
explanation += ` NNF: ${formulaToString(nnf)}\n`;
|
|
2699
|
+
explanation += ` CNF: ${formulaToString(cnf)}\n`;
|
|
2700
|
+
explanation += ` DNF: ${formulaToString(dnf)}\n`;
|
|
2701
|
+
// #28: Cláusulas de resolución
|
|
2702
|
+
const clauses = extractClauses(formula);
|
|
2703
|
+
if (clauses.length > 0 && clauses.length <= 8) {
|
|
2704
|
+
explanation += `\nCláusulas (resolución):\n`;
|
|
2705
|
+
for (let i = 0; i < clauses.length; i++) {
|
|
2706
|
+
explanation += ` C${i + 1}: {${clauses[i].join(', ')}}\n`;
|
|
2707
|
+
}
|
|
2708
|
+
}
|
|
2709
|
+
// #24: Completitud funcional
|
|
2710
|
+
const atomsList = Array.from(collectAtoms(formula));
|
|
2711
|
+
const connectives = new Set();
|
|
2712
|
+
const walkConn = (f) => {
|
|
2713
|
+
if (f.kind !== 'atom')
|
|
2714
|
+
connectives.add(f.kind);
|
|
2715
|
+
f.args?.forEach(walkConn);
|
|
2716
|
+
};
|
|
2717
|
+
walkConn(formula);
|
|
2718
|
+
const hasNeg = connectives.has('not');
|
|
2719
|
+
const hasAnd = connectives.has('and');
|
|
2720
|
+
const hasOr = connectives.has('or');
|
|
2721
|
+
const hasImplies = connectives.has('implies');
|
|
2722
|
+
const hasBicond = connectives.has('biconditional');
|
|
2723
|
+
const hasNand = connectives.has('nand');
|
|
2724
|
+
const hasNor = connectives.has('nor');
|
|
2725
|
+
let isFunctionallyComplete = false;
|
|
2726
|
+
let completenessNote = '';
|
|
2727
|
+
if (hasNand || hasNor) {
|
|
2728
|
+
isFunctionallyComplete = true;
|
|
2729
|
+
completenessNote = hasNand
|
|
2730
|
+
? '{↑} (NAND solo — Sheffer stroke)'
|
|
2731
|
+
: '{↓} (NOR solo — Peirce arrow)';
|
|
2732
|
+
}
|
|
2733
|
+
else if (hasNeg && (hasAnd || hasOr || hasImplies || hasBicond)) {
|
|
2734
|
+
isFunctionallyComplete = true;
|
|
2735
|
+
completenessNote = hasNeg && hasAnd ? '{¬, ∧}' : hasNeg && hasOr ? '{¬, ∨}' : '{¬, →}';
|
|
2736
|
+
}
|
|
2737
|
+
explanation += `\nCompletitud funcional: ${isFunctionallyComplete ? `✓ Usa conjunto completo: ${completenessNote}` : '✗ El conjunto de conectivos usado no es funcionalmente completo'}\n`;
|
|
2738
|
+
// #26: Esquemas de dominancia/identidad
|
|
2739
|
+
if (atomsList.length <= 2) {
|
|
2740
|
+
explanation += `\nEsquemas algebraicos verificados:\n`;
|
|
2741
|
+
explanation += ` ✓ P ∧ ⊤ ≡ P (identidad conjuntiva)\n`;
|
|
2742
|
+
explanation += ` ✓ P ∨ ⊥ ≡ P (identidad disyuntiva)\n`;
|
|
2743
|
+
explanation += ` ✓ P ∧ ⊥ ≡ ⊥ (dominancia conjuntiva)\n`;
|
|
2744
|
+
explanation += ` ✓ P ∨ ⊤ ≡ ⊤ (dominancia disyuntiva)\n`;
|
|
2745
|
+
explanation += ` ✓ P ∧ ¬P ≡ ⊥ (complemento)\n`;
|
|
2746
|
+
explanation += ` ✓ P ∨ ¬P ≡ ⊤ (tercero excluido)\n`;
|
|
2747
|
+
}
|
|
2748
|
+
if (tAnalysis.formulaClassification) {
|
|
2749
|
+
explanation += `\nClasificación semántica: Tautología\n`;
|
|
2750
|
+
explanation += `Nombre conocido: ${tAnalysis.formulaClassification}\n`;
|
|
2751
|
+
}
|
|
2752
|
+
explanation += `\nTabla de verdad:\n`;
|
|
2753
|
+
explanation += ` ${tt.totalCount} valuaciones, ${tt.satisfyingCount} verdaderas, ${tt.totalCount - tt.satisfyingCount} falsas\n`;
|
|
2754
|
+
if (tt.isTautology)
|
|
2755
|
+
explanation += ` → Tautología ✓\n`;
|
|
2756
|
+
else if (tt.isContradiction)
|
|
2757
|
+
explanation += ` → Contradicción ✗\n`;
|
|
2758
|
+
else
|
|
2759
|
+
explanation += ` → Contingente (satisfacible)\n`;
|
|
2760
|
+
return {
|
|
2761
|
+
status: tt.isTautology ? 'valid' : tt.isSatisfiable ? 'satisfiable' : 'unsatisfiable',
|
|
2762
|
+
output: explanation,
|
|
2763
|
+
truthTable: tt,
|
|
2764
|
+
diagnostics: [],
|
|
2765
|
+
formula,
|
|
2766
|
+
formulaAnalysis: tAnalysis.formulaAnalysis,
|
|
2767
|
+
formulaClassification: tAnalysis.formulaClassification,
|
|
2768
|
+
normalForms: {
|
|
2769
|
+
nnf: formulaToString(nnf),
|
|
2770
|
+
cnf: formulaToString(cnf),
|
|
2771
|
+
dnf: formulaToString(dnf),
|
|
2772
|
+
},
|
|
2773
|
+
};
|
|
2774
|
+
}
|
|
2775
|
+
truthTable(formula) {
|
|
2776
|
+
const atoms = Array.from(collectAtoms(formula)).sort();
|
|
2777
|
+
const n = atoms.length;
|
|
2778
|
+
const subForms = getSubFormulas(formula);
|
|
2779
|
+
const subFormulasInfo = subForms.map((sf) => ({ formula: sf, label: formulaToString(sf) }));
|
|
2780
|
+
// Fast path: bitset evaluation for pure propositional formulas
|
|
2781
|
+
// Limit to n<=20 for row materialization (2^20 = ~1M rows)
|
|
2782
|
+
if (isPurePropositional(formula) && n <= 20) {
|
|
2783
|
+
const { result, atomMasks, total, allOnes } = evaluateBitset(formula, atoms);
|
|
2784
|
+
const satisfyingCount = bitsetPopcount(result);
|
|
2785
|
+
// Evaluate subformulas with bitsets too
|
|
2786
|
+
const subBitsets = subForms.map((sf) => isPurePropositional(sf) ? evaluateBitset(sf, atoms).result : bvCreate(total));
|
|
2787
|
+
// Materialize rows from bitset results
|
|
2788
|
+
const rows = new Array(total);
|
|
2789
|
+
for (let i = 0; i < total; i++) {
|
|
2790
|
+
const v = {};
|
|
2791
|
+
for (let j = 0; j < n; j++) {
|
|
2792
|
+
v[atoms[j]] = bvTestBit(atomMasks.get(atoms[j]) ?? new Uint32Array(0), i);
|
|
2793
|
+
}
|
|
2794
|
+
rows[i] = { valuation: v, result: bvTestBit(result, i) };
|
|
2795
|
+
}
|
|
2796
|
+
const subFormulaValues = rows.map((_, i) => {
|
|
2797
|
+
const vals = {};
|
|
2798
|
+
subForms.forEach((sf, si) => {
|
|
2799
|
+
vals[formulaToString(sf)] = bvTestBit(subBitsets[si], i);
|
|
2800
|
+
});
|
|
2801
|
+
return vals;
|
|
2802
|
+
});
|
|
2803
|
+
return {
|
|
2804
|
+
variables: atoms,
|
|
2805
|
+
rows,
|
|
2806
|
+
isTautology: bvEquals(result, allOnes),
|
|
2807
|
+
isContradiction: bvIsZero(result),
|
|
2808
|
+
isSatisfiable: !bvIsZero(result),
|
|
2809
|
+
subFormulas: subFormulasInfo,
|
|
2810
|
+
subFormulaValues,
|
|
2811
|
+
satisfyingCount,
|
|
2812
|
+
totalCount: total,
|
|
2813
|
+
};
|
|
2814
|
+
}
|
|
2815
|
+
// Fallback: classic evaluation
|
|
2816
|
+
const valuations = generateValuations(atoms);
|
|
2817
|
+
const rows = valuations.map((v) => ({
|
|
2818
|
+
valuation: v,
|
|
2819
|
+
result: evaluateClassical(formula, v),
|
|
2820
|
+
}));
|
|
2821
|
+
const subFormulaValues = valuations.map((v) => {
|
|
2822
|
+
const vals = {};
|
|
2823
|
+
subForms.forEach((sf) => {
|
|
2824
|
+
vals[formulaToString(sf)] = evaluateClassical(sf, v);
|
|
2825
|
+
});
|
|
2826
|
+
return vals;
|
|
2827
|
+
});
|
|
2828
|
+
return {
|
|
2829
|
+
variables: atoms,
|
|
2830
|
+
rows,
|
|
2831
|
+
isTautology: rows.every((r) => r.result),
|
|
2832
|
+
isContradiction: rows.every((r) => !r.result),
|
|
2833
|
+
isSatisfiable: rows.some((r) => r.result),
|
|
2834
|
+
subFormulas: subFormulasInfo,
|
|
2835
|
+
subFormulaValues,
|
|
2836
|
+
satisfyingCount: rows.filter((r) => r.result).length,
|
|
2837
|
+
totalCount: rows.length,
|
|
2838
|
+
};
|
|
2839
|
+
}
|
|
2840
|
+
checkEquivalent(a, b) {
|
|
2841
|
+
const wfA = this.checkWellFormed(a);
|
|
2842
|
+
const wfB = this.checkWellFormed(b);
|
|
2843
|
+
if (wfA.length > 0 || wfB.length > 0) {
|
|
2844
|
+
return { status: 'error', diagnostics: [...wfA, ...wfB] };
|
|
2845
|
+
}
|
|
2846
|
+
const biconditional = { kind: 'biconditional', args: [a, b] };
|
|
2847
|
+
const tt = this.truthTable(biconditional);
|
|
2848
|
+
if (tt.isTautology) {
|
|
2849
|
+
return {
|
|
2850
|
+
status: 'valid',
|
|
2851
|
+
output: `${formulaToString(a)} y ${formulaToString(b)} son EQUIVALENTES`,
|
|
2852
|
+
truthTable: tt,
|
|
2853
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'equivalent', equiv: true }),
|
|
2854
|
+
diagnostics: [],
|
|
2855
|
+
};
|
|
2856
|
+
}
|
|
2857
|
+
const cm = tt.rows.find((r) => !r.result);
|
|
2858
|
+
return {
|
|
2859
|
+
status: 'invalid',
|
|
2860
|
+
output: `${formulaToString(a)} y ${formulaToString(b)} NO son equivalentes`,
|
|
2861
|
+
model: cm ? { type: 'propositional', valuation: cm.valuation } : undefined,
|
|
2862
|
+
educationalNote: (0, educational_notes_1.pickEducationalNote)({ op: 'equivalent', equiv: false }),
|
|
2863
|
+
diagnostics: [],
|
|
2864
|
+
};
|
|
2865
|
+
}
|
|
2866
|
+
}
|
|
2867
|
+
exports.ClassicalPropositional = ClassicalPropositional;
|
|
2868
|
+
//# sourceMappingURL=propositional.js.map
|