Section ROOT_SUCC.
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.
Definition relation_decreases (E : Set) (R : E -> E -> Prop)
(f : E -> nat) := forall x y : E, R x y -> f x < f y.