pub struct QuantifiedFormula {
pub term: TermId,
pub bound_vars: SmallVec<[(Spur, SortId); 4]>,
pub body: TermId,
pub is_universal: bool,
pub nesting_depth: u32,
pub instantiation_count: usize,
pub max_instantiations: usize,
pub generation: u32,
pub weight: f64,
pub patterns: Vec<Vec<TermId>>,
pub is_flattened: bool,
pub specialized_body: Option<TermId>,
}Expand description
A quantified formula tracked by MBQI
Fields§
§term: TermIdThe original quantified term
bound_vars: SmallVec<[(Spur, SortId); 4]>Bound variables (name, sort)
body: TermIdThe body of the quantifier
is_universal: boolWhether this is universal (true) or existential (false)
nesting_depth: u32Quantifier nesting depth
instantiation_count: usizeNumber of times this quantifier has been instantiated
max_instantiations: usizeMaximum allowed instantiations for this quantifier
generation: u32Generation number (for tracking term age)
weight: f64Weight for prioritization
patterns: Vec<Vec<TermId>>Patterns for E-matching (if available)
is_flattened: boolWhether this quantifier has been flattened
specialized_body: Option<TermId>Cached specialized body (None if not yet specialized)
Implementations§
Source§impl QuantifiedFormula
impl QuantifiedFormula
Sourcepub fn new(
term: TermId,
bound_vars: SmallVec<[(Spur, SortId); 4]>,
body: TermId,
is_universal: bool,
) -> Self
pub fn new( term: TermId, bound_vars: SmallVec<[(Spur, SortId); 4]>, body: TermId, is_universal: bool, ) -> Self
Create a new tracked quantified formula
Sourcepub fn with_params(
term: TermId,
bound_vars: SmallVec<[(Spur, SortId); 4]>,
body: TermId,
is_universal: bool,
max_instantiations: usize,
weight: f64,
) -> Self
pub fn with_params( term: TermId, bound_vars: SmallVec<[(Spur, SortId); 4]>, body: TermId, is_universal: bool, max_instantiations: usize, weight: f64, ) -> Self
Create with custom parameters
Sourcepub fn can_instantiate(&self) -> bool
pub fn can_instantiate(&self) -> bool
Check if we can instantiate more
Sourcepub fn record_instantiation(&mut self)
pub fn record_instantiation(&mut self)
Record an instantiation
Sourcepub fn priority_score(&self) -> f64
pub fn priority_score(&self) -> f64
Calculate priority score (higher = more important)
Trait Implementations§
Source§impl Clone for QuantifiedFormula
impl Clone for QuantifiedFormula
Source§fn clone(&self) -> QuantifiedFormula
fn clone(&self) -> QuantifiedFormula
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for QuantifiedFormula
impl RefUnwindSafe for QuantifiedFormula
impl Send for QuantifiedFormula
impl Sync for QuantifiedFormula
impl Unpin for QuantifiedFormula
impl UnwindSafe for QuantifiedFormula
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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