use super::common::{SmtCheckResult, SmtChecker, SmtObligation};
use crate::verify::{contract::Property, verifier::ForwardVisitResult, helpers::Checkpoint};
pub(crate) fn check<'tcx>(
checker: &SmtChecker<'tcx>,
checkpoint: &Checkpoint<'tcx>,
property: &Property<'tcx>,
forward: &ForwardVisitResult<'tcx>,
) -> SmtCheckResult {
let Some(smt_predicates) = checker.property_numeric_smt_predicates(checkpoint, property) else {
return SmtCheckResult::unknown("ValidNum predicate could not be lowered to SMT");
};
checker.prove_obligation(
checkpoint,
forward,
SmtObligation::Predicate {
predicates: smt_predicates,
},
)
}