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 (**************************************************************************)
15 include "basic_2/rt_transition/fpbc_feqg.ma".
16 include "basic_2/rt_transition/fpbc_fpb.ma".
17 include "basic_2/rt_computation/fpbs_feqg.ma".
19 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
21 (* Properties with proper parallel rst-reduction on closures ****************)
24 ∀G1,G2,L1,L2,T1,T2. ❨G1,L1,T1❩ ≻ ❨G2,L2,T2❩ →
25 ❨G1,L1,T1❩ ≥ ❨G2,L2,T2❩.
26 /3 width=1 by fpb_fpbs, fpbc_fwd_fpb/ qed.
28 (* Inversion lemmas with proper parallel rst-reduction on closures **********)
30 lemma fpbs_inv_fpbc_sn:
31 ∀G1,G2,L1,L2,T1,T2. ❨G1,L1,T1❩ ≥ ❨G2,L2,T2❩ →
32 ∨∨ ❨G1,L1,T1❩ ≅ ❨G2,L2,T2❩
33 | ∃∃G,L,T. ❨G1,L1,T1❩ ≻ ❨G,L,T❩ & ❨G,L,T❩ ≥ ❨G2,L2,T2❩.
34 #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2
35 [ /3 width=1 by feqg_refl, or_introl/
36 | #G #G2 #L #L2 #T #T2 #_ #H2 * [ #H1 | * #G0 #L0 #T0 #H10 #H0 ]
37 elim (fpb_inv_fpbc … H2) -H2 #H2
38 [ /3 width=5 by feqg_trans, or_introl/
39 | lapply (feqg_fpbc_trans … H1 … H2) -G -L -T //
40 /3 width=5 by fpb_fpbs, ex2_3_intro, or_intror/
41 | /4 width=12 by fpbs_feqg_trans, ex2_3_intro, or_intror/
42 | /5 width=9 by fpbs_strap1, fpbc_fwd_fpb, ex2_3_intro, or_intror/