I am using the Coq Proof Assistant to implement a model of a (small) programming language (extending an implementation of Featherweight Java by Bruno De Fraine, Erik Ernst,
I ran into a similar problem and Coq 8.3's "dependent induction" tactic took care of business.