Inductive gcd_spec : nat -> nat -> nat -> Prop :=
| gcd_spec_ex0 : forall a : nat, gcd_spec a 0 a
| gcd_spec_ex1 : forall b : nat, gcd_spec 0 b b
| gcd_spec_ex2 :
forall a b c : nat, a < b -> gcd_spec a (b - a) c -> gcd_spec a b c
| gcd_spec_ex3 :
forall a b c : nat, b <= a -> gcd_spec (a - b) b c -> gcd_spec a b c.
Hint Resolve gcd_spec_ex0 gcd_spec_ex1.

(* Specifications: *)
Theorem gcd_inv_Or_aux : forall a b c : nat, gcd_spec a b c -> b = 0 -> a = c.
intros a b c H'; elim H'; auto.