intros; apply sym_equal;
apply (tech_after alpha_irr N n (n + first N - last N)).
generalize (first_N N (prop_N N)); intro;
generalize (lt_minus2 (first N) N H1); intro;
apply (lt_le_trans 0 (N - first N) n H2 H).
generalize (last_N N (prop_N N)); intro; apply (lt_trans n (last N) N H0 H1).
auto with arith real.
generalize (plus_lt_compat_r n (last N) (first N) H0); intro;
generalize (lt_reg_minus (n + first N) (last N + first N) (last N) H1);
intro; rewrite (minus_plus (last N) (first N)) in H2;
cut (last N <= n + first N).
intro;
apply
(lt_trans (n + first N - last N) (first N) N (H2 H3) (first_N N (prop_N N))).
clear H1 H2; generalize (le_minus_plus N (first N) n H); intro;
apply (le_trans (last N) N (n + first N) (last_N01 N) H1).
apply (tech1 alpha_irr prop_alpha prop_N N n H H0).
generalize (tech_suc_M alpha_irr prop_alpha prop_N N n H H0);
auto with arith real.
Qed.

(* Specifications: *)
(**********)
Lemma three_gap3 :
forall N n : nat, last N <= n -> n < N -> after N n = n - last N.