Patrick Lühne
2fa592576b
These reference-counted arguments were taken by reference, which made it necessary to clone them. If a reference-counted object is created for the sole purpose of being passed to one of these methods, it would be cloned unnecessarily. This changes the signatures to take these arguments by value, shifting the responsibility of cloning the reference-counted objects to the users of these methods. |
||
---|---|---|
.github/workflows | ||
src | ||
.gitignore | ||
Cargo.toml | ||
LICENSE.md | ||
README.md |
foliage
First-order logic with integer arithmetics in Rust
This Rust crate provides an abstract syntax tree for first-order formulas with integer arithmetics.
Supported Formulas
- Booleans values (
true
andfalse
) - predicates
- negated formulas
- comparisons of terms (<, ≤, >, ≥, =, ≠)
- implications and biconditionals
- conjunctions and disjunctions of formulas
- existentially and universally quantified formulas
Supported Terms
- Boolean values (
true
andfalse
) - integers
- strings
- special integers (infimum and supremum)
- symbolic functions
- variables
- binary operations (addition, subtraction, multiplication, division, modulo, exponentiation)
- unary operations (absolute value, numeric negation)