Inductive legal_as_set : Config -> Set :=
    intro_leg : forall c : Config, legal c -> legal_as_set c.Inductive legal_as_set : Config -> Set :=
    intro_leg : forall c : Config, legal c -> legal_as_set c.Definition legal_config := sigS legal_as_set.Definition get_c (lc : sigS legal_as_set) :=
  match lc with
  | existS c L => c
  end.(* WATCH OUT: successor is first argument, predecessor is second *)
Definition no_copy_succ (lc2 lc1 : legal_config) :=
  exists t : class_trans (get_c lc1),
    get_c lc2 = transition (get_c lc1) t /\ ~ copy_p (get_c lc1) t.Definition convert_to_nat (n : Z) :=
  match n with
  | Zpos x => nat_of_P x
  | _ => 0
  end.Definition no_copy_measure (lc : legal_config) :=
  match lc with
  | existS c _ => convert_to_nat (termination_measure c)
  end.Definition decidable_relation (E : Set) (R : E -> E -> Prop) :=
  forall x : E, {y : E | R y x} + {(forall y : E, ~ R y x)}.Axiom
  or_rec : forall (A B : Prop) (P : Set), (A -> P) -> (B -> P) -> A \/ B -> P.Axiom
  ex_rec :
    forall (A : Set) (P : A -> Prop) (P0 : Set),
    (forall x : A, P x -> P0) -> ex P -> P0.

Lemma decidable_no_copy_succ : decidable_relation legal_config no_copy_succ.