2 releases
0.1.0-alpha.2 | Jul 1, 2024 |
---|---|
0.1.0-alpha.1 | Jun 28, 2024 |
#984 in Math
50 downloads per month
17KB
514 lines
Propositional Logic
This crate offers tools for defining and manipulating logical propositions using symbols and connectives like and, or, and implies. It simplifies the creation of logical expressions and the evaluation of their truth values within defined logical contexts.
Useful for educational purposes, AI projects, and any application requiring formal logical reasoning.
Examples
use propositional::prelude::*;
let rain = symbol!("it's raining");
let cloud = symbol!("it's cloudy");
let world = and!(
implies!(rain, cloud),
rain
);
println!("It is cloudy? {:?}", check(&world, &cloud));
//-> It is cloudy? Some(true)
Source: wikipedia.org
use propositional::prelude::*;
let rain = symbol!("It is raining.");
let hagrid = symbol!("Harry visited Hagrid.");
let dumbledore = symbol!("Harry visited Dumbledore.");
let knowledge = and!(
implies!(not!(rain), hagrid),
or!(hagrid, dumbledore),
not!(and!(hagrid, dumbledore)),
dumbledore
);
println!("It is raining? {:?}", check(&knowledge, &rain));
//-> It is raining? Some(true)
Source: CS50
Acknowledgments
Based on: CS50’s Introduction to Artificial Intelligence with Python.