(** ** Another example: infinite loops in partial correctness.  Basic Hoare logic is not well-suited for reasoning about non-terminating programs. In total correctness, postconditions of non-terminating programs are not provable. In partial correctness, a non-terminating program satisfies any (unsatisfiable) postcondition.  For example, in an informal "meaning", the program below enumerates all multiples of 3. But this meaning can not be expressed here (even in partial correctness). *)
Definition enum_3N :=
(Iseq (Iset VX (const 0))
(Iwhile (const true)
(Iset VX (PLUS VX (const 3))))).

(* Specifications: *)
Lemma enum_3N_stupid:
(fun e => True) |= enum_3N  {= fun e => False =}.