This is amusing but absurd, especially if you're serious about this phrase being confusing or malformed. "You may not smoke": does this mean, to you, that either smoking or not smoking is permitted? If the answer is yes, I think the solution may be to cease applying the logical rules of programming to human languages, where it is meaning and tradition that matter.
I was going to write that the answer your question is "no" because your version is unambiguous but then I parsed it a few more times.
One way to remove the ambiguity is to recast your sentence using "must": "You must not smoke". But that version is stilted to most modern English speakers raised outside the UK.
This side-discussion is probably one of the reasons people wish HN had collapsible threads, so after this comment I will refrain from further contributing to it.
(Nice job, btw, on highlighting the ambiguity in a version where the negative is in the predicate.)