Fixpoint3.Ast.Ram.RelOp
enum RelOpSourcecase Search(RowVar, RelSym, RelType, RelOp)case Query(RowVar, RelSym, Vector[BoolExp], Int32, RelType, RelOp)case Functional(RowVar, Vector[Boxed] -> Vector[Vector[Boxed]], Vector[RamTerm], RelOp, Int32, RelType)case Project(Vector[RamTerm], RelSym, Int32)case If(Vector[BoolExp], RelOp)Search(rv, relSym, relType, body) iterates through the facts in relation
relSym, saving them as RowVar rv and executes body.
Query(rv, relSym, bools, indexPos, relType, body) iterates through the facts in relation
relSym, saving them as rv and executes body if bools is
true. The index saved at indexPos will be used.
Functional(rv, f, input, body, arity, relType) evaluates f(input), for each result,
saves it as rv and executes body. arity is the arity of the output tuples.
Project(terms, relSym, ruleNum) constructs a tuple from terms and inserts it as a fact
for relation relSym. relSym should be a new relation. ruleNum is a unique number assigned
to the rule the project statement is associated with.
If(bools, body) evaluates body if bools is true.