Ltac eqgoal := let H := fresh in intro H; eq goal H; clear H.Ltac solve_list_eq := simpl; repeat progress (try rewrite app_ass; try rewrite <- app_nil_end; simpl; auto); auto.Ltac msplit n := 
  match n with 
    | 0    => idtac 
    | S ?n => split; [ | msplit n ]
   end.

Theorem forall_bound_equiv : (forall n, A n -> P n) <-> (forall n, A n -> Q n).