| Crates.io | first_order_logic |
| lib.rs | first_order_logic |
| version | 0.1.0 |
| created_at | 2023-02-25 20:09:11.228221+00 |
| updated_at | 2023-02-25 20:09:11.228221+00 |
| description | An implementation of first-order logic |
| homepage | |
| repository | |
| max_upload_size | |
| id | 794538 |
| size | 134,606 |
A Rust implementation of the syntax of First Order Logic, and a logical 'harness' for making self-consistent logical assertions on a domain of discourse.
Goals:
Non-goals:
| Feature | Description | Status |
|---|---|---|
| Logical Syntactics | ||
| FOL grammar | A typed grammar for FOL | ✅ |
| Prenex Normal Form | A typing for PNF and conversion from others forms | ✅ |
| Skolem Normal Form | A typing for SNF and and conversion from other forms | ✅ |
| Conjunctive Normal Form | A typing for CNF and conversion from other forms | ✅ |
| Logical Semantics | ||
| Predicates | Graph support for asserting logical predicates | WIP |
| Functions | Graph support for defining logical functions | WIP |
| Bound Variables | Graph support for creating named bound variables | WIP |
| Logical sentence integration | The ability to directly apply syntactic statements to the FOL graph | Future |
Defines a strongly-typed grammar for first-order logic, together with a set of strongly-typed normal forms, and methods for converting between them.
Defines an in-memory graph structure that keeps track of logical statements and allows for self-consistent logical checking.
The graph is rarely operated on directly but is managed by the public interface created by the many default predicates and functions.