Formal semantics for natural language