Core classes, methods and functions for calculating logical formulas and constructing proofs within the Chop Logic project.
npm install 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.
- ๐ ๏ธ 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:
``sh`
npm install chop-logic-core
Or using yarn:
`sh`
yarn add chop-logic-core
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 generated lib folder.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, or major), commits the change, creates a Git tag, and pushes to main. Usage: npm run release:version patch
`ts
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 }); // false
`
`ts
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!");
}
`
`ts
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 assignments
`
`ts
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.
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.
1. Fork the repository.
2. Clone your fork.
3. Create a new feature branch.
4. Implement and test your changes.
5. 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! ๐