2 个版本
0.5.2 | 2023 年 7 月 6 日 |
---|---|
0.5.1 | 2023 年 5 月 11 日 |
#4 in #真
39KB
649 行
predicate-checker
Predicate-checker 是一个用 Rust 编写的库,其唯一目的是检查给定的谓词 A
的有效性是否意味着谓词 B
的有效性。
例如,给定谓词 A: x > 5
和 B: x > 6
,该库可以使用 Predicate::implies()
函数验证,对于所有 x
的值,如果 A
为真,则 B
也为真(在这个例子中,它是;因此 A.implies(B)
函数将返回 Implication::Total
)。
注意:这个库不是由数学家制作的,也不是一个好的程序员,或者一个好的园丁制作的。结果不是 100% 真实的,不应用于比小型项目更重要的事情。抱歉!
用法
Predicate
枚举表示一个布尔表达式。您可以通过组装其他 Predicate<T>
(T
是一个数值类型)来“手动”构建一个,或者使用内置解析器
use predicatechecker::Predicate;
let predicate = Predicate::from("(x > 2) && (y == 4) && (z < 10)").unwrap(); // returns a Predicate<f64>
现在,您可以检查一个谓词是否“蕴含”另一个
use predicatechecker::Predicate;
fn main() {
let a = Predicate::from("(x > 2) && (y == 4) && (z < 10)").unwrap();
let b = Predicate::from("(x > 0) && (y > 2)").unwrap();
assert_eq!(a.implies(&b), Implication::Total);
}
implies
函数可以返回 3 个不同的值:Implication::Total
、Implication::Partial
或 Implication::Inexistant
Total
蕴含意味着任何验证 A 的值也将验证 B。Partial
蕴含意味着只有验证 A 的值的子集将验证 B。这可以发生在Or
谓词上,其中只有两个谓词之一蕴含 B。Inexistant
蕴含意味着 A 通过值 x 的验证不足以知道 x 也验证 B。
安装
将其添加到您的项目的最简单方法是使用 cargo。将其添加到您的 Cargo.toml
文件中
[dependencies]
predicatechecker = "0.5.1"
您还可以克隆此仓库并将其用于自己的项目(请参阅《Cargo 书》中的 指定依赖关系)。
许可证
本项目采用 Mozilla Public License 2.0 许可。请参阅 LICENSE.txt
。
依赖项
~465KB