anchor.diff:  RETURN a AS a, (a + agg_1 - agg_2) * 2 AS agg
   ----
   
  -== Proposal
  -
  -
  -
  -
  -=== Syntax
  -
  -
  -==== Grammar
  -
  -
  -==== Syntax Rules
  -
  -
  -=== Semantics
  -
  +// TODO syntactic restriction implied by this semantics
   
   === Examples
   
  
positive.code: |2|12
  |===
  
  In all three cases, the semantics can be described as follows.
  The set of <ProjectionItem>s _L_ is split in two set _LK_ and _LA_, so that
  
  * _LA_ are all <ProjectionItem>s `_aggex_ AS _al_` in _L_ that contain an aggregation function, i.e. where _aggex_ is of the form _agg_(_ex_) and _ex_ is a valid expression
  * _LK_ are all remaining <ProjectionItem>s in _L_ but no _LA_, i.e. _LK_ = _L_ - _LA_
  
  Further
  
  * For a <ProjectionItem> _p_ = `_ex_ AS _al_`,
  ** If _p_ ∈ _LK_
  *** Let `PROJ(_p_)` be `_ex_ AS _al_` and
  *** Let `AGGR(_p_)` be `_al_ AS _al_`
  ** If _p_ ∈ _LA_ and _ex_ = _agg_(_x_)
  *** Let `PROJ(_p_)` be `_x_ AS _al_` and
  *** Let `AGGR(_p_)` be `_agg_(_al_) AS _al_`
  * For a set of <ProjectionItem>s _L_ = {_p1_, _p2_, ... _pn_},
  ** Let `PROJ(_L_)` be `PROJ(_p1_), PROJ(_p2_), ..., PROJ(_pn_)` and
  ** Let `AGGR(_L_)` be `AGGR(_p1_), AGGR(_p2_), ..., AGGR(_pn_)`
  
  With this the semantics of `RETURN _L_` can be defined as effectively equivalent to
  
  
negative.code: WITH AGGR(_L_)
  ----
  
  For instance, <<Q3>> from above (`RETURN b-a AS x, SUM(b*c) AS sumBC`) can be defined as effectively equivalent to
  
  [source, cypher]
  ----
  