chop-logic-core
v1.5.0
Published
Core classes, methods and functions for calculating logical formulas and constructing proofs within the Chop Logic project.
Maintainers
Readme
Chop Logic Core
Chop Logic Core is a TypeScript library providing core functions for working with symbolic logic. It is part of the broader Chop Logic project and offers essential utilities for logic processing and deduction.
✨ Features
- 🛠️ Factory methods for building logical symbols, operators, expressions, and well-formed formulas (WFF).
- 🔍 Tools for analyzing formulas:
- Variable extraction
- Sub-formula extraction
- Truth table generation
- Formula evaluation
- Well-formedness checks
- ✍️ Inference rules from:
- Hilbert-style Calculus
- Natural Deduction Calculus (Introduction & Elimination rules)
- 🧪 Utilities for formula validation and consistency checks.
- 🔣 Tokenizer for parsing and handling logical strings.
📦 Installation
You can install chop-logic-core via npm:
npm install chop-logic-coreOr using yarn:
yarn add chop-logic-core⚙️ Available Scripts
The following npm scripts are available for development and maintenance:
npm run build– Builds both ESM and CJS versions of the library.npm run prepare– Runs build and husky commands.npm run clean– Removes the generatedlibfolder.npm run format– Formats all supported files using Biome.npm run lint– Runs Biome linter to check for code style and quality issues.npm run lint:errors– Shows only error-level diagnostics from Biome (limited to 100).npm run lint:warnings– Shows only warning-level diagnostics from Biome (limited to 100 issues).npm run lint:fix– Automatically fixes Biome issues where possible.npm run test– Runs Jest in watch mode.npm run test:ci– Runs Jest in CI mode, allowing zero tests to pass.npm run test:coverage– Generates a test coverage report.npm run typecheck– Performs a full type check without emitting output.npm run docs– Generates documentation using typedoc.release:version– Bumps the version (patch,minor, ormajor), commits the change, creates a Git tag, and pushes tomain. Usage:npm run release:version patch
🔧 Usage
Creating and Evaluating Formulas
import {
createPropExpression,
createPropFormula,
calculatePropFormula,
} from "chop-logic-core";
// Create an implication: p → q
const formula = createPropFormula(createPropExpression("p => q"));
// Evaluate the formula with different truth assignments
const result1 = calculatePropFormula(formula, { p: true, q: true }); // true
const result2 = calculatePropFormula(formula, { p: true, q: false }); // falseBuilding Proofs
import { buildHilbertProof } from "chop-logic-core";
const proof = buildHilbertProof(goalFormula)
.addPremise(premiseA, "Given")
.addAxiom(axiomPayload, "Axiom II")
.addDerivedStep(derivedPayload, "Modus Ponens")
.build();
if (proof.isComplete()) {
console.log("Proof is valid!");
}Truth Table Generation
import { generatePropTruthTable } from "chop-logic-core";
// Generate a truth table for a formula
const formula = createPropFormula(createPropExpression("(~A & B)"));
const truthTable = generatePropTruthTable(formula);
// Returns all rows with different truth assignmentsValidations and Checks
import {
isConjunctionIntroductionApplicable,
PropFormula,
Operator
} from "chop-logic-core";
const formula1: PropFormula = { operator: Operator.Var, values: ["P"] };
const formula2: PropFormula = { operator: Operator.Var, values: ["Q"] };
// Check if inference rules are applicable to your formulas
const applicable = isConjunctionIntroductionApplicable([formula1, formula2]);For more comprehensive examples and detailed API documentation, visit the full documentation.
🛠 Contributing
Contributions are welcome! If you find a bug or have an idea for improvement, feel free to open an issue or submit a pull request. Please check the Contribution guide for additional info.
- Fork the repository.
- Clone your fork.
- Create a new feature branch.
- Implement and test your changes.
- Submit a pull request!
📄 License
This project is licensed under MIT. See the LICENSE file for details.
🔗 Links
- GitHub Repository: chop-logic-core
- Issue Tracker: Report Issues
- npm package: chop-logic-core
Let's build better logic tools together! 🚀
