Changed signatures to allow Symbols to create nodes when reducing
Split reduce and CanReduce into two separate paths