#first-order #logical #forms #logic #predicate #graph #syntax

first_order_logic

An implementation of first-order logic

1 unstable release

0.1.0 Feb 25, 2023

#1643 in Algorithms

21 downloads per month

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