End ReductionHesselink.
Section Palindrome.
Variable Gamma' : finType.
Inductive Gamma := emb (x : Gamma') | StartG.
Global Instance eq_dec_gamma : eq_dec Gamma.
Definition emb_string := map emb.
Definition palin_G : cfg Gamma :=
(StartG, (StartG, []) ::
flat_map (fun g => [ (StartG, [emb g]);  (StartG, [emb g; StartG; emb g]) ]) (elem Gamma')).

Lemma listI : forall (A : Type) (P : list A -> Prop), P [] -> (forall x, P [x]) -> (forall (x : A) (y : A) (l : list A), P l -> P (x :: l ++ [y])) -> forall l : list A, P l.