npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

chop-logic-core

v1.5.0

Published

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

Readme

Chop Logic Core

License: MIT codecov Quality Gate Status Conventional Commits Checked with Biome npm

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! 🚀