pub struct IntervalTABuilder {
lia_ta: LIAThresholdAutomaton,
solver_builder: SMTSolverBuilder,
target_constr: Vec<LIAVariableConstraint>,
}Expand description
Builder for generating interval threshold automata
This builder takes a linear integer arithmetic threshold automaton and derives all valid interval threshold automata.
An interval threshold automaton is a threshold automaton where the guards are abstracted to intervals and the order of the intervals is defined.
The builder generates all possible interval orders for the given threshold linear integer arithmetic automaton, and for each interval order, it generates the corresponding interval threshold automaton.
Fields§
§lia_ta: LIAThresholdAutomatonUnderlying threshold automaton
solver_builder: SMTSolverBuilderSolver builder for generating the interval orders
target_constr: Vec<LIAVariableConstraint>Additional variable constraints derived from the target specification
Implementations§
Source§impl IntervalTABuilder
impl IntervalTABuilder
Sourcepub fn new(
lia_ta: LIAThresholdAutomaton,
solver_builder: SMTSolverBuilder,
target_constr: Vec<LIAVariableConstraint>,
) -> Self
pub fn new( lia_ta: LIAThresholdAutomaton, solver_builder: SMTSolverBuilder, target_constr: Vec<LIAVariableConstraint>, ) -> Self
Create a new interval threshold automaton builder from a linear integer arithmetic threshold automaton
The solver builder is used to generate the interval orders.
Sourcepub fn build(
self,
) -> Result<impl Iterator<Item = IntervalThresholdAutomaton>, IntervalTATransformationError>
pub fn build( self, ) -> Result<impl Iterator<Item = IntervalThresholdAutomaton>, IntervalTATransformationError>
Generate all possible orders on the intervals and derive the interval automaton for every possible order
Sourcefn derive_interval_threshold_automaton(
lia_ta: LIAThresholdAutomaton,
interval_order: StaticIntervalOrder,
) -> IntervalThresholdAutomaton
fn derive_interval_threshold_automaton( lia_ta: LIAThresholdAutomaton, interval_order: StaticIntervalOrder, ) -> IntervalThresholdAutomaton
Given a fixed order, derive the abstract threshold automaton
Sourcefn discover_interval_boundaries_in_lia_variable_constraint(
guard: &LIAVariableConstraint,
order_builder: StaticIntervalOrderBuilder,
) -> Option<StaticIntervalOrderBuilder>
fn discover_interval_boundaries_in_lia_variable_constraint( guard: &LIAVariableConstraint, order_builder: StaticIntervalOrderBuilder, ) -> Option<StaticIntervalOrderBuilder>
Extract variable intervals from a rule guard of the threshold automaton
Returns None if a comparison guard has been discovered
Auto Trait Implementations§
impl Freeze for IntervalTABuilder
impl RefUnwindSafe for IntervalTABuilder
impl Send for IntervalTABuilder
impl Sync for IntervalTABuilder
impl Unpin for IntervalTABuilder
impl UnwindSafe for IntervalTABuilder
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more