Class Inhabitant (A: Type) := default : A.Class Inhabitant (A: Type) := default : A.Instance Inhabitant_Z : Inhabitant Z := 0.Instance Inhabitant_nat : Inhabitant nat := O.Instance Inhabitant_positive : Inhabitant positive := 1%positive.Instance Inhabitant_list {T: Type} : Inhabitant (list T) := @nil T.Instance Inhabitant_fun {T1 T2: Type} {H: Inhabitant T2} : Inhabitant (T1->T2) := fun _ => H.Instance Inhabitant_Prop : Inhabitant Prop := False.Instance Inhabitant_bool : Inhabitant bool := false.Instance Inhabitant_pair {T1 T2 : Type} {x1: Inhabitant T1} {x2: Inhabitant T2} : Inhabitant (T1*T2)%type := (x1,x2).

Lemma firstn_skipn_rev: forall {A} lo n (vl: list A), (n+lo <= length vl)%nat -> firstn n (skipn lo (rev vl)) = rev (firstn n (skipn (length vl - (lo+n))%nat vl)).