Section PCP_CFPI.
Variable P : stack nat.
Definition Sigma := sym P.
Notation "#" := (fresh Sigma).
Definition gamma1 (A : stack nat) :=
map (fun '(x, y) => (x, (x ++ [#] ++ y ++ [#]))) A.
Definition gamma2 (A : stack nat) :=
map (fun '(x, y) => (y, (x ++ [#] ++ y ++ [#]))) A.
Fixpoint gamma (A : stack nat) :=
match A with
| [] => []
| (x, y) :: A => gamma A ++ x ++ [#] ++ y ++ [#]
end.
End PCP_CFPI.

Theorem reduction :
PCP ⪯ CFPI.