(* Specifications: *)
Lemma thetat_derivable : derivable (thetat intr).
Lemma Rle_201_250 : (MinSpeed <= 250)%R.
Lemma Rle_250_880 : (250 <= MaxSpeed)%R.
Lemma cond1_sty : forall (tr : Trajectory) (t : R), (- toDeg MaxBank <= toDeg (phi tr t))%R.
Lemma cond2_sty : forall (tr : Trajectory) (t : R), (toDeg (phi tr t) <= toDeg MaxBank)%R.
Lemma d_distance : forall (intr : Trajectory) (evad : EvaderTrajectory), distance (measure2state (tr evad) 0) (measure2state intr 0) = d intr evad.
Lemma R_T : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h (tr evad) = V -> Rsqr (RR (measure2state intr 0) (measure2state (tr evad) 0) T) = (Rsqr (l intr evad T * cos (beta intr evad T + thetat intr 0) - V * T) + Rsqr (l intr evad T * sin (beta intr evad T + thetat intr 0)))%R.
Lemma AlertRange_pos : (0 < AlertRange)%R.
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 alarm_NOT_Omega_T : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h intr = V -> h (tr evad) = 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 -> (RR (measure2state intr 0) (measure2state (tr evad) 0) T <= AlertRange)%R.
Lemma alarm_NOT_Omega_tau : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h intr = V -> h (tr evad) = 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 -> (0 < tau (measure2state intr 0) (measure2state (tr evad) 0) 0)%R -> (RR (measure2state intr 0) (measure2state (tr evad) 0) (tau (measure2state intr 0) (measure2state (tr evad) 0) 0) <= AlertRange)%R.
Lemma alarm_NOT_Omega_AlertTime : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h intr = V -> h (tr evad) = 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 -> (AlertTime < tau (measure2state intr 0) (measure2state (tr evad) 0) 0)%R -> (RR (measure2state intr 0) (measure2state (tr evad) 0) AlertTime <= AlertRange)%R.
Lemma chktrack_NOT_Omega_trkrate_eq_0 : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h intr = V -> h (tr evad) = 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 -> (0 < tau (measure2state intr 0) (measure2state (tr evad) 0) 0)%R -> chktrack (measure2state intr 0) (measure2state (tr evad) 0) 0.
Theorem ails_alarm_tau_gt0 : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h intr = V -> h (tr evad) = V -> (MinDistance T <= l intr evad T)%R -> (l intr evad T <= MaxDistance T)%R -> Omega (beta intr evad T + thetat intr 0) = false -> (0 < tau (measure2state intr 0) (measure2state (tr evad) 0) 0)%R -> conflict intr evad T = true -> ails_alert (measure2state intr 0) (measure2state (tr evad) 0).
Theorem ails_alarm_at_alerting_distance : forall (intr : Trajectory) (evad : EvaderTrajectory), (d intr evad <= AlertRange)%R -> ails_alert (measure2state intr 0) (measure2state (tr evad) 0).
Theorem ails_alarm_when_conflict : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h intr = V -> h (tr evad) = V -> (AlertRange < d intr evad)%R -> conflict intr evad T = true -> ails_alert (measure2state intr 0) (measure2state (tr evad) 0).
Theorem ails_correctness : forall (intr : Trajectory) (evad : EvaderTrajectory) (T : TimeT), h intr = V -> h (tr evad) = V -> conflict intr evad T = true -> ails_alert (measure2state intr 0) (measure2state (tr evad) 0).