pub enum ProofRes {
Proved,
Unprovable,
Unknown(UnknownReason),
}Expand description
The result of attempting to prove a theorem.
After calling Problem::solve, Vampire returns one of three possible results:
ProofRes::Proved: The conjecture was successfully proved from the axiomsProofRes::Unprovable: The axioms are insufficient to prove the conjectureProofRes::Unknown: Vampire could not determine if the axioms imply the conjecture
§Examples
use vampire_prover::{Function, Predicate, Problem, ProofRes, Options, forall};
let p = Predicate::new("P", 1);
let x = Function::constant("x");
let result = Problem::new(Options::new())
.with_axiom(p.with(x))
.conjecture(p.with(x))
.solve();
match result {
ProofRes::Proved => println!("Theorem proved!"),
ProofRes::Unprovable => println!("Counterexample found"),
ProofRes::Unknown(reason) => println!("Unknown: {:?}", reason),
}Variants§
Proved
The conjecture was successfully proved from the axioms.
Unprovable
The axioms are insufficient to prove the conjecture.
Vampire has determined that the given axioms do not imply the conjecture. Note that this does not mean the conjecture is false - it could still be true or false, but the provided axioms alone cannot establish it.
Unknown(UnknownReason)
Vampire could not determine whether the axioms imply the conjecture.
This can happen for several reasons, detailed in UnknownReason.
Trait Implementations§
impl Copy for ProofRes
impl Eq for ProofRes
impl StructuralPartialEq for ProofRes
Auto Trait Implementations§
impl Freeze for ProofRes
impl RefUnwindSafe for ProofRes
impl Send for ProofRes
impl Sync for ProofRes
impl Unpin for ProofRes
impl UnsafeUnpin for ProofRes
impl UnwindSafe for ProofRes
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more