Qed.

(* Specifications: *)
(**********)
Lemma rho_lb_0 : forall h : TypeSpeed, (rho_lb h < rho h)%R.
intros; unfold rho, rho_lb in |- *; apply Rmult_lt_compat_l;
[ apply g_pos
| generalize TypeSpeed_pos; intros; generalize (H h); clear H; intro H;
generalize (Rinv_0_lt_compat h H); intro H1; generalize tan_MaxBank_lb;
intro H2;
generalize (Rmult_lt_compat_l (/ h) tan_lb_MaxBank (tan MaxBank) H1 H2);
rewrite <- (Rmult_comm (tan MaxBank));
rewrite <- (Rmult_comm tan_lb_MaxBank); intro H3;
assumption ].
(**********)
Lemma rho_lb_pos : forall h : TypeSpeed, (0 < rho_lb h)%R.
intros; unfold rho_lb in |- *; apply Rmult_lt_0_compat;
[ apply g_pos
| replace (tan_lb_MaxBank / h)%R with (tan_lb_MaxBank * / h)%R;
[ rewrite Rmult_comm; generalize TypeSpeed_pos; intro H; generalize (H h);
clear H; intro H; generalize (Rinv_0_lt_compat h H);
intro H0; apply Rmult_lt_0_compat;
[ assumption | apply tan_lb_MaxBank_pos ]
| auto ] ].
(**********)
Lemma rho_pos : forall h : TypeSpeed, (0 < rho h)%R.
intro; apply Rlt_trans with (rho_lb h); [ apply rho_lb_pos | apply rho_lb_0 ].
(**********)
Lemma rho_ub_pos : forall h : TypeSpeed, (0 < rho_ub h)%R.
intro; apply Rlt_trans with (rho h); [ apply rho_pos | apply rho_ub_0 ].
(**********)
Lemma r_ub_0 : forall h : TypeSpeed, (r h < r_ub h)%R.
intros; unfold r, r_ub in |- *; generalize (rho_lb_0 h); intro H;
generalize (Rmult_lt_0_compat (rho_lb h) (rho h) (rho_lb_pos h) (rho_pos h));
intro H0; generalize (Rinv_lt_contravar (rho_lb h) (rho h) H0 H);
intro H1;
generalize (Rmult_lt_compat_l h (/ rho h) (/ rho_lb h) (TypeSpeed_pos h) H1);
intro H2; assumption.
(**********)
Lemma r_lb_0 : forall h : TypeSpeed, (r_lb h < r h)%R.
intros; unfold r, r_lb in |- *; generalize (rho_ub_0 h); intro H;
generalize (Rmult_lt_0_compat (rho h) (rho_ub h) (rho_pos h) (rho_ub_pos h));
intro H0; generalize (Rinv_lt_contravar (rho h) (rho_ub h) H0 H);
intro H1;
generalize (Rmult_lt_compat_l h (/ rho_ub h) (/ rho h) (TypeSpeed_pos h) H1);
intro H2; assumption.
(**********)
Lemma rho_PI2 : forall h : TypeSpeed, (rho h <= PI / 2)%R.
intro h; unfold rho in |- *; unfold Rdiv in |- *.
Lemma L_intruder : forall t : R, (l <= e t + i t)%R.
intro; apply Rsqr_incr_0.
Lemma L_e : forall t : R, (e t <= l + i t)%R.
intro.
Lemma Dhy :
forall t : R,
derive_pt hy t (hy_derivable t) = (- vi intr * sin (rho_vi * t))%R.
Lemma Dhx :
forall t : R,
derive_pt hx t (hx_derivable t) = (vi intr * cos (rho_vi * t))%R.
Lemma xp0_pos : Omega (beta + thetat intr 0) = true -> (0 <= xp 0)%R.
Proof with trivial.
Lemma Rle_250_880 : (250 <= MaxSpeed)%R.
unfold MaxSpeed in |- *; left; prove_sup.
(**********)
Lemma rho_V_is_pos : (0 < rho_V)%R.
unfold rho_V in |- *; apply rho_pos.
(**********)
Lemma m_le : forall t1 t2 : TimeT, (t1 <= t2)%R -> (m t1 <= m t2)%R.
Proof with trivial.
Lemma yi_derivable : derivable yi.
unfold yi in |- *; apply (cond_diff (y intr)).
Lemma xP_derivable : derivable xP.
unfold xP in |- *.
Lemma u_pos : forall (eps : posreal) (t : R), (0 <= u eps t)%R.
intros; left; apply u_stric_pos.
Lemma u0_pos : forall t : R, (0 <= u0 t)%R.
intros; unfold u0 in |- *; apply sqrt_positivity; apply Rplus_le_le_0_compat;
apply Rle_0_sqr.
(**********)
Lemma Rsqr_u_epsilon :
forall (eps : posreal) (t : R), Rsqr (u eps t) = (Rsqr (u0 t) + Rsqr eps)%R.
(**********)
Lemma u_epsilon_le_v :
forall (eps : posreal) (t : R), (derive_pt (u eps) t (d_u eps t) <= vi)%R.
Lemma derive_vit :
forall t : R, derive_pt (fun t : R => (vi * t)%R) t (vit_derivable t) = vi.
Lemma Rsy : forall t : R, yi intr t = (yi intr 0 + Rs t * sin (alphas t))%R.
intros; generalize (alphas_def t); intro H; elim H; intros;
rewrite Rplus_comm; assumption.
Lemma Rs_x :
forall t : R,
cos (alphas t) <> 0%R -> Rs t = ((xi intr t - xi intr 0) / cos (alphas t))%R.
(**********)
Lemma D_Rs_alphas2 :
forall t : R,
derive_pt (fun y : R => (Rs y * derive_pt alphas y (cond_D1 alphas y))%R) t
(fct_der5 t) =
(vi intr * cos (thetat t - alphas t) *
(derive_pt thetat t (thetat_derivable t) -
derive_pt alphas t (cond_D1 alphas t)))%R.
Lemma Rs_0 : Rs 0 = 0%R.
unfold Rs in |- *; unfold Rminus in |- *; repeat rewrite Rplus_opp_r;
repeat rewrite Rsqr_0; rewrite Rplus_0_r; rewrite sqrt_0;
reflexivity.
(**********)
Lemma D_Rs_0 : (0 <= derive_pt Rs 0 (Rs_derivable 0))%R.
case (Rtotal_order 0 (derive_pt Rs 0 (Rs_derivable 0%R))); intro.
(**********)
Lemma D_Rs_0_strong : (0 < derive_pt Rs 0 (Rs_derivable 0))%R.
case (Rtotal_order 0 (derive_pt Rs 0 (Rs_derivable 0%R))); intro.
(**********)
Lemma D_F :
forall t : R,
derive_pt F t (F_derivable t) = (vi intr * cos (rho (vi intr) * (t / 2)))%R.
Lemma tan_MaxBank_lb : (tan_lb_MaxBank < tan MaxBank)%R.
generalize tan_MaxBank_approx; intro H; elim H; intros H0 H1; assumption.
(**********)
Lemma tan_MaxBank_pos : (0 < tan MaxBank)%R.
apply Rlt_trans with tan_lb_MaxBank.
Lemma conflict_beta_theta :
forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT),
h intr = V ->
(MinDistance T <= l intr evad T)%R ->
(l intr evad T <= MaxDistance T)%R ->
Omega (beta intr evad T + thetat intr 0) = false ->
conflict intr evad T = true ->
(beta intr evad T + thetat intr 0 <= MinBeta)%R \/
(2 * PI - MinBeta < beta intr evad T + thetat intr 0)%R.
Lemma init_tr_cond_theta :
forall (h : TypeSpeed) (t : R),
derive_pt (fun t : R => 0%R) t (init_tr_derivable_y h t) =
(fun t : R => (g * (tan 0 / h))%R) t.