Enum move_ir_types::spec_language_ast::SpecExp
source · pub enum SpecExp {
Constant(CopyableVal_),
StorageLocation(StorageLocation),
GlobalExists {
type_: QualifiedStructIdent,
type_actuals: Vec<Type>,
address: StorageLocation,
},
Dereference(StorageLocation),
Reference(StorageLocation),
Not(Box<SpecExp>),
Binop(Box<SpecExp>, BinOp, Box<SpecExp>),
Update(Box<SpecExp>, Box<SpecExp>),
Old(Box<SpecExp>),
Call(Symbol, Vec<SpecExp>),
}
Expand description
An expression in the specification language
Variants§
Constant(CopyableVal_)
A Move constant
StorageLocation(StorageLocation)
A spec language storage location
GlobalExists
Lifting the Move exists operator to a storage location
Dereference(StorageLocation)
Dereference of a storage location (written *s)
Reference(StorageLocation)
Reference to a storage location (written &s)
Not(Box<SpecExp>)
Negation of a boolean expression (written !e),
Binop(Box<SpecExp>, BinOp, Box<SpecExp>)
Binary operators also suported by Move
Update(Box<SpecExp>, Box<SpecExp>)
Update expr (i := 1 inside [])
Old(Box<SpecExp>)
Value of expression evaluated in the state before function enter.
Call(Symbol, Vec<SpecExp>)
Call to a helper function.