use super::common::{SmtCheckResult, SmtChecker, SmtObligation};
use crate::verify::{contract::Property, helpers::Checkpoint, verifier::ForwardVisitResult};
pub(crate) fn check<'tcx>(
checker: &SmtChecker<'tcx>,
checkpoint: &Checkpoint<'tcx>,
property: &Property<'tcx>,
forward: &ForwardVisitResult<'tcx>,
) -> SmtCheckResult {
let Some(target) = checker.property_target(checkpoint, property) else {
return SmtCheckResult::unknown("NonNull target could not be resolved");
};
let obligation = SmtObligation::NonZero { place: target };
checker.prove_obligation(checkpoint, forward, obligation)
}