### 1 unstable release

0.1.0 | Feb 25, 2023 |
---|

#**1697** in Algorithms

**Custom license**

130KB

3K
SLoC

# Rust First Order Logic

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**:

- Construct and manipulate logical statements using the syntax of first-order logic.
- Define, and make assertions on, predicates and functions with self-consistent logical checking
- Expose an interface for integrating packages that implement (independent of this package) higher-level mathematical concepts (such as set theory) and interfacing with them through the language of FOL.

**Non-goals**:

- Implement any formalism of set theory, or expose the idea of a set.
- Automated theorem proving
- Provide a base on which higher-level mathematical packages can be implemented.

## Features

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 |

## Package Structure

### Syntax

Defines a strongly-typed grammar for first-order logic, together with a set of strongly-typed normal forms, and methods for converting between them.

### Semantics

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.

#### Dependencies

~0.7–1.2MB

~25K SLoC