⟦[S [DP John] [VP smokes]]⟧M
is determined by ⟦ [DP John]⟧M and ⟦ [VP smokes]⟧M.
But 1. is impossible, because the DP denotation is not a function. It's an individual! So it must be 2.
What function should [VP smokes] denote?
It should the function maps any individual to 1 if that individual smokes in M and to 0 if that individual doesn't smoke in M.
⟦[S [DP John] [VP left]]⟧M = ⟦[VP left ]⟧M(⟦[DP John ]⟧M)
⟦smokes⟧M = the function that maps any individual in M to 1 iff that individual smokes in M.
⟦smokes⟧M = λx: x∈D. 1 iff x smokes in M.
λv: A. B
⟦smokes⟧M = λx: x∈D. 1 iff x smokes in M