2 个版本

0.1.0-alpha.22024年7月1日
0.1.0-alpha.12024年6月28日

#615 in 数学

MIT 协议

17KB
514

命题逻辑

此包提供使用符号和连接词(如和、或、蕴含)定义和操作逻辑命题的工具。它简化了逻辑表达式的创建和它们在定义的逻辑环境中的真值评估。

适用于教育目的、人工智能项目和任何需要形式逻辑推理的应用。

示例

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)

来源: 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)

来源: CS50

致谢

基于:CS50 的使用 Python 的人工智能入门。

无运行时依赖