forge.program
Interface ForgeExpression

All Superinterfaces:
ProgramElement
All Known Subinterfaces:
ForgeExpression.Leaf, ForgeExpression.Modifiable, ForgeType, ForgeType.Tuple, ForgeType.Unary
All Known Implementing Classes:
BinaryExpression, BooleanDomain, BooleanLiteral, ConditionalExpression, ForgeDomain, ForgeLiteral, ForgeVariable, GlobalVariable, InstanceDomain, InstanceLiteral, IntegerDomain, IntegerLiteral, LocalVariable, OldExpression, ProjectionExpression, QuantifyExpression, UnaryExpression

public interface ForgeExpression
extends ProgramElement

A Forge expression.

Author:
Greg Dennis (gdennis@mit.edu)

Nested Class Summary
static interface ForgeExpression.Leaf
          Domains, variables, and literals -- expressions that have a name.
static interface ForgeExpression.Modifiable
          Variables and instance domains -- leafs that may be modified.
 
Method Summary
<T> T
accept(ExpressionVisitor<T> visitor)
          Accept a visitor.
 ForgeExpression and(ForgeExpression expr)
           
 ForgeExpression apply(UnaryExpression.Op op)
           
 int arity()
          Returns the arity of this expression.
 ForgeExpression bitAnd(ForgeExpression expr)
           
 ForgeExpression bitNot()
           
 ForgeExpression bitOr(ForgeExpression expr)
           
 ForgeExpression bitXor(ForgeExpression expr)
           
 ForgeExpression bool()
           
 ForgeExpression closure()
           
 ForgeExpression compose(BinaryExpression.Op op, ForgeExpression expr)
           
 ForgeExpression comprehension(LocalDecls decls)
           
 ForgeExpression difference(ForgeExpression expr)
           
 ForgeExpression divide(ForgeExpression expr)
           
 ForgeExpression domain()
           
 ForgeExpression eq(ForgeExpression expr)
           
 ForgeExpression forAll(LocalDecls decls)
           
 ForgeExpression forSome(LocalDecls decls)
           
 ForgeExpression gt(ForgeExpression expr)
           
 ForgeExpression gte(ForgeExpression expr)
           
 ForgeExpression iden()
           
 ForgeExpression iff(ForgeExpression expr)
           
 ForgeExpression implies(ForgeExpression expr)
           
 ForgeExpression in(ForgeExpression expr)
           
 ForgeExpression intersection(ForgeExpression expr)
           
 boolean isUnary()
          Returns true if the arity is one.
 ForgeExpression join(ForgeExpression expr)
           
 ForgeExpression lone()
           
 ForgeExpression lt(ForgeExpression expr)
           
 ForgeExpression lte(ForgeExpression expr)
           
 ForgeExpression minus(ForgeExpression expr)
           
 ForgeExpression modulo(ForgeExpression expr)
           
 ForgeExpression neg()
           
 ForgeExpression no()
           
 ForgeExpression not()
           
 ForgeExpression one()
           
 ForgeExpression or(ForgeExpression expr)
           
 ForgeExpression override(ForgeExpression expr)
           
 ForgeExpression plus(ForgeExpression expr)
           
 ForgeExpression product(ForgeExpression expr)
           
 ForgeExpression projection(int... columns)
           
 ForgeExpression quantify(QuantifyExpression.Op quant, LocalDecls decls)
           
 ForgeExpression range()
           
 ForgeExpression shiftLeft(ForgeExpression expr)
           
 ForgeExpression shiftRight(ForgeExpression expr)
           
 ForgeExpression size()
           
 ForgeExpression some()
           
 ForgeExpression sum()
           
 ForgeExpression summation(LocalDecls decls)
           
 ForgeExpression thenElse(ForgeExpression thenExpr, ForgeExpression elseExpr)
           
 ForgeExpression times(ForgeExpression expr)
           
 ForgeType type()
          Returns the type of this expression.
 ForgeExpression union(ForgeExpression expr)
           
 ForgeExpression unsignedShiftRight(ForgeExpression expr)
           
 ForgeExpression xor(ForgeExpression expr)
           
 
Methods inherited from interface forge.program.ProgramElement
program
 

Method Detail

arity

int arity()
Returns the arity of this expression.


type

ForgeType type()
Returns the type of this expression.


isUnary

boolean isUnary()
Returns true if the arity is one.


accept

<T> T accept(ExpressionVisitor<T> visitor)
Accept a visitor.


domain

ForgeExpression domain()

range

ForgeExpression range()

iden

ForgeExpression iden()

projection

ForgeExpression projection(int... columns)

closure

ForgeExpression closure()

no

ForgeExpression no()

lone

ForgeExpression lone()

one

ForgeExpression one()

some

ForgeExpression some()

size

ForgeExpression size()

sum

ForgeExpression sum()

neg

ForgeExpression neg()

bool

ForgeExpression bool()

not

ForgeExpression not()

bitNot

ForgeExpression bitNot()

apply

ForgeExpression apply(UnaryExpression.Op op)

eq

ForgeExpression eq(ForgeExpression expr)

in

ForgeExpression in(ForgeExpression expr)

union

ForgeExpression union(ForgeExpression expr)

difference

ForgeExpression difference(ForgeExpression expr)

intersection

ForgeExpression intersection(ForgeExpression expr)

join

ForgeExpression join(ForgeExpression expr)

product

ForgeExpression product(ForgeExpression expr)

override

ForgeExpression override(ForgeExpression expr)

and

ForgeExpression and(ForgeExpression expr)

or

ForgeExpression or(ForgeExpression expr)

xor

ForgeExpression xor(ForgeExpression expr)

implies

ForgeExpression implies(ForgeExpression expr)

iff

ForgeExpression iff(ForgeExpression expr)

lt

ForgeExpression lt(ForgeExpression expr)

gt

ForgeExpression gt(ForgeExpression expr)

lte

ForgeExpression lte(ForgeExpression expr)

gte

ForgeExpression gte(ForgeExpression expr)

plus

ForgeExpression plus(ForgeExpression expr)

minus

ForgeExpression minus(ForgeExpression expr)

times

ForgeExpression times(ForgeExpression expr)

divide

ForgeExpression divide(ForgeExpression expr)

modulo

ForgeExpression modulo(ForgeExpression expr)

bitAnd

ForgeExpression bitAnd(ForgeExpression expr)

bitOr

ForgeExpression bitOr(ForgeExpression expr)

bitXor

ForgeExpression bitXor(ForgeExpression expr)

shiftLeft

ForgeExpression shiftLeft(ForgeExpression expr)

shiftRight

ForgeExpression shiftRight(ForgeExpression expr)

unsignedShiftRight

ForgeExpression unsignedShiftRight(ForgeExpression expr)

compose

ForgeExpression compose(BinaryExpression.Op op,
                        ForgeExpression expr)

thenElse

ForgeExpression thenElse(ForgeExpression thenExpr,
                         ForgeExpression elseExpr)

forAll

ForgeExpression forAll(LocalDecls decls)

forSome

ForgeExpression forSome(LocalDecls decls)

summation

ForgeExpression summation(LocalDecls decls)

comprehension

ForgeExpression comprehension(LocalDecls decls)

quantify

ForgeExpression quantify(QuantifyExpression.Op quant,
                         LocalDecls decls)