2 unstable releases
| 0.2.0 | Dec 5, 2025 |
|---|---|
| 0.1.0 | Dec 4, 2025 |
#1112 in Programming languages
Used in lolli-cli
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
Focused proof search (Andreoli, 1992) reduces non-determinism by:
- Classifying formulas as positive (async) or negative (sync)
- Applying invertible (negative) rules eagerly
- Choosing a positive formula to focus on
- 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