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

3 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages