(** * CFP to CFI *)
Section Palindrome.
Variable Sigma : list symbol.
Notation StartG := (fresh Sigma).
Definition palin_G : cfg :=
(StartG, (StartG, []) ::
flat_map (fun g => [ (StartG, [g]);  (StartG, [g; StartG; g]) ]) Sigma).

Lemma rev_palin x : x <<= StartG :: Sigma ->
x = rev x -> count x StartG <= 1 -> rewt palin_G [StartG] x.