Add Operator#getArguments()
Add a visitor utility that returns an Ast as a list of lists.
[WIP] Optimizer infrastructure.
Add AttrList#rename(Renaming)
Add Rename#project(AttrList)
Optimizer: push project over rename.
Rephrasing.
DSL.among delegates to Predicate.among
Add Predicate#hasCode, #equals and #rename.
Optimizer: push restrict over rename.
Add AttrList#union.
Optimizer: push project over join.
Optimizer: remove unnecessary projections.
Add an integration test for the optimizer algorithm.
Add AND-split of predicate expressions.
Add DUM and DEE + left-optimizations for them.
Fix the singleton pattern for True and False.
Add an EmptyRelation utility.
Optimizer: Add TRUE/FALSE/DUM/DEE shared optimizations.
Complete Predicate implementation with Or, Not, And.