Admitted. (* Higher order *)
End SimpleArith2.
Ltac solve_by_inverts n :=
match goal with | H : ?T |- _ =>
match type of T with Prop =>
solve [
inversion H;
match n with S (S (?n')) => subst; solve_by_inverts (S n') end ]
end end.
Ltac solve_by_invert :=
solve_by_inverts 1.
Module SimpleArith3.

(* Specifications: *)
Theorem step_deterministic_alt: deterministic step.
Admitted.