Skip to content

Repository files navigation

Chop Logic Core

License: MIT codecov Quality Gate Status Conventional Commits Checked with Biome npm Keep a changelog Semantic versioning Mutation testing badge

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-core

Or 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 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

πŸ”§ 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 }); // false

Building 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 assignments

Validations 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.

  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!

πŸ“„ License

This project is licensed under MIT. See the LICENSE file for details.

πŸ”— Links


Let's build better logic tools together! πŸš€

About

Core classes, methods and functions for calculating logical formulas and constructing proofs within the Chop Logic project.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages