pub struct PredicateFrames {
pub pred: PredId,
/* private fields */
}Expand description
Frame sequence for a single predicate transformer
Fields§
§pred: PredIdThe predicate this frame sequence is for
Implementations§
Source§impl PredicateFrames
impl PredicateFrames
Sourcepub fn num_frames(&self) -> u32
pub fn num_frames(&self) -> u32
Get the number of frames
Sourcepub fn add_lemma(&mut self, formula: TermId, level: u32) -> LemmaId
pub fn add_lemma(&mut self, formula: TermId, level: u32) -> LemmaId
Add a lemma at a given level
Sourcepub fn add_background(&mut self, formula: TermId) -> LemmaId
pub fn add_background(&mut self, formula: TermId) -> LemmaId
Add a background invariant
Sourcepub fn get_lemma_mut(&mut self, id: LemmaId) -> Option<&mut Lemma>
pub fn get_lemma_mut(&mut self, id: LemmaId) -> Option<&mut Lemma>
Get a mutable lemma by ID
Sourcepub fn active_lemmas(&self) -> impl Iterator<Item = &Lemma>
pub fn active_lemmas(&self) -> impl Iterator<Item = &Lemma>
Get all active lemmas
Sourcepub fn lemmas_at_level(&self, level: u32) -> impl Iterator<Item = &Lemma>
pub fn lemmas_at_level(&self, level: u32) -> impl Iterator<Item = &Lemma>
Get lemmas at a specific level
Sourcepub fn lemmas_geq_level(&self, level: u32) -> impl Iterator<Item = &Lemma>
pub fn lemmas_geq_level(&self, level: u32) -> impl Iterator<Item = &Lemma>
Get lemmas at or above a level (for frame queries)
Sourcepub fn inductive_lemmas(&self) -> impl Iterator<Item = &Lemma>
pub fn inductive_lemmas(&self) -> impl Iterator<Item = &Lemma>
Get all inductive lemmas
Sourcepub fn background_invariants(&self) -> impl Iterator<Item = &Lemma>
pub fn background_invariants(&self) -> impl Iterator<Item = &Lemma>
Get background invariants
Sourcepub fn propagate(&mut self, id: LemmaId, new_level: u32) -> bool
pub fn propagate(&mut self, id: LemmaId, new_level: u32) -> bool
Propagate a lemma to a higher level
Sourcepub fn propagate_to_infinity(&mut self, from_level: u32)
pub fn propagate_to_infinity(&mut self, from_level: u32)
Propagate lemmas to infinity (inductive)
Sourcepub fn propagate_level(&mut self, level: u32) -> bool
pub fn propagate_level(&mut self, level: u32) -> bool
Try to propagate all lemmas at a level to the next level Returns true if all lemmas were successfully propagated
Sourcepub fn deactivate(&mut self, id: LemmaId)
pub fn deactivate(&mut self, id: LemmaId)
Deactivate a lemma (mark as subsumed)
Sourcepub fn num_active_lemmas(&self) -> usize
pub fn num_active_lemmas(&self) -> usize
Get number of active lemmas
Sourcepub fn num_inductive(&self) -> usize
pub fn num_inductive(&self) -> usize
Get number of inductive lemmas
Sourcepub fn remove_subsumed_syntactic(&mut self) -> usize
pub fn remove_subsumed_syntactic(&mut self) -> usize
Remove subsumed lemmas using syntactic subsumption Returns the number of lemmas removed
Sourcepub fn sort_lemmas(&mut self)
pub fn sort_lemmas(&mut self)
Sort lemmas by level (for efficient queries)
Sourcepub fn compress(&mut self, keep_above_level: u32) -> usize
pub fn compress(&mut self, keep_above_level: u32) -> usize
Compress frames by removing lemmas at lower levels that have been pushed This is a memory optimization to reduce the number of stored lemmas Returns the number of lemmas removed
Sourcepub fn memory_stats(&self) -> (usize, usize, usize)
pub fn memory_stats(&self) -> (usize, usize, usize)
Get memory usage statistics
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PredicateFrames
impl RefUnwindSafe for PredicateFrames
impl Send for PredicateFrames
impl Sync for PredicateFrames
impl Unpin for PredicateFrames
impl UnsafeUnpin for PredicateFrames
impl UnwindSafe for PredicateFrames
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> 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>
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