Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.symbol name) (CProverGOTO.Expr.Identifier.Nullary.constant value) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.symbol name) (CProverGOTO.Expr.Identifier.Nullary.nondet name_1) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.symbol name) CProverGOTO.Expr.Identifier.Nullary.nil = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.constant value) (CProverGOTO.Expr.Identifier.Nullary.symbol name) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.constant value) (CProverGOTO.Expr.Identifier.Nullary.nondet name) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.constant value) CProverGOTO.Expr.Identifier.Nullary.nil = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.nondet name) (CProverGOTO.Expr.Identifier.Nullary.symbol name_1) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.nondet name) (CProverGOTO.Expr.Identifier.Nullary.constant value) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq (CProverGOTO.Expr.Identifier.Nullary.nondet name) CProverGOTO.Expr.Identifier.Nullary.nil = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq CProverGOTO.Expr.Identifier.Nullary.nil (CProverGOTO.Expr.Identifier.Nullary.symbol name) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq CProverGOTO.Expr.Identifier.Nullary.nil (CProverGOTO.Expr.Identifier.Nullary.constant value) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq CProverGOTO.Expr.Identifier.Nullary.nil (CProverGOTO.Expr.Identifier.Nullary.nondet name) = isFalse ⋯
- CProverGOTO.Expr.Identifier.instDecidableEqNullary.decEq CProverGOTO.Expr.Identifier.Nullary.nil CProverGOTO.Expr.Identifier.Nullary.nil = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
- UnaryMinus : Unary
unary_minus_exprt - UnaryPlus : Unary
unary_plus_exprt - Not : Unary
not_exprt - Bitnot : Unary
bitnot_exprt - Old : Unary
history_exprtwithID_old - ArrayOf : Unary
array_of_exprt(constant map/array) - Typecast : Unary
typecast_exprt - UnaryMinusOverflow : Unary
unary_minus_overflow_exprt - Dereference : Unary
dereference_exprt(*p)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Representation of identifiers specific to binary expressions, binary_exprt.
- Div : Binary
div_exprt - Mod : Binary
mod_exprt - Minus : Binary
minus_exprt - Shl : Binary
shl_exprt - Ashr : Binary
ashr_exprt - Lshr : Binary
lshr_exprt - PlusOverflow : Binary
plus_overflow_exprt - MinusOverflow : Binary
minus_overflow_exprt - MultOverflow : Binary
mult_overflow_exprt - Implies : Binary
implies_exprt - Index : Binary
index_exprt(map/array select) - Forall : Binary
forall_exprt - Exists : Binary
exists_exprt - Gt : Binary
- Lt : Binary
- Ge : Binary
- Le : Binary
- Equal : Binary
- NotEqual : Binary
- Bitand : Binary
bitand_exprt - Bitor : Binary
bitor_exprt - Bitxor : Binary
bitxor_exprt - Concatenation : Binary
concatenation_exprt(bitvector concatenation) - Extractbits : Binary
extractbits_exprt(bitvector extraction)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
- Nondet : SideEffect
side_effect_expr_nondett - Assign : SideEffect
side_effect_expr_assignt - Allocate : SideEffect
side_effect_exprtwithID_allocate(native dynamic-object allocation;operands = [size, zeroInitFlag], type is the result pointer).
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
- nullary (n : Nullary) : Identifier
- unary (u : Unary) : Identifier
- binary (b : Binary) : Identifier
- ternary (t : Ternary) : Identifier
- multiary (m : Multiary) : Identifier
- side_effect (s : SideEffect) : Identifier
- functionApplication
(name : String)
: Identifier
function_application_exprt- uninterpreted function application
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.nullary a) (CProverGOTO.Expr.Identifier.nullary b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.nullary n) (CProverGOTO.Expr.Identifier.unary u) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.nullary n) (CProverGOTO.Expr.Identifier.binary b) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.nullary n) (CProverGOTO.Expr.Identifier.ternary t) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.nullary n) (CProverGOTO.Expr.Identifier.multiary m) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.nullary n) (CProverGOTO.Expr.Identifier.side_effect s) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.nullary n) (CProverGOTO.Expr.Identifier.functionApplication name) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.unary u) (CProverGOTO.Expr.Identifier.nullary n) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.unary a) (CProverGOTO.Expr.Identifier.unary b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.unary u) (CProverGOTO.Expr.Identifier.binary b) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.unary u) (CProverGOTO.Expr.Identifier.ternary t) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.unary u) (CProverGOTO.Expr.Identifier.multiary m) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.unary u) (CProverGOTO.Expr.Identifier.side_effect s) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.unary u) (CProverGOTO.Expr.Identifier.functionApplication name) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.binary b) (CProverGOTO.Expr.Identifier.nullary n) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.binary b) (CProverGOTO.Expr.Identifier.unary u) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.binary a) (CProverGOTO.Expr.Identifier.binary b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.binary b) (CProverGOTO.Expr.Identifier.ternary t) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.binary b) (CProverGOTO.Expr.Identifier.multiary m) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.binary b) (CProverGOTO.Expr.Identifier.side_effect s) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.binary b) (CProverGOTO.Expr.Identifier.functionApplication name) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.ternary t) (CProverGOTO.Expr.Identifier.nullary n) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.ternary t) (CProverGOTO.Expr.Identifier.unary u) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.ternary t) (CProverGOTO.Expr.Identifier.binary b) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.ternary a) (CProverGOTO.Expr.Identifier.ternary b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.ternary t) (CProverGOTO.Expr.Identifier.multiary m) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.ternary t) (CProverGOTO.Expr.Identifier.side_effect s) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.ternary t) (CProverGOTO.Expr.Identifier.functionApplication name) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.multiary m) (CProverGOTO.Expr.Identifier.nullary n) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.multiary m) (CProverGOTO.Expr.Identifier.unary u) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.multiary m) (CProverGOTO.Expr.Identifier.binary b) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.multiary m) (CProverGOTO.Expr.Identifier.ternary t) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.multiary a) (CProverGOTO.Expr.Identifier.multiary b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.multiary m) (CProverGOTO.Expr.Identifier.side_effect s) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.multiary m) (CProverGOTO.Expr.Identifier.functionApplication name) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.side_effect s) (CProverGOTO.Expr.Identifier.nullary n) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.side_effect s) (CProverGOTO.Expr.Identifier.unary u) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.side_effect s) (CProverGOTO.Expr.Identifier.binary b) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.side_effect s) (CProverGOTO.Expr.Identifier.ternary t) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.side_effect s) (CProverGOTO.Expr.Identifier.multiary m) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.side_effect a) (CProverGOTO.Expr.Identifier.side_effect b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.side_effect s) (CProverGOTO.Expr.Identifier.functionApplication name) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.functionApplication name) (CProverGOTO.Expr.Identifier.nullary n) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.functionApplication name) (CProverGOTO.Expr.Identifier.unary u) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.functionApplication name) (CProverGOTO.Expr.Identifier.binary b) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.functionApplication name) (CProverGOTO.Expr.Identifier.ternary t) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.functionApplication name) (CProverGOTO.Expr.Identifier.multiary m) = isFalse ⋯
- CProverGOTO.Expr.instDecidableEqIdentifier.decEq (CProverGOTO.Expr.Identifier.functionApplication name) (CProverGOTO.Expr.Identifier.side_effect s) = isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
GOTO Expressions
For now, we have primarily focused on expr_protectedt class.
We will also confine ourselves to expressions that can appear at the lowest level of CProver IRs -- i.e., GOTO assembly instructions.
- id : Identifier
- type : Ty
- sourceLoc : SourceLocation
Named fields for expressions that need additional data (e.g.,
side_effect_exprthas astatementfield).
Instances For
Equations
- CProverGOTO.instReprExpr = { reprPrec := CProverGOTO.instReprExpr.repr }
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CProverGOTO.instToFormatExpr = { format := fun (e : CProverGOTO.Expr) => CProverGOTO.formatExpr e }
Equations
Instances For
Symbol expression
Equations
- CProverGOTO.Expr.symbol name type = { id := CProverGOTO.Expr.Identifier.nullary (CProverGOTO.Expr.Identifier.Nullary.symbol name), type := type }
Instances For
Constant expression
Equations
- CProverGOTO.Expr.constant value type = { id := CProverGOTO.Expr.Identifier.nullary (CProverGOTO.Expr.Identifier.Nullary.constant value), type := type }
Instances For
Nondet expression
Equations
- CProverGOTO.Expr.nondet name type = { id := CProverGOTO.Expr.Identifier.nullary (CProverGOTO.Expr.Identifier.Nullary.nondet name), type := type }
Instances For
Unary minus
Equations
- operand.neg = { id := CProverGOTO.Expr.Identifier.unary CProverGOTO.Expr.Identifier.Unary.UnaryMinus, type := operand.type, operands := [operand] }
Instances For
Logical not
Equations
- operand.not = { id := CProverGOTO.Expr.Identifier.unary CProverGOTO.Expr.Identifier.Unary.Not, type := operand.type, operands := [operand] }
Instances For
Overflow-+
Equations
- left.plus_overflow right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.PlusOverflow, type := CProverGOTO.Ty.Boolean, operands := [left, right] }
Instances For
Overflow--
Equations
- left.minus_overflow right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.MinusOverflow, type := CProverGOTO.Ty.Boolean, operands := [left, right] }
Instances For
Overflow-*
Equations
- left.mult_overflow right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.MultOverflow, type := CProverGOTO.Ty.Boolean, operands := [left, right] }
Instances For
Overflow-unary-
Equations
- operand.unary_minus_overflow = { id := CProverGOTO.Expr.Identifier.unary CProverGOTO.Expr.Identifier.Unary.UnaryMinusOverflow, type := CProverGOTO.Ty.Boolean, operands := [operand] }
Instances For
Typecast expression
Equations
- operand.typecast targetType = { id := CProverGOTO.Expr.Identifier.unary CProverGOTO.Expr.Identifier.Unary.Typecast, type := targetType, operands := [operand] }
Instances For
Dereference (*ptr) yielding a value of type pointee.
Equations
- ptr.dereference pointee = { id := CProverGOTO.Expr.Identifier.unary CProverGOTO.Expr.Identifier.Unary.Dereference, type := pointee, operands := [ptr] }
Instances For
Native dynamic-object allocation (side_effect ID_allocate): allocate
size bytes, optionally zero-initialized, returning a pointer of type
ptrTy. Mirrors CBMC's __CPROVER_allocate.
Equations
- size.allocate zeroFlag ptrTy = { id := CProverGOTO.Expr.Identifier.side_effect CProverGOTO.Expr.Identifier.SideEffect.Allocate, type := ptrTy, operands := [size, zeroFlag] }
Instances For
Cast a bitvector expression to its signed interpretation.
Equations
- e.toSigned = match e.type.id with | CProverGOTO.Ty.Identifier.bitVector (CProverGOTO.Ty.Identifier.BitVector.unsignedbv w) => e.typecast (CProverGOTO.Ty.SignedBV w) | x => e
Instances For
Division
Equations
- left.div right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.Div, type := left.type, operands := [left, right] }
Instances For
Modulo
Equations
- left.mod right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.Mod, type := left.type, operands := [left, right] }
Instances For
Greater than
Equations
- left.gt right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.Gt, type := CProverGOTO.Ty.Boolean, operands := [left, right] }
Instances For
Less than
Equations
- left.lt right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.Lt, type := CProverGOTO.Ty.Boolean, operands := [left, right] }
Instances For
Equal
Equations
- left.eq right = { id := CProverGOTO.Expr.Identifier.binary CProverGOTO.Expr.Identifier.Binary.Equal, type := CProverGOTO.Ty.Boolean, operands := [left, right] }
Instances For
Addition
Equations
- CProverGOTO.Expr.add [] = { id := CProverGOTO.Expr.Identifier.nullary (CProverGOTO.Expr.Identifier.Nullary.constant "0"), type := CProverGOTO.Ty.Integer }
- CProverGOTO.Expr.add [x] = x
- CProverGOTO.Expr.add (x :: tail) = { id := CProverGOTO.Expr.Identifier.multiary CProverGOTO.Expr.Identifier.Multiary.Plus, type := x.type, operands := x :: tail }
Instances For
Multiplication
Equations
- CProverGOTO.Expr.mul [] = { id := CProverGOTO.Expr.Identifier.nullary (CProverGOTO.Expr.Identifier.Nullary.constant "1"), type := CProverGOTO.Ty.Integer }
- CProverGOTO.Expr.mul [x] = x
- CProverGOTO.Expr.mul (x :: tail) = { id := CProverGOTO.Expr.Identifier.multiary CProverGOTO.Expr.Identifier.Multiary.Mult, type := x.type, operands := x :: tail }
Instances For
Logical and
Equations
- CProverGOTO.Expr.and [] = CProverGOTO.Expr.true
- CProverGOTO.Expr.and [x] = x
- CProverGOTO.Expr.and operands = { id := CProverGOTO.Expr.Identifier.multiary CProverGOTO.Expr.Identifier.Multiary.And, type := CProverGOTO.Ty.Boolean, operands := operands }
Instances For
Logical or
Equations
- CProverGOTO.Expr.or [] = { id := CProverGOTO.Expr.Identifier.nullary (CProverGOTO.Expr.Identifier.Nullary.constant "false"), type := CProverGOTO.Ty.Boolean }
- CProverGOTO.Expr.or [x] = x
- CProverGOTO.Expr.or operands = { id := CProverGOTO.Expr.Identifier.multiary CProverGOTO.Expr.Identifier.Multiary.Or, type := CProverGOTO.Ty.Boolean, operands := operands }
Instances For
If-then-else
Equations
Instances For
Check whether an expression contains quantifiers over types that CBMC's SMT2 backend cannot encode (e.g., struct_tag, regex).