anchor.diff:  
   * _K_ is a (possibly empty) set of pairs (_k_, _al_) where
   ** _k_ is a variable -- called a _grouping key_ -- in the driving table _D_,
  -** _al_ is an _alias_ that different from all other aliases _x_ with (·, _x_) ∈ _K_., and
  +** _al_ is an _alias_ that is different from all other aliases _x_ with (·, _x_) ∈ _K_., and
   * _A_ is a non-empty set of triple (_agg_, _x_, _al_) where
   ** _agg_ is an aggregation function and
   ** _x_ is a variable in the driving table _D_
   ** _al_ is an alias that is different from all other aliases _x_ with (·, ·, _x_) ∈ _A_ and _x_ with (·, _x_) ∈ _K_.
   
  -Assuming _K_ = {(_k_~1~, _ka_~1~), (_k_~2~, _ka_~1~), ..., (_k~N~_, _ka~N~_)} and _A_ = {(_agg_~1~, _x_~1~, _al_~1~), (_agg_~2~, _x_~2~, _al_~2~), ..., (_agg~M~_, _x~M~_, _al~M~_)}, the Cypher equivalent of pass:q[γ<sub>_K_, _A_</sub>(_D_)] is
  +Assuming _K_ = {(_k_~1~, _ka_~1~), (_k_~2~, _ka_~2~), ..., (_k~N~_, _ka~N~_)} and _A_ = {(_agg_~1~, _x_~1~, _al_~1~), (_agg_~2~, _x_~2~, _al_~2~), ..., (_agg~M~_, _x~M~_, _al~M~_)}, the Cypher equivalent of pass:q[γ<sub>_K_, _A_</sub>(_D_)] is
   
   [source, cypher, subs="quotes"]
   ----
  
positive.code: .[[Q6]]Q6
  [source, cypher]
  ----
  RETURN b-a AS x, c AS c, c + SUM(b) AS sumBC
  ----
  
  _GROUPING_KEYS_(_L_) is {`b-a`, `x`, `c`}.
  
  ====
  
  For an expression _ex_ and a projection list _L_, let _CONSTANT_(_ex_, _L_) hold
  
  * If _ex_ is either
  ** A aggregation function, i.e. of the form `_agg_(_subEx_)`,
  ** A grouping key, i.e. _ex_ ∈ _GROUPING_KEYS_(_L_),
  ** A constant, or
  ** A parameter,
  * or if _ex_ comprises of sub-expressions, it only comprises sub-expressions _subEx_ for which _CONSTANT_(_subEx_, _L_) holds.
  
  [IMPORTANT]
  .Syntax restriction
  
negative.code: 
  The RETURN clause
  
  .[[Q8]]Q8
  [source, cypher]
  ----
  RETURN a AS a, (b - b) + SUM(c) AS foo
  