6个版本 (重大更新)
使用旧的Rust 2015
0.5.0 | 2022年10月7日 |
---|---|
0.4.0 | 2020年8月19日 |
0.3.0 | 2019年8月6日 |
0.2.1 | 2018年2月25日 |
0.1.0 | 2018年2月23日 |
在算法类别中排名第2338
每月下载量21次
14KB
265 行
pocket_prover-set
为PocketProver推理集合属性的基础逻辑系统
extern crate pocket_prover;
extern crate pocket_prover_set;
use pocket_prover::*;
use pocket_prover_set::*;
fn main() {
println!("Result {}", Set::imply(
|s| s.fin_many,
|s| not(s.inf_many)
));
}
有4个信息位,用于推导所有其他属性
any
- 所有类型,包括未定义的类型uniq
- 唯一值fin_many
- 有限多个值inf_many
- 无限多个值
当所有位都设置为0时,集合为空(.none()
)。
当至少有一个位设置为1时,集合为非空(.some()
)。
当它为any
但既不是唯一、有限也不是无限时,集合为未定义。
以下是一个8个集合的证明示例
extern crate pocket_prover;
extern crate pocket_prover_set;
use pocket_prover::*;
use pocket_prover_set::*;
fn main() {
println!("Result {}", <(Set, Set, Set, Set, Set, Set, Set, Set)>::imply(
|sets| and(sets.uniqs(|xs| xorn(xs)), sets.0.uniq),
|sets| not(sets.7.uniq)
));
}
依赖项
~2MB
~48K SLoC