Struct z3::Sort [−][src]
pub struct Sort<'ctx> { /* fields omitted */ }
Expand description
Sorts represent the various ‘types’ of Ast
s.
Implementations
Create an enumeration sort.
Creates a Z3 enumeration sort with the given name
.
The enum variants will have the names in enum_names
.
Three things are returned:
- the created
Sort
, - constants to create the variants,
- and testers to check if a value is equal to a variant.
Examples
let (colors, color_consts, color_testers) = Sort::enumeration( &ctx, "Color".into(), &[ "Red".into(), "Green".into(), "Blue".into(), ], ); let red_const = color_consts[0].apply(&[]); let red_tester = &color_testers[0]; let eq = red_tester.apply(&[&red_const]); assert_eq!(solver.check(), SatResult::Sat); let model = solver.get_model().unwrap();; assert!(model.eval(&eq, true).unwrap().as_bool().unwrap().as_bool().unwrap());
Returns Some(e)
where e
is the number of exponent bits if the sort
is a FloatingPoint
and None
otherwise.
Returns Some(s)
where s
is the number of significand bits if the sort
is a FloatingPoint
and None
otherwise.
Return if this Sort is for an Array
or a Set
.
Examples
let bool_sort = Sort::bool(&ctx); let int_sort = Sort::int(&ctx); let array_sort = Sort::array(&ctx, &int_sort, &bool_sort); let set_sort = Sort::set(&ctx, &int_sort); assert!(array_sort.is_array()); assert!(set_sort.is_array()); assert!(!int_sort.is_array()); assert!(!bool_sort.is_array());
Return the Sort
of the domain for Array
s of this Sort
.
If this Sort
is an Array
or Set
, it has a domain sort, so return it.
If this is not an Array
or Set
Sort
, return None
.
Examples
let bool_sort = Sort::bool(&ctx); let int_sort = Sort::int(&ctx); let array_sort = Sort::array(&ctx, &int_sort, &bool_sort); let set_sort = Sort::set(&ctx, &int_sort); assert_eq!(array_sort.array_domain().unwrap(), int_sort); assert_eq!(set_sort.array_domain().unwrap(), int_sort); assert!(int_sort.array_domain().is_none()); assert!(bool_sort.array_domain().is_none());
Return the Sort
of the range for Array
s of this Sort
.
If this Sort
is an Array
it has a range sort, so return it.
If this Sort
is a Set
, it has an implied range sort of Bool
.
If this is not an Array
or Set
Sort
, return None
.
Examples
let bool_sort = Sort::bool(&ctx); let int_sort = Sort::int(&ctx); let array_sort = Sort::array(&ctx, &int_sort, &bool_sort); let set_sort = Sort::set(&ctx, &int_sort); assert_eq!(array_sort.array_range().unwrap(), bool_sort); assert_eq!(set_sort.array_range().unwrap(), bool_sort); assert!(int_sort.array_range().is_none()); assert!(bool_sort.array_range().is_none());
Trait Implementations
Auto Trait Implementations
impl<'ctx> RefUnwindSafe for Sort<'ctx>
impl<'ctx> UnwindSafe for Sort<'ctx>
Blanket Implementations
Mutably borrows from an owned value. Read more