I see many ICOs using SafeMath.sol. An example function in this contract is:
function safeAdd(uint256 x, uint256 y) internal returns(uint256) {
uint256 z = x + y;
assert((z >= x) && (z >= y));
return z;
}
What is the reason for this function at all? Why not just add the two values? What additional functionality does this safeAdd function provide?
http://zeppelin-solidity.readthedocs.io/en/latest/safemath.html