Remark add_reduce2 :
 forall x y z a : Z, x = a -> (x + (y + z))%Z = (a + y + z)%Z.Remark add_reduce3 :
 forall x y z a : Z, x = a -> y = z -> (x + y)%Z = (a + z)%Z.Remark add_reduce10 :
 forall x y w z a : Z,
 w = y -> (a > 0)%Z -> (x + (y + (z - a)) < x + (w + z))%Z.Remark add_reduce11 :
 forall x1 x2 y w z a b : Z,
 x1 = x2 ->
 w = y -> (b - a < 0)%Z -> (x1 + b + (y + (z - a)) < x2 + (w + z))%Z.Remark add_reduce12 : forall x y : Z, x = y -> x = (y + 0)%Z.Remark add_reduce13 :
 forall x1 x2 y w z a b : Z,
 x1 = x2 ->
 w = y -> (b + a < 0)%Z -> (x1 + b + (y + (z + a)) < x2 + (w + z))%Z.Remark add_reduce14 :
 forall x1 x2 x3 y w z a b : Z,
 x1 = x2 ->
 w = y -> (b + a < x3)%Z -> (x1 + b + (y + (z + a)) < x2 + x3 + (w + z))%Z.Remark add_reduce15 : forall x y a : Z, (x < y)%Z -> (a + x < a + y)%Z.Remark add_reduce16 :
 forall x1 x2 y b : Z,
 x1 = x2 -> (1 - b < 0)%Z -> (x1 - b + (y + 1) < x2 + y)%Z.Remark add_reduce17 : forall x y a : Z, x = y -> (x + a)%Z = (y + a)%Z.Remark add_reduce18 : forall x y a : Z, x = y -> a = 0%Z -> x = (y + a)%Z.Remark add_reduce19 :
 forall x1 x2 x3 y1 y2 y3 y4 : Z,
 x1 = y1 ->
 (y2 - y4 + (y3 + 1) < x2 + x3)%Z ->
 (y1 + (y2 - y4) + (y3 + 1) < x1 + x2 + x3)%Z.Remark add_reduce22 :
 forall a b x0 y0 x1 x2 x3 y1 y2 y3 y4 : Z,
 x1 = y1 ->
 a = b ->
 (x0 + (y2 - y4) + (y3 + 2) < y0 + x2 + x3)%Z ->
 (a + x0 + (y1 + (y2 - y4) + (y3 + 2)) < b + y0 + (x1 + x2 + x3))%Z.Remark add_reduce23 :
 forall x y : Z, (x >= 0)%Z -> (y >= 0)%Z -> (0 <= x + y)%Z.

(* Specifications: *)
Lemma termination_measure_decreases : forall (c : Config) (t : class_trans c), legal c -> ~ copy_p c t -> (termination_measure (transition c t) < termination_measure c)%Z.
Lemma termination_measure_positive : forall c : Config, (0 <= termination_measure c)%Z.