I was looking at the docs and I'm looking for clarification on the difference between require and assert and throw and revert. assert(bool condition): abort execution and revert state changes if condition is false (use for internal error) require(bool condition): abort execution and revert state changes if condition is false (use for malformed input) Specifically with respect to assert and require
![Difference between require and assert and the difference between revert and throw](https://cdn-ak-scissors.b.st-hatena.com/image/square/9b15cde90cfba24e13f29bddd3f0cdfa2a13807f/height=288;version=1;width=512/https%3A%2F%2Fcdn.sstatic.net%2FSites%2Fethereum%2FImg%2Fapple-touch-icon%402.png%3Fv%3Dfa4301ca0e6d)