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.
- π οΈ 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.
You can install chop-logic-core via npm:
npm install chop-logic-coreOr using yarn:
yarn add chop-logic-coreThe 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
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 }); // falseimport { 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!");
}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 assignmentsimport {
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.
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!
This project is licensed under MIT. See the LICENSE file for details.
- GitHub Repository: chop-logic-core
- Issue Tracker: Report Issues
- npm package: chop-logic-core
- Changelog: Version History
Let's build better logic tools together! π