Imperative languages focus on how the program should follow it's tasks, while non-imperative languages, functional or logical, tell the program what it needs to do, as opposed on how to do it.
The hypothetical imperative is a test used to determine whether or not you will do an action. You must imagine a world in which everyone does the proposed action. If it is not possible the action...