tvm_tirx::sym::analyzer

Struct Analyzer

Source
#[repr(C)]
pub struct Analyzer { /* private fields */ }

Implementations§

Source§

impl Analyzer

Source

pub fn new() -> Self

A fresh analyzer that knows no facts (sym.Analyzer).

Source

pub fn set_z3_default_fallback(&self, enabled: bool) -> Result<()>

Set whether default-strength queries try Z3 after native analysis fails.

Enabled by default and preserved by deep_clone. Stronger queries and direct Z3 APIs are unaffected. This does not clear accepted premises or solver state.

Source

pub fn deep_clone(&self) -> Result<Self>

A copy of the analyzer and the facts it knows (sym.AnalyzerClone).

Source

pub fn sync_constraint_context(&self, context: &ObjectRef) -> Result<()>

Synchronize with a sym.ConstraintContext captured at its current position.

The context is an opaque FFI object until typed constraint bindings are available. Switching contexts removes facts that are no longer present. Mutating the context after this call takes effect only after another synchronization.

Source

pub fn const_int_bound(&self, expr: impl IntoExpr) -> Result<ConstIntBound>

The constant bounds of expr (sym.AnalyzerConstIntBound).

Source

pub fn const_int_bound_is_bound(&self, var: impl Into<Var>) -> Result<bool>

Whether var has constant bounds recorded (sym.AnalyzerConstIntBoundIsBound).

Source

pub fn modular_set(&self, expr: impl IntoExpr) -> Result<ModularSet>

The modular set coeff * x + base of expr (sym.AnalyzerModularSet).

Source

pub fn int_set( &self, expr: impl IntoExpr, dom_map: Option<&Map<Var, IntSet>>, ) -> Result<IntSet>

The integer set expr covers, with the variables of dom_map over their sets (sym.AnalyzerIntSet).

Source

pub fn simplify(&self, expr: impl IntoExpr, steps: i32) -> Result<Expr>

Simplify expr, alternating the rewrite and canonical simplifiers steps times (sym.AnalyzerSimplify).

Source

pub fn rewrite_simplify(&self, expr: impl IntoExpr) -> Result<Expr>

Simplify expr by rewrite rules (sym.AnalyzerRewriteSimplify).

Source

pub fn canonical_simplify(&self, expr: impl IntoExpr) -> Result<Expr>

Simplify expr into canonical form (sym.AnalyzerCanonicalSimplify).

Source

pub fn rewrite_simplify_stats(&self) -> Result<RewriteSimplifierStats>

The counters of the rewrite simplifier (sym.AnalyzerGetRewriteSimplifyStats).

Source

pub fn reset_rewrite_simplify_stats(&self) -> Result<()>

Zero the counters of the rewrite simplifier (sym.AnalyzerResetRewriteSimplifyStats).

Source

pub fn set_maximum_rewrite_steps(&self, maximum: i64) -> Result<()>

Cap the rewrites of one rewrite simplification; 0 is no cap (sym.AnalyzerSetMaximumRewriteSteps).

Source

pub fn can_prove( &self, expr: impl IntoExpr, strength: ProofStrength, ) -> Result<bool>

Whether expr is provably true (sym.AnalyzerCanProve).

Source

pub fn can_prove_equal( &self, lhs: impl IntoExpr, rhs: impl IntoExpr, ) -> Result<bool>

Whether lhs == rhs is provably true (sym.AnalyzerCanProveEqual).

Source

pub fn try_compare( &self, lhs: impl IntoExpr, rhs: impl IntoExpr, ) -> Result<CompareResult>

The relation of lhs to rhs the known comparisons imply (sym.AnalyzerTryCompare).

Source

pub fn is_z3_enabled(&self) -> Result<bool>

Whether the analyzer was built with the Z3 prover (sym.AnalyzerIsZ3Enabled).

Source

pub fn smtlib2(&self, expr: Option<&Expr>) -> Result<String>

The facts the Z3 prover knows, and expr to prove if given, as an SMT-LIB2 script (sym.AnalyzerGetSMTLIB2).

Source

pub fn set_z3_timeout_ms(&self, timeout_ms: u32) -> Result<()>

Bound each Z3 proof by timeout_ms milliseconds (sym.AnalyzerSetZ3TimeoutMs).

Source

pub fn set_z3_rlimit(&self, rlimit: u32) -> Result<()>

Bound each Z3 proof by the resource limit rlimit (sym.AnalyzerSetZ3RLimit).

Source

pub fn z3_stats(&self) -> Result<String>

The statistics of the Z3 prover (sym.AnalyzerGetZ3Stats).

Trait Implementations§

Source§

impl AnyCompatible for Analyzer

Source§

unsafe fn is_undefined(field: *const Self) -> bool

Whether field, which holds a value of this type or all-zero bytes, holds all-zero bytes that are no value of this type, as a null object reference, a string of type index None or a zero device type: a field that a creator left undefined for reflection to set, as C++ UnsafeInit leaves a reference undefined (null). Unlike a C++ undefined reference, it is no value; a nullable reference is Option<T>, whose None is a defined value. Read more
Source§

fn type_str() -> String

the type string of the type
Source§

unsafe fn copy_to_any_view(src: &Self, data: &mut TVMFFIAny)

the value to copy to TVMFFIAny
Source§

unsafe fn check_any_strict(data: &TVMFFIAny) -> bool

Source§

unsafe fn copy_from_any_view_after_check(data: &TVMFFIAny) -> Self

Copy value from TVMFFIAny after checking caller must ensure that the value is compatible with the type
Source§

unsafe fn move_to_any(src: Self, data: &mut TVMFFIAny)

consume the value to move to Any
Source§

unsafe fn move_from_any_after_check(data: &mut TVMFFIAny) -> Self

the value to move from TVMFFIAny NOTE: pay very careful attention to avoid memory leak! Read more
Source§

unsafe fn try_cast_from_any_view(data: &TVMFFIAny) -> Result<Self, ()>

try to cast the value from AnyView
Source§

fn get_mismatch_type_info(data: &TVMFFIAny) -> String

Get the type key of a type when TryCastFromAnyView fails.
Source§

fn type_schema() -> String

The type schema of the type: the JSON object C++ TypeTraits<T>::TypeSchema writes, which the type schemas of functions and fields embed. Read more
Source§

fn to_any(&self) -> Any

Borrow self into an owned Any, increfing object-backed values. Read more
Source§

impl<'a> ArgIntoRef for &'a Analyzer

Source§

type Target = Analyzer

Source§

fn to_ref(&self) -> &Self::Target

Source§

impl ArgIntoRef for Analyzer

Source§

type Target = Analyzer

Source§

fn to_ref(&self) -> &Self::Target

Source§

impl Clone for Analyzer

Source§

fn clone(&self) -> Analyzer

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Deref for Analyzer

Source§

type Target = AnalyzerObj

The resulting type after dereferencing.
Source§

fn deref(&self) -> &AnalyzerObj

Dereferences the value.
Source§

impl From<&Analyzer> for Analyzer

Source§

fn from(value: &Analyzer) -> Self

Converts to this type from the input type.
Source§

impl<'a> IntoArgHolder for &'a Analyzer

Source§

impl IntoArgHolder for Analyzer

Source§

impl ObjectRefCore for Analyzer

Source§

type ContainerType = <ObjectArc<AnalyzerObj> as Deref>::Target

Source§

fn data(this: &Self) -> &ObjectArc<Self::ContainerType>

Source§

fn into_data(this: Self) -> ObjectArc<Self::ContainerType>

Source§

unsafe fn from_data(data: ObjectArc<Self::ContainerType>) -> Self

Construct a reference view from an owning container handle. Read more
Source§

fn same_as<Other>(&self, other: &Other) -> bool
where Other: ObjectRefCore,

Return whether two object references point to the same allocation.
Source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: ObjectCore,

Borrow the underlying object as T when its runtime type is T or a subtype. Read more
Source§

impl TryFrom<Any> for Analyzer

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: Any) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'a> TryFrom<AnyView<'a>> for Analyzer

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(value: AnyView<'a>) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArgType for T
where T: ObjectRefCore + AnyCompatible + 'static,

Source§

fn check(value: &TVMFFIAny) -> bool

Whether value, which is not None, is accepted (C++ CheckAnyStrict).
Source§

fn type_str() -> String

The expected type, for an error (C++ TypeStr).
Source§

fn mismatch(value: &TVMFFIAny) -> String

The rejected value, for an error (C++ GetMismatchTypeInfo): its type key.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ObjectRefCast for T

Source§

fn try_cast<B>(self) -> Result<B, Error>

Consume self and rewrap the underlying object as B without copying.
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.