I think it should be taken as read, as in my experience, which was with a contract that ended up at a court of appeal, the three judges took the interpretation of the wording as is, not what somebody would like it to be and in your case it states from the 16th July 2016 you are required to give 3 months notice.
IMO I think they would be on stronger grounds if they had spotted the error and corrected it before you gave notice, not them trying to argue afterwards. Make sure when you hand in your resignation that you state you are giving two months notice as per your contract. IME in reality at the best of times it is very difficult to enforce notice periods and the reality is how motivated are you going to be if they try to force you to work the extra month! With computer programmers I generally let them go at the first mutually agreed date for this reason, once somebody had handed in their notice. This approach was good for code integrity and team morale.