Verification Backend API
include/Verification/Driver/Backend.h and lib/Verification/Driver/Backend.cpp
define the shared abstraction used to invoke different verification engines
through one API.
Main components:
PropertyClassandVerificationTaskdescribe the requested job.VerificationResultandVerificationResultInfostore standardized results.IDriveris the driver interface (namespacelotus::verification::driver).DriverRegistrymanages available implementations.
The built-in registry covers SeaHorn, Sifa, SymAbsAI, and Clam:
DriverRegistry::availableDrivers() returns {"seahorn", "sifa",
"symabs_ai", "clam"}.
Backend lifecycle
A frontend describes the property and input as a VerificationTask, selects
an implementation from DriverRegistry, and receives a normalized
VerificationResultInfo. This separation lets callers present one result
format even when engines have different command lines or witness formats.
Backend implementations should report unsupported tasks explicitly rather than
silently weakening the requested property.
DriverRegistry::create instantiates an IDriver by name, and
DriverRegistry::recommend lists the drivers that support a given
PropertyClass. Each IDriver exposes name, supports,
buildCommand, and parseResult.
See also Verification and Verification Driver Abstraction.