Zee3.StdLib
(zee3 v0.3.0)
Copy Markdown
Defines the functions and macros which are available
inside the body of the Zee3.program/2 macro.
The functions of this module are all pure in the sense
that they don't mutate the state of the solver.
All the functions (but not necessarily the macros) return
a Zee3.Smt2 term which will be handled correctly by
the stateful special forms inside the program.
The result of these functions can always be serialized
into syntactically correct SMT-LIB2 code, which can be
sent directly to the Z3 solver using the low-level API.
Summary
Functions
Multiplication (compiles to variadic chain if possible).
Addition (compiles to variadic chain if possible).
Unary arithmetic negation.
Binary/variadic subtraction.
Division (compiles to variadic chain if possible).
Check that two terms are distinct.
Less than (compiles to variadic chain if possible).
Less than or equal (compiles to variadic chain if possible).
Check that two terms are equal.
Greater than (compiles to variadic chain if possible).
Greater than or equal (compiles to variadic chain if possible).
Absolute value.
Checks that all the arguments are distinct.
Check if all the arguments are equal.
Logical AND (compiles to variadic chain if possible).
Addition.
Bitwise AND.
Arithmetic shift right.
Bit vector comparison.
Logical shift right.
Multiplication.
Bitwise NAND.
Two's complement negation.
Bitwise NOR.
Bitwise NOT.
Bitwise OR.
Signed division.
Signed greater than or equal.
Signed greater than.
Logical shift left.
Signed less than or equal.
Signed less than.
Signed modulo.
Signed remainder.
Subtraction.
Unsigned division.
Unsigned greater than or equal.
Unsigned greater than.
Unsigned less than or equal.
Unsigned less than.
Unsigned remainder.
Bitwise XNOR.
Bitwise XOR.
Concatenate two bitvectors.
Mutually distinct (variadic).
Euclidean integer division.
Extract sub-vector (indices passed in symbol).
Floating point constructor from BVs.
Absolute value.
Addition (requires rounding mode).
Division (requires rounding mode).
Equality.
Fused multiply-add (requires rounding mode).
Greater than or equal.
Greater than.
Is infinite.
Is Not a Number.
Is negative.
Is normal.
Is positive.
Is subnormal.
Is zero.
Less than or equal.
Less than.
Maximum.
Minimum.
Multiplication (requires rounding mode).
Negation.
Remainder.
Round to integral (requires rounding mode).
Square root (requires rounding mode).
Subtraction (requires rounding mode).
Convert to real.
Convert to signed bitvector (requires rounding mode).
Convert to unsigned bitvector (requires rounding mode).
A reimplementation of the Kernel.if/2 macro that
raises an error if one tries to pick a branch based
on a Zee3.Smt2 value.
Convert integer to string.
Check if real is an integer.
If-then-else conditional.
Euclidean integer remainder.
Logical negation.
Logical OR (variadic).
Multiply the arguments.
Regex language of all strings.
Regex matching any single character.
Regex complement.
Regex concatenation (variadic).
Regex intersection (variadic).
Kleene plus.
Kleene star.
Empty regex language.
Optional regex.
Character range.
Regex union (variadic).
Read value from array at index.
Write value to array at index.
String concatenation (variadic).
Lexicographical less than.
Lexicographical less than or equal.
Check if string contains substring.
Check if string matches regex.
Find index of substring after offset.
String length.
Check if string is prefix.
Replace first occurrence.
Replace all occurrences.
Replace first regex match.
Replace all regex matches.
Extract substring (string, offset, length).
Check if string is suffix.
Convert string to integer.
Convert string to regex.
Sum the arguments.
Convert to float (requires rounding mode).
Convert unsigned BV to float.
Cast real to integer.
Cast integer to real.
Logical exclusive OR (variadic).
Functions
@spec Zee3.Smt2.smt2_like() * Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Multiplication (compiles to variadic chain if possible).
Theories: Ints, Reals.
@spec Zee3.Smt2.smt2_like() + Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Addition (compiles to variadic chain if possible).
Theories: Ints, Reals.
@spec -Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Unary arithmetic negation.
Theories: Ints, Reals.
@spec Zee3.Smt2.smt2_like() - Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Binary/variadic subtraction.
Theories: Ints, Reals.
@spec Zee3.Smt2.smt2_like() / Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Division (compiles to variadic chain if possible).
Theories: Reals.
@spec Zee3.Smt2.smt2_like() != Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Check that two terms are distinct.
@spec Zee3.Smt2.smt2_like() < Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Less than (compiles to variadic chain if possible).
Theories: Ints, Reals.
@spec Zee3.Smt2.smt2_like() <= Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Less than or equal (compiles to variadic chain if possible).
Theories: Ints, Reals.
@spec Zee3.Smt2.smt2_like() == Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Check that two terms are equal.
@spec Zee3.Smt2.smt2_like() > Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Greater than (compiles to variadic chain if possible).
Theories: Ints, Reals.
@spec Zee3.Smt2.smt2_like() >= Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Greater than or equal (compiles to variadic chain if possible).
Theories: Ints, Reals.
@spec abs(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Absolute value.
Theories: Ints.
@spec all_distinct([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Checks that all the arguments are distinct.
@spec all_equal([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Check if all the arguments are equal.
@spec Zee3.Smt2.smt2_like() and Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Logical AND (compiles to variadic chain if possible).
Theories: Core.
@spec bvadd(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Addition.
Theories: FixedSizeBitVectors.
@spec bvand(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bitwise AND.
Theories: FixedSizeBitVectors.
@spec bvashr(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Arithmetic shift right.
Theories: FixedSizeBitVectors.
@spec bvcomp(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bit vector comparison.
Theories: FixedSizeBitVectors.
@spec bvlshr(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Logical shift right.
Theories: FixedSizeBitVectors.
@spec bvmul(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Multiplication.
Theories: FixedSizeBitVectors.
@spec bvnand(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bitwise NAND.
Theories: FixedSizeBitVectors.
@spec bvneg(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Two's complement negation.
Theories: FixedSizeBitVectors.
@spec bvnor(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bitwise NOR.
Theories: FixedSizeBitVectors.
@spec bvnot(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bitwise NOT.
Theories: FixedSizeBitVectors.
@spec bvor(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bitwise OR.
Theories: FixedSizeBitVectors.
@spec bvsdiv(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Signed division.
Theories: FixedSizeBitVectors.
@spec bvsge(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Signed greater than or equal.
Theories: FixedSizeBitVectors.
@spec bvsgt(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Signed greater than.
Theories: FixedSizeBitVectors.
@spec bvshl(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Logical shift left.
Theories: FixedSizeBitVectors.
@spec bvsle(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Signed less than or equal.
Theories: FixedSizeBitVectors.
@spec bvslt(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Signed less than.
Theories: FixedSizeBitVectors.
@spec bvsmod(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Signed modulo.
Theories: FixedSizeBitVectors.
@spec bvsrem(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Signed remainder.
Theories: FixedSizeBitVectors.
@spec bvsub(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Subtraction.
Theories: FixedSizeBitVectors.
@spec bvudiv(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Unsigned division.
Theories: FixedSizeBitVectors.
@spec bvuge(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Unsigned greater than or equal.
Theories: FixedSizeBitVectors.
@spec bvugt(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Unsigned greater than.
Theories: FixedSizeBitVectors.
@spec bvule(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Unsigned less than or equal.
Theories: FixedSizeBitVectors.
@spec bvult(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Unsigned less than.
Theories: FixedSizeBitVectors.
@spec bvurem(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Unsigned remainder.
Theories: FixedSizeBitVectors.
@spec bvxnor(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bitwise XNOR.
Theories: FixedSizeBitVectors.
@spec bvxor(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Bitwise XOR.
Theories: FixedSizeBitVectors.
@spec concat(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Concatenate two bitvectors.
Theories: FixedSizeBitVectors.
@spec distinct([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Mutually distinct (variadic).
Theories: Core.
@spec div(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Euclidean integer division.
Theories: Ints.
@spec extract(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Extract sub-vector (indices passed in symbol).
Theories: FixedSizeBitVectors.
@spec fp(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Floating point constructor from BVs.
Theories: FloatingPoint.
@spec fp_abs(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Absolute value.
Theories: FloatingPoint.
@spec fp_add(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Addition (requires rounding mode).
Theories: FloatingPoint.
@spec fp_div(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Division (requires rounding mode).
Theories: FloatingPoint.
@spec fp_eq(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Equality.
Theories: FloatingPoint.
@spec fp_fma( Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like() ) :: Zee3.Smt2.t()
Fused multiply-add (requires rounding mode).
Theories: FloatingPoint.
@spec fp_geq(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Greater than or equal.
Theories: FloatingPoint.
@spec fp_gt(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Greater than.
Theories: FloatingPoint.
@spec fp_isInfinite(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Is infinite.
Theories: FloatingPoint.
@spec fp_isNaN(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Is Not a Number.
Theories: FloatingPoint.
@spec fp_isNegative(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Is negative.
Theories: FloatingPoint.
@spec fp_isNormal(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Is normal.
Theories: FloatingPoint.
@spec fp_isPositive(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Is positive.
Theories: FloatingPoint.
@spec fp_isSubnormal(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Is subnormal.
Theories: FloatingPoint.
@spec fp_isZero(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Is zero.
Theories: FloatingPoint.
@spec fp_leq(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Less than or equal.
Theories: FloatingPoint.
@spec fp_lt(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Less than.
Theories: FloatingPoint.
@spec fp_max(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Maximum.
Theories: FloatingPoint.
@spec fp_min(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Minimum.
Theories: FloatingPoint.
@spec fp_mul(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Multiplication (requires rounding mode).
Theories: FloatingPoint.
@spec fp_neg(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Negation.
Theories: FloatingPoint.
@spec fp_rem(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Remainder.
Theories: FloatingPoint.
@spec fp_roundToIntegral(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Round to integral (requires rounding mode).
Theories: FloatingPoint.
@spec fp_sqrt(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Square root (requires rounding mode).
Theories: FloatingPoint.
@spec fp_sub(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Subtraction (requires rounding mode).
Theories: FloatingPoint.
@spec fp_to_real(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert to real.
Theories: FloatingPoint.
@spec fp_to_sbv(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert to signed bitvector (requires rounding mode).
Theories: FloatingPoint.
@spec fp_to_ubv(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert to unsigned bitvector (requires rounding mode).
Theories: FloatingPoint.
A reimplementation of the Kernel.if/2 macro that
raises an error if one tries to pick a branch based
on a Zee3.Smt2 value.
If you're trying to pick a branch based on a Zee3.Smt2
value, you're probably making a mistake because all
Zee3.Smt2 terms are considered true by the normal
Kernel.if/2 macro.
If you want to pick a branch based on a condition inside
Z3, you want to use the ite/3 function instead.
This macro is automatically imported inside the body
of the Zee3.program do ... end macro.
Apart from raising an error on Zee3.Smt2 terms,
it behaves exactly as the Kernel.if/2 macro.
@spec int_to_str(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert integer to string.
Theories: Strings.
@spec is_int(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Check if real is an integer.
Theories: Reals_Ints.
@spec ite(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
If-then-else conditional.
Theories: Core.
@spec mod(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Euclidean integer remainder.
Theories: Ints.
@spec not Zee3.Smt2.smt2_like() :: Zee3.Smt2.t()
Logical negation.
Theories: Core.
@spec or([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Logical OR (variadic).
Theories: Core.
@spec product([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Multiply the arguments.
Regex language of all strings.
Theories: Strings.
Regex matching any single character.
Theories: Strings.
@spec re_comp(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Regex complement.
Theories: Strings.
@spec re_concat([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Regex concatenation (variadic).
Theories: Strings.
@spec re_inter([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Regex intersection (variadic).
Theories: Strings.
@spec re_kleene_plus(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Kleene plus.
Theories: Strings.
@spec re_kleene_star(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Kleene star.
Theories: Strings.
Empty regex language.
Theories: Strings.
@spec re_opt(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Optional regex.
Theories: Strings.
@spec re_range(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Character range.
Theories: Strings.
@spec re_union([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Regex union (variadic).
Theories: Strings.
@spec select(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Read value from array at index.
Theories: ArraysEx.
@spec store(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Write value to array at index.
Theories: ArraysEx.
@spec str_ ++ [Zee3.Smt2.smt2_like()] :: Zee3.Smt2.t()
String concatenation (variadic).
Theories: Strings.
@spec str_<(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Lexicographical less than.
Theories: Strings.
@spec str_<=(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Lexicographical less than or equal.
Theories: Strings.
@spec str_contains(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Check if string contains substring.
Theories: Strings.
@spec str_in_re(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Check if string matches regex.
Theories: Strings.
@spec str_indexof(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Find index of substring after offset.
Theories: Strings.
@spec str_len(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
String length.
Theories: Strings.
@spec str_prefixof(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Check if string is prefix.
Theories: Strings.
@spec str_replace(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Replace first occurrence.
Theories: Strings.
@spec str_replace_all( Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like() ) :: Zee3.Smt2.t()
Replace all occurrences.
Theories: Strings.
@spec str_replace_re( Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like() ) :: Zee3.Smt2.t()
Replace first regex match.
Theories: Strings.
@spec str_replace_re_all( Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like() ) :: Zee3.Smt2.t()
Replace all regex matches.
Theories: Strings.
@spec str_substr(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Extract substring (string, offset, length).
Theories: Strings.
@spec str_suffixof(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Check if string is suffix.
Theories: Strings.
@spec str_to_int(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert string to integer.
Theories: Strings.
@spec str_to_re(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert string to regex.
Theories: Strings.
@spec sum([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Sum the arguments.
@spec to_fp(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert to float (requires rounding mode).
Theories: FloatingPoint.
@spec to_fp_unsigned(Zee3.Smt2.smt2_like(), Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Convert unsigned BV to float.
Theories: FloatingPoint.
@spec to_int(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Cast real to integer.
Theories: Reals_Ints.
@spec to_real(Zee3.Smt2.smt2_like()) :: Zee3.Smt2.t()
Cast integer to real.
Theories: Reals_Ints.
@spec xor([Zee3.Smt2.smt2_like()]) :: Zee3.Smt2.t()
Logical exclusive OR (variadic).
Theories: Core.