Thanks to visit codestin.com
Credit goes to lib.rs

2 unstable releases

0.2.0 Dec 5, 2025
0.1.0 Dec 4, 2025

#1112 in Programming languages


Used in lolli-cli

MIT license

78KB
1.5K SLoC

lolli-prove

Proof search for the Lolli linear logic workbench.

This crate implements focused proof search for linear logic, supporting MALL (Multiplicative-Additive) and MELL (with exponentials).

Focused proof search (Andreoli, 1992) reduces non-determinism by:

  1. Classifying formulas as positive (async) or negative (sync)
  2. Applying invertible (negative) rules eagerly
  3. Choosing a positive formula to focus on
  4. Decomposing the focused formula completely

Example

use lolli_prove::Prover;
use lolli_core::{Formula, TwoSidedSequent};

let mut prover = Prover::new(100);

// Prove A ⊢ A (identity)
let seq = TwoSidedSequent::new(
    vec![Formula::atom("A")],
    vec![Formula::atom("A")],
);
let result = prover.prove_two_sided(&seq);
assert!(result.is_some());

lolli-prove

Proof search for the Lolli linear logic workbench.

Implements focused proof search for MALL (Multiplicative-Additive Linear Logic) and MELL (with exponentials).

Features

  • Focused sequent calculus (Andreoli, 1992)
  • Efficient proof search with caching
  • Support for MALL and MELL fragments

Usage

use lolli_prove::FocusedProver;
use lolli_core::Sequent;

let mut prover = FocusedProver::new(100);
let sequent = /* ... */;

if let Some(proof) = prover.prove(&sequent) {
    println!("Provable!");
}

Part of Lolli

This is part of the Lolli linear logic workbench.

License

MIT

Dependencies

~170–590KB
~14K SLoC