(* This program is free software; you can redistribute it and/or      *)
(* modify it under the terms of the GNU Lesser General Public License *)
(* as published by the Free Software Foundation; either version 2.1   *)
(* of the License, or (at your option) any later version.             *)
(*                                                                    *)
(* This program is distributed in the hope that it will be useful,    *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of     *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      *)
(* GNU General Public License for more details.                       *)
(*                                                                    *)
(* You should have received a copy of the GNU Lesser General Public   *)
(* License along with this program; if not, write to the Free         *)
(* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *)
(* 02110-1301 USA                                                     *)
Record Trajectory : Type := mkTrajectory
{x : Differential;
y : Differential;
theta : Differential;
phi : Differential;
h : TypeSpeed;
cond_x :
forall t : R, derive_pt x t (cond_diff x t) = (h * cos (theta t))%R;
cond_y :
forall t : R, derive_pt y t (cond_diff y t) = (h * sin (theta t))%R;
cond_phi : forall t : R, (- MaxBank <= phi t <= MaxBank)%R;
cond_theta :
forall t : R,
derive_pt theta t (cond_diff theta t) = (g * (tan (phi t) / h))%R}.
Record EvaderTrajectory : Type := mkEvaderTrajectory
{tr : Trajectory;
tr_cond1 : forall t : R, x tr t = (x tr 0 + h tr * t)%R;
tr_cond2 : forall t : R, y tr t = y tr 0%R;
tr_cond3 : forall t : R, theta tr t = 0%R;
tr_cond4 : forall t : R, phi tr t = 0%R}.

Lemma init_tr_derivable_x :
forall h : TypeSpeed, derivable (fun t : R => (h * t)%R).