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.

Theorem step_deterministic_alt: deterministic step.