1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
17 include "Insert/props.ma".
18 include "Track/defs.ma".
19 include "NTrack/inv.ma".
21 theorem ntrack_weak: \forall R,p,P,Q,S,i.
22 NTrack P p S \to Insert R i P Q \to
23 \exists q. NTrack Q q S.
24 intros 2; elim p; clear p;
25 [ lapply linear ntrack_inv_lref to H as H0; decompose;
26 lapply linear insert_trans to H, H1; decompose; autobatch
27 | lapply linear ntrack_inv_parx to H; destruct; autobatch
28 | lapply linear ntrack_inv_impw to H1; decompose; destruct;
29 lapply linear H to H4, H2; decompose; autobatch
30 | lapply linear ntrack_inv_impr to H1; decompose; destruct;
31 lapply linear H to H4, H2; decompose; autobatch
32 | lapply linear ntrack_inv_impi to H3; decompose; destruct;
33 lapply insert_conf to H4, H6; clear H6; decompose;
34 lapply H to H9, H4; clear H H9; lapply linear H1 to H8, H4;
35 lapply linear H2 to H7, H6; decompose; autobatch width = 4
36 | lapply linear ntrack_inv_scut to H2; decompose
40 theorem ntrack_comp: \forall R,q,p,P,Q,S,i.
41 NTrack P p R \to NTrack Q q S \to Insert R i P Q \to
42 \exists r. NTrack P r S.
43 intros 2; elim q; clear q;
44 [ lapply linear ntrack_inv_lref to H1 as H0; decompose;
45 lapply linear insert_conf_rev_full to H1,H2; decompose; destruct; autobatch
46 | lapply linear ntrack_inv_parx to H1; destruct; autobatch
47 | lapply linear ntrack_inv_impw to H2; decompose; destruct;
48 lapply linear H to H1, H5, H3; decompose; autobatch
49 | lapply linear ntrack_inv_impr to H2; decompose; destruct;
50 lapply linear H to H1, H5, H3; decompose; autobatch
51 | lapply linear ntrack_inv_impi to H4; decompose; destruct;
52 lapply insert_trans to H5, H7; clear H7; decompose;
53 lapply ntrack_weak to H3, H6; decompose;
54 lapply H to H3, H10, H5; clear H H10; lapply linear H1 to H3, H9, H5;
55 lapply linear H2 to H4, H8, H7; decompose; autobatch width = 4
56 | lapply linear ntrack_inv_scut to H3; decompose
60 theorem ntrack_track: \forall R,p,P. NTrack P p R \to Track P p R.
61 intros; elim H names 0; clear H P p R; intros; autobatch width = 4.