Definition Conf := (Word * Word)%type.Inductive Derive_P_A : Conf -> Conf -> Prop :=
  | Derive_cons :
      forall (w w1 w2 u : Word) (x : Elt),
      dans x X ->
      dans (couple (word w1) (couple x (word w2))) d ->
      Derive_P_A (pair (Append w1 w) (cons x u)) (pair (Append w2 w) u)
  | Derive_eps :
      forall w w1 w2 u : Word,
      dans (couple (word w1) (couple eps (word w2))) d ->
      Derive_P_A (pair (Append w1 w) u) (pair (Append w2 w) u).Inductive Derive_P_A : Conf -> Conf -> Prop :=
  | Derive_cons :
      forall (w w1 w2 u : Word) (x : Elt),
      dans x X ->
      dans (couple (word w1) (couple x (word w2))) d ->
      Derive_P_A (pair (Append w1 w) (cons x u)) (pair (Append w2 w) u)
  | Derive_eps :
      forall w w1 w2 u : Word,
      dans (couple (word w1) (couple eps (word w2))) d ->
      Derive_P_A (pair (Append w1 w) u) (pair (Append w2 w) u).Inductive Derive_P_A : Conf -> Conf -> Prop :=
  | Derive_cons :
      forall (w w1 w2 u : Word) (x : Elt),
      dans x X ->
      dans (couple (word w1) (couple x (word w2))) d ->
      Derive_P_A (pair (Append w1 w) (cons x u)) (pair (Append w2 w) u)
  | Derive_eps :
      forall w w1 w2 u : Word,
      dans (couple (word w1) (couple eps (word w2))) d ->
      Derive_P_A (pair (Append w1 w) u) (pair (Append w2 w) u).Definition Derivestar_P_A := Rstar Conf Derive_P_A.Definition LA (u : Word) :=
  Derivestar_P_A (pair wd u) (pair wa nil) /\ inmonoid X u.

Lemma LA_langage : islanguage X LA.