Non-linear difference equations