class Z3::BoolExpr

Defined in:

z3/bool_expr.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(expr : LibZ3::Ast) #

[View source]

Instance Method Detail

def !=(other) #
Description copied from class Object

Returns true if this object is not equal to other.

By default this method is implemented as !(self == other) so there's no need to override this unless there's a more efficient way to do it.


[View source]
def &(other) #

[View source]
def ==(other) #
Description copied from class Reference

Returns false (other can only be a Value here).


[View source]
def ^(other) #

[View source]
def |(other) #

[View source]
def ~ #

[View source]
def const? #

[View source]
def iff(other) #

[View source]
def implies(other) #

[View source]
def inspect(io) #

[View source]
def ite(a : BoolExpr | Bool, b : BoolExpr | Bool) : BoolExpr #

[View source]
def ite(a : BitvecExpr, b : BitvecExpr | Int) : BitvecExpr #

Both branches have to be the same sort, and a Bitvec's sort includes its size, so the sizes have to match too - sort[] is what says so


[View source]
def ite(a : Int, b : BitvecExpr) : BitvecExpr #

[View source]
def ite(a : IntExpr | Int, b : IntExpr | Int) : IntExpr #

[View source]
def ite(a : Int | Float64 | BigRational, b : RealExpr) : RealExpr #

[View source]
def ite(a : RealExpr, b : RealExpr | Int | Float64 | BigRational) : RealExpr #

[View source]
def ite(a : Char, b : CharExpr) : CharExpr #

[View source]
def ite(a : CharExpr, b : CharExpr | Char) : CharExpr #

[View source]
def ite(a : String, b : StringExpr) : StringExpr #

[View source]
def ite(a : StringExpr, b : StringExpr | String) : StringExpr #

[View source]
def ite(a : Array, b : SeqExpr) : SeqExpr #

[View source]
def ite(a : SeqExpr, b : SeqExpr | Array) : SeqExpr #

Both branches have to be the same sort, and a Seq's sort includes its element sort, so sort[] is what says so


[View source]
def same_term?(other : AnyExpr) #

Whether this is the same term as other. Z3 hash-conses its expressions, so this is structural equality - Z3.int("a") + 1 built twice is one term. It is a named method rather than #== because #== builds a Z3 expression instead of answering a Crystal Bool - see the Limitations section of the README.


[View source]
def simplify #

[View source]
def sort #

[View source]
def to_b : Bool #

[View source]
def to_s(io) #

[View source]
def to_unsafe : LibZ3::Ast #

[View source]
def value : Bool #

Every sort which can hand back a Crystal object spells it #value


[View source]