anchor.diff:  
   *Authors:* Henrik Nyman henrik.nyman@neotechnology.com, Mats Rydberg mats@neotechnology.com
   
  -
   [abstract]
   .Abstract
   --
  -This is a retroactive CIP aiming to describe the current type coercions that exist in today's Cypher.
  +This CIP describes how type coercions work in Cypher.
   --
   
   toc::[]
   
  -
   == Motivation
   
  -Due to recent issues with (the lack of) type coercions, the need for a requirements specification has become actualized.
  -
  -== Background
  -
  -In the case of a list with both integral and floating-point numbers, its type will be a `LIST OF NUMBER`.
  -Functions and expressions that work on both integers and floats would then accept all elements of this list one-by-one, but if they do not also accept the type `NUMBER` they will not be able to act on the list itself when used in a comprehension.
  -In this type of situation, it is very valuable for a user to know what kinds of coercions that Cypher will perform, and what explicit casting that they will have to do themselves.
  +It is useful for a user to know what kinds of coercions Cypher will perform, and what explicit casting they will need to do themselves.
   
   == Proposal
   
  -The current Cypher behavior is detailed, which consists of three type coercions:
  +The three type coercions are as follows:
   
   * `LIST OF T` to `BOOLEAN`
   * `LIST OF NUMBER` to `LIST OF FLOAT`
  
positive.code: RETURN size(coll)
  ----
  
  Calculate the cosine of a value:
  [source, cypher]
  ----
  WITH 1 AS int
  RETURN cos(int) // coerced to a float
  ----
  
  Store a list of numbers as a node property:
  [source, cypher]
  ----
  WITH [1, 1.0] AS list
  CREATE ({l: list})) // coerced to a list of floats
  ----
  
  === Syntax
  
negative.code: RETURN coll[0]
  ----
  
  .Return the size of a non-empty list:
  [source, cypher]
  ----
  WITH [1, 2, 3.5] AS coll
  