extern crate pocket_prover;
use pocket_prover::*;
fn main() {
println!("Quantfiers:");
let ps: Vec<fn(u8) -> u64> = vec![
|_: u8| T,
|_: u8| F,
|x: u8| prop(x > 5),
];
println!(" universal instantiation (UI): {}", ps.iter().all(|p| {
all(&|c: u8| imply(
all(&|x: u8| p(x)),
p(c)
)) == T
}));
println!(" universal generalization (UG): {}", ps.iter().all(|p| {
imply(
all(&|c: u8| p(c)),
all(&|x: u8| p(x))
) == T
}));
println!(" existential instantiation (EI): {}", ps.iter().all(|p| {
all(&|c: u8| imply(
p(c),
any(&|x: u8| p(x))
)) == T
}));
println!(" existential generalization (EG): {}", ps.iter().all(|p| {
imply(
any(&|c: u8| p(c)),
any(&|x: u8| p(x))
) == T
}));
}