Can you fund the issue in the transfer
function?
function transfer(to: address, amount: uint256) public {
require(funds[msg.sender] > amount);
uint256 fundsTo = funds[to];
funds[msg.sender] -= amount;
funds[to] = fundsTo + amount;
}
Formal Verification can be used the test better guarantees on the Smart Contracts.