(** * Definitions *)
Definition symbol := nat.
Definition string := (string nat).
Definition card : Type := (card nat).
Definition stack := stack nat.
Notation "x / y" := (x,y).
Implicit Types a b : symbol.
Implicit Types x y z : string.
Implicit Types d e : card.
Implicit Types A R P : stack.
Coercion sing (n : nat) := [n].
(** ** Post Correspondence Problem *)

Lemma tau2_app A B : tau2 (A ++ B) = tau2 A ++ tau2 B.
Definition cards x := map (fun a => [a] / [a]) x.