Local Set Implicit Arguments.
Local Unset Strict Implicit.
(* *Some basic things concerning lists *)
(* * Definitions *)
Local Definition symbol := nat.
Local Definition string := (string nat).
Local Definition card : Type := (string * string).
Local Definition stack := list card.
Local Definition SRS := SRS nat.
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].
(* ** String Rewriting *)

Lemma rewt_induct :
forall (R : SRS) z (P : string -> Prop),
(P z) ->
(forall x y : string, rew R x y -> rewt R y z -> P y -> P x) -> forall s, rewt R s z -> P s.