]> matita.cs.unibo.it Git - helm.git/commitdiff
- we shared the atomic term constructions
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 29 Aug 2011 15:21:40 +0000 (15:21 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 29 Aug 2011 15:21:40 +0000 (15:21 +0000)
- we fixed the notation of the binary term construction
- we inverted the dependences of cl_shift and cl_weight

17 files changed:
matita/matita/contribs/lambda-delta/Basic-2/grammar/cl_shift.ma
matita/matita/contribs/lambda-delta/Basic-2/grammar/cl_weight.ma
matita/matita/contribs/lambda-delta/Basic-2/grammar/item.ma
matita/matita/contribs/lambda-delta/Basic-2/grammar/term.ma
matita/matita/contribs/lambda-delta/Basic-2/grammar/term_simple.ma
matita/matita/contribs/lambda-delta/Basic-2/grammar/term_weight.ma
matita/matita/contribs/lambda-delta/Basic-2/grammar/thom.ma
matita/matita/contribs/lambda-delta/Basic-2/notation.ma
matita/matita/contribs/lambda-delta/Basic-2/reduction/cpr.ma
matita/matita/contribs/lambda-delta/Basic-2/reduction/tpr.ma
matita/matita/contribs/lambda-delta/Basic-2/reduction/tpr_lift.ma
matita/matita/contribs/lambda-delta/Basic-2/reduction/tpr_tpr.ma
matita/matita/contribs/lambda-delta/Basic-2/substitution/drop.ma
matita/matita/contribs/lambda-delta/Basic-2/substitution/lift.ma
matita/matita/contribs/lambda-delta/Basic-2/substitution/tps.ma
matita/matita/contribs/lambda-delta/Basic-2/substitution/tps_lift.ma
matita/matita/contribs/lambda-delta/Basic-2/substitution/tps_tps.ma

index df96372befe0006a2e57f34b28c9ff7fdbf96faf..50898bbef1cfdb288e70ade6a6f8ab43f2802088 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "Basic-2/grammar/cl_weight.ma".
+include "Basic-2/grammar/lenv.ma".
 
 (* SHIFT OF A CLOSURE *******************************************************)
 
@@ -22,13 +22,3 @@ let rec shift L T on L β‰ match L with
 ].
 
 interpretation "shift (closure)" 'Append L T = (shift L T).
-
-(* Basic properties *********************************************************)
-
-lemma tw_shift: βˆ€L,T. #[L, T] β‰€ #[L @ T].
-#L elim L //
-#K #I #V #IHL #T
-@transitive_le [3: @IHL |2: /2/ | skip ]
-qed.
-
-           
index b501ef3e588f4060cc84927f8e9d208939f88d1f..899da07200e25bf527cc86b66d269c51cbd08dbc 100644 (file)
@@ -13,6 +13,7 @@
 (**************************************************************************)
 
 include "Basic-2/grammar/lenv_weight.ma".
+include "Basic-2/grammar/cl_shift.ma".
 
 (* WEIGHT OF A CLOSURE ******************************************************)
 
@@ -22,10 +23,16 @@ interpretation "weight (closure)" 'Weight L T = (cw L T).
 
 (* Basic properties *********************************************************)
 
-lemma cw_shift: βˆ€K,I,V,T. #[K. π•“{I} V, T] < #[K, π•“{I} V. T].
-normalize //
-qed.
-
 axiom cw_wf_ind: βˆ€R:lenvβ†’termβ†’Prop.
                  (βˆ€L2,T2. (βˆ€L1,T1. #[L1,T1] < #[L2,T2] β†’ R L1 T1) β†’ R L2 T2) β†’
                  βˆ€L,T. R L T.
+
+lemma cw_shift: βˆ€K,I,V,T. #[K. π•“{I} V, T] < #[K, π•”{I} V. T].
+normalize //
+qed.
+
+lemma tw_shift: βˆ€L,T. #[L, T] β‰€ #[L @ T].
+#L elim L //
+#K #I #V #IHL #T
+@transitive_le [3: @IHL |2: /2/ | skip ]
+qed.
index 37b5d18af99e4ea3e24109e080e6640f67c40902..b594c5a1206b65a55716c83ec16ccc53a810360c 100644 (file)
 include "Ground-2/list.ma".
 include "Basic-2/notation.ma".
 
-(* BINARY ITEMS *************************************************************)
+(* ITEMS ********************************************************************)
+
+(* atomic items *)
+inductive item0: Type[0] β‰
+   | Sort: nat β†’ item0 (* sort: starting at 0 *)
+   | LRef: nat β†’ item0 (* reference by index: starting at 0 *)
+.
 
 (* binary binding items *)
 inductive bind2: Type[0] β‰
-| Abbr: bind2 (* abbreviation *)
-| Abst: bind2 (* abstraction *)
+  | Abbr: bind2 (* abbreviation *)
+  | Abst: bind2 (* abstraction *)
 .
 
 (* binary non-binding items *)
 inductive flat2: Type[0] β‰
-| Appl: flat2 (* application *)
-| Cast: flat2 (* explicit type annotation *)
+  | Appl: flat2 (* application *)
+  | Cast: flat2 (* explicit type annotation *)
 .
 
 (* binary items *)
 inductive item2: Type[0] β‰
-| Bind: bind2 β†’ item2 (* binding item *)
-| Flat: flat2 β†’ item2 (* non-binding item *)
+  | Bind: bind2 β†’ item2 (* binding item *)
+  | Flat: flat2 β†’ item2 (* non-binding item *)
 .
 
 coercion item2_of_bind2: βˆ€I:bind2.item2 β‰ Bind on _I:bind2 to item2.
index 309df0b3f6b2e910977456c4cb521184d93afaac..3b6614361654328f5548874c8edc738713f32fbb 100644 (file)
@@ -18,14 +18,15 @@ include "Basic-2/grammar/item.ma".
 
 (* terms *)
 inductive term: Type[0] β‰
-| TSort: nat β†’ term                 (* sort: starting at 0 *)
-| TLRef: nat β†’ term                 (* reference by index: starting at 0 *)
-| TPair: item2 β†’ term β†’ term β†’ term (* binary item construction *)
+  | TAtom: item0 β†’ term               (* atomic item construction *)
+  | TPair: item2 β†’ term β†’ term β†’ term (* binary item construction *)
 .
 
-interpretation "sort (term)" 'Star k = (TSort k).
+interpretation "sort (term)" 'Star k = (TAtom (Sort k)).
 
-interpretation "local reference (term)" 'LRef i = (TLRef i).
+interpretation "local reference (term)" 'LRef i = (TAtom (LRef i)).
+
+interpretation "term construction (atomic)" 'SItem I = (TAtom I).
 
 interpretation "term construction (binary)" 'SItem I T1 T2 = (TPair I T1 T2).
 
index 4b4958e00707106b94ccee62b983b8a8099ce75f..c182ba36056da2b240a6ccfea49b0ef5bdccb604 100644 (file)
@@ -17,8 +17,7 @@ include "Basic-2/grammar/term.ma".
 (* SIMPLE (NEUTRAL) TERMS ***************************************************)
 
 inductive simple: term β†’ Prop β‰
-   | simple_sort: βˆ€k. simple (⋆k)
-   | simple_lref: βˆ€i. simple (#i)
+   | simple_atom: βˆ€I. simple (𝕒{I})
    | simple_flat: βˆ€I,V,T. simple (𝕗{I} V. T)
 .
 
@@ -28,8 +27,7 @@ interpretation "simple (term)" 'Simple T = (simple T).
 
 fact simple_inv_bind_aux: βˆ€T. π•Š[T] β†’ βˆ€J,W,U. T = π•“{J} W. U β†’ False.
 #T * -T
-[ #k #J #W #U #H destruct
-| #k #J #W #U #H destruct
+[ #I #J #W #U #H destruct
 | #I #V #T #J #W #U #H destruct
 ]
 qed.
index 3e70635072fdfe55d4c7a40e588355ad74cdab59..a960e48d171931b614ef5b4c1baeead1edca0134 100644 (file)
@@ -17,8 +17,7 @@ include "Basic-2/grammar/term.ma".
 (* WEIGHT OF A TERM *********************************************************)
 
 let rec tw T β‰ match T with
-[ TSort _     β‡’ 1
-| TLRef _     β‡’ 1
+[ TAtom _     β‡’ 1
 | TPair _ V T β‡’ tw V + tw T + 1
 ].
 
index 660fff5bf67a479e1de03649ff5d9129ba3cac44..34af6f9f488a05467bbbb2fb0367cc5b36948e3c 100644 (file)
@@ -17,11 +17,10 @@ include "Basic-2/grammar/term_simple.ma".
 (* HOMOMORPHIC TERMS ********************************************************)
 
 inductive thom: term β†’ term β†’ Prop β‰
-   | thom_sort: βˆ€k. thom (⋆k) (⋆k)
-   | thom_lref: βˆ€i. thom (#i) (#i)
-   | thom_abst: βˆ€V1,V2,T1,T2. thom (π•š{Abst} V1. T1) (π•š{Abst} V2. T2)
+   | thom_atom: βˆ€I. thom (𝕒{I}) (𝕒{I})
+   | thom_abst: βˆ€V1,V2,T1,T2. thom (𝕔{Abst} V1. T1) (𝕔{Abst} V2. T2)
    | thom_appl: βˆ€V1,V2,T1,T2. thom T1 T2 β†’ π•Š[T1] β†’ π•Š[T2] β†’
-                thom (Γ°\9d\95\9a{Appl} V1. T1) (Γ°\9d\95\9a{Appl} V2. T2)
+                thom (Γ°\9d\95\94{Appl} V1. T1) (Γ°\9d\95\94{Appl} V2. T2)
 .
 
 interpretation "homomorphic (term)" 'napart T1 T2 = (thom T1 T2).
index 653365be82d7b5cac573aefbbfdc19a403cb83ba..8f068effd4167c54b3eb844af106b465835431f4 100644 (file)
@@ -28,7 +28,11 @@ notation "hvbox( # term 90 k )"
  non associative with precedence 90
  for @{ 'LRef $k }.
 
-notation "hvbox( π•š { I } break term 90 T1 . break term 90 T )"
+notation "hvbox( π•’ { I } )"
+ non associative with precedence 90
+ for @{ 'SItem $I }.
+
+notation "hvbox( π•” { I } break term 90 T1 . break term 90 T )"
  non associative with precedence 90
  for @{ 'SItem $I $T1 $T }.
 
@@ -43,7 +47,11 @@ notation "hvbox( π•— { I } break term 90 T1 . break term 90 T )"
 notation "hvbox( T . break π•“ { I } break term 90 T1 )"
  non associative with precedence 89
  for @{ 'DBind $T $I $T1 }.
-
+(*
+notation > "hvbox( T . break π•” { I } break term 90 T1 )"
+ non associative with precedence 89
+ for @{ 'DBind $T $I $T1 }.
+*) (**) (* this breaks all parsing *)
 notation "hvbox( # [ x ] )"
  non associative with precedence 90
  for @{ 'Weight $x }.
index e06b8fa6d49b7f3c987d3548956b4ac795b914f5..de7daa04b3399888a082ad0752164585e08070b6 100644 (file)
@@ -59,7 +59,7 @@ lemma cpr_delta: βˆ€L,K,V,W,i.
 qed.
 
 lemma cpr_cast: βˆ€L,V,T1,T2.
-                L Γ’\8aΒ’ T1 Γ’\87\92 T2 Γ’\86\92 L Γ’\8aΒ’ Γ°\9d\95\97{Cast} V. T1 β‡’ T2.
+                L Γ’\8aΒ’ T1 Γ’\87\92 T2 Γ’\86\92 L Γ’\8aΒ’ Γ°\9d\95\94{Cast} V. T1 β‡’ T2.
 #L #V #T1 #T2 * /3/
 qed.
 
index e6dfc2c1d7fd845ac1acd8db195ec46265fe7270..3d441c93108eb34ab268fc5c1be470d416b96957 100644 (file)
@@ -17,22 +17,21 @@ include "Basic-2/substitution/tps.ma".
 (* CONTEXT-FREE PARALLEL REDUCTION ON TERMS *********************************)
 
 inductive tpr: term β†’ term β†’ Prop β‰
-| tpr_sort : βˆ€k. tpr (⋆k) (⋆k)
-| tpr_lref : βˆ€i. tpr (#i) (#i)
+| tpr_atom : βˆ€I. tpr (𝕒{I}) (𝕒{I})
 | tpr_flat : βˆ€I,V1,V2,T1,T2. tpr V1 V2 β†’ tpr T1 T2 β†’
              tpr (𝕗{I} V1. T1) (𝕗{I} V2. T2)
 | tpr_beta : βˆ€V1,V2,W,T1,T2.
              tpr V1 V2 β†’ tpr T1 T2 β†’
-             tpr (Γ°\9d\95\9a{Appl} V1. Γ°\9d\95\9a{Abst} W. T1) (Γ°\9d\95\9a{Abbr} V2. T2)
+             tpr (Γ°\9d\95\94{Appl} V1. Γ°\9d\95\94{Abst} W. T1) (Γ°\9d\95\94{Abbr} V2. T2)
 | tpr_delta: βˆ€I,V1,V2,T1,T2,T.
              tpr V1 V2 β†’ tpr T1 T2 β†’ β‹†.  π•“{I} V2 βŠ’ T2 [0, 1] β‰« T β†’
-             tpr (Γ°\9d\95\9a{I} V1. T1) (Γ°\9d\95\9a{I} V2. T)
+             tpr (Γ°\9d\95\93{I} V1. T1) (Γ°\9d\95\93{I} V2. T)
 | tpr_theta: βˆ€V,V1,V2,W1,W2,T1,T2.
              tpr V1 V2 β†’ β†‘[0,1] V2 β‰‘ V β†’ tpr W1 W2 β†’ tpr T1 T2 β†’
-             tpr (Γ°\9d\95\9a{Appl} V1. Γ°\9d\95\9a{Abbr} W1. T1) (Γ°\9d\95\9a{Abbr} W2. Γ°\9d\95\9a{Appl} V. T2)
+             tpr (Γ°\9d\95\94{Appl} V1. Γ°\9d\95\94{Abbr} W1. T1) (Γ°\9d\95\94{Abbr} W2. Γ°\9d\95\94{Appl} V. T2)
 | tpr_zeta : βˆ€V,T,T1,T2. β†‘[0,1] T1 β‰‘ T β†’ tpr T1 T2 β†’
-             tpr (Γ°\9d\95\9a{Abbr} V. T) T2
-| tpr_tau  : Γ’\88\80V,T1,T2. tpr T1 T2 Γ’\86\92 tpr (Γ°\9d\95\9a{Cast} V. T1) T2
+             tpr (Γ°\9d\95\94{Abbr} V. T) T2
+| tpr_tau  : Γ’\88\80V,T1,T2. tpr T1 T2 Γ’\86\92 tpr (Γ°\9d\95\94{Cast} V. T1) T2
 .
 
 interpretation
@@ -42,7 +41,7 @@ interpretation
 (* Basic properties *********************************************************)
 
 lemma tpr_bind: βˆ€I,V1,V2,T1,T2. V1 β‡’ V2 β†’ T1 β‡’ T2 β†’
-                                π•“{I} V1. T1 β‡’  π•“{I} V2. T2.
+                             π•“{I} V1. T1 β‡’  π•“{I} V2. T2.
 /2/ qed.
 
 lemma tpr_refl: βˆ€T. T β‡’ T.
@@ -52,10 +51,9 @@ qed.
 
 (* Basic inversion lemmas ***************************************************)
 
-fact tpr_inv_sort1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€k. U1 = β‹†k β†’ U2 = β‹†k.
+fact tpr_inv_atom1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€I. U1 = π•’{I} β†’ U2 = π•’{I}.
 #U1 #U2 * -U1 U2
-[ #k0 #k #H destruct -k0 //
-| #i #k #H destruct
+[ //
 | #I #V1 #V2 #T1 #T2 #_ #_ #k #H destruct
 | #V1 #V2 #W #T1 #T2 #_ #_ #k #H destruct
 | #I #V1 #V2 #T1 #T2 #T #_ #_ #_ #k #H destruct
@@ -65,34 +63,17 @@ fact tpr_inv_sort1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€k. U1 = β‹†k β†’ U2 = β‹†k.
 ]
 qed.
 
-lemma tpr_inv_sort1: βˆ€k,U2. β‹†k β‡’ U2 β†’ U2 = β‹†k.
-/2/ qed.
-
-fact tpr_inv_lref1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€i. U1 = #i β†’ U2 = #i.
-#U1 #U2 * -U1 U2
-[ #k #i #H destruct
-| #j #i #H destruct -j //
-| #I #V1 #V2 #T1 #T2 #_ #_ #i #H destruct
-| #V1 #V2 #W #T1 #T2 #_ #_ #i #H destruct
-| #I #V1 #V2 #T1 #T2 #T #_ #_ #_ #i #H destruct
-| #V #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #i #H destruct
-| #V #T #T1 #T2 #_ #_ #i #H destruct
-| #V #T1 #T2 #_ #i #H destruct
-]
-qed.
-
-lemma tpr_inv_lref1: βˆ€i,U2. #i β‡’ U2 β†’ U2 = #i.
+lemma tpr_inv_atom1: βˆ€I,U2. π•’{I} β‡’ U2 β†’ U2 = π•’{I}.
 /2/ qed.
 
 fact tpr_inv_bind1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€I,V1,T1. U1 = π•“{I} V1. T1 β†’
                         (βˆƒβˆƒV2,T2,T. V1 β‡’ V2 & T1 β‡’ T2 &
                                     β‹†.  π•“{I} V2 βŠ’ T2 [0, 1] β‰« T &
-                                    U2 = Γ°\9d\95\9a{I} V2. T
+                                    U2 = Γ°\9d\95\93{I} V2. T
                         ) βˆ¨
                         βˆƒβˆƒT. β†‘[0,1] T β‰‘ T1 & T β‡’ U2 & I = Abbr.
 #U1 #U2 * -U1 U2
-[ #k #I #V #T #H destruct
-| #i #I #V #T #H destruct
+[ #J #I #V #T #H destruct
 | #I1 #V1 #V2 #T1 #T2 #_ #_ #I #V #T #H destruct
 | #V1 #V2 #W #T1 #T2 #_ #_ #I #V #T #H destruct
 | #I1 #V1 #V2 #T1 #T2 #T #HV12 #HT12 #HT2 #I0 #V0 #T0 #H destruct -I1 V1 T1 /3 width=7/
@@ -105,102 +86,90 @@ qed.
 lemma tpr_inv_bind1: βˆ€V1,T1,U2,I. π•“{I} V1. T1 β‡’ U2 β†’
                      (βˆƒβˆƒV2,T2,T. V1 β‡’ V2 & T1 β‡’ T2 &
                                  β‹†.  π•“{I} V2 βŠ’ T2 [0, 1] β‰« T &
-                                 U2 = Γ°\9d\95\9a{I} V2. T
+                                 U2 = Γ°\9d\95\93{I} V2. T
                      ) βˆ¨
                      βˆƒβˆƒT. β†‘[0,1] T β‰‘ T1 & tpr T U2 & I = Abbr.
 /2/ qed.
 
-lemma tpr_inv_abbr1: Γ’\88\80V1,T1,U2. Γ°\9d\95\9a{Abbr} V1. T1 β‡’ U2 β†’
+lemma tpr_inv_abbr1: Γ’\88\80V1,T1,U2. Γ°\9d\95\93{Abbr} V1. T1 β‡’ U2 β†’
                      (βˆƒβˆƒV2,T2,T. V1 β‡’ V2 & T1 β‡’ T2 &
                                  β‹†.  π•“{Abbr} V2 βŠ’ T2 [0, 1] β‰« T &
-                                 U2 = Γ°\9d\95\9a{Abbr} V2. T
+                                 U2 = Γ°\9d\95\93{Abbr} V2. T
                       ) βˆ¨
                       βˆƒβˆƒT. β†‘[0,1] T β‰‘ T1 & tpr T U2.
 #V1 #T1 #U2 #H
 elim (tpr_inv_bind1 β€¦ H) -H * /3 width=7/
 qed.
 
-fact tpr_inv_appl1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€V1,U0. U1 = π•š{Appl} V1. U0 β†’
+fact tpr_inv_flat1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€I,V1,U0. U1 = π•—{I} V1. U0 β†’
                         βˆ¨βˆ¨ βˆƒβˆƒV2,T2.            V1 β‡’ V2 & U0 β‡’ T2 &
-                                               U2 = Γ°\9d\95\9a{Appl} V2. T2
+                                               U2 = Γ°\9d\95\97{I} V2. T2
                          | βˆƒβˆƒV2,W,T1,T2.       V1 β‡’ V2 & T1 β‡’ T2 &
-                                               U0 = Γ°\9d\95\9a{Abst} W. T1 &
-                                               U2 = Γ°\9d\95\93{Abbr} V2. T2
+                                               U0 = Γ°\9d\95\94{Abst} W. T1 &
+                                               U2 = Γ°\9d\95\94{Abbr} V2. T2 & I = Appl
                          | βˆƒβˆƒV2,V,W1,W2,T1,T2. V1 β‡’ V2 & W1 β‡’ W2 & T1 β‡’ T2 &
                                                β†‘[0,1] V2 β‰‘ V &
-                                               U0 = π•š{Abbr} W1. T1 &
-                                               U2 = π•š{Abbr} W2. π•š{Appl} V. T2.
+                                               U0 = π•”{Abbr} W1. T1 &
+                                               U2 = π•”{Abbr} W2. π•”{Appl} V. T2 &
+                                               I = Appl
+                         |                     (U0 β‡’ U2 βˆ§ I = Cast).
 #U1 #U2 * -U1 U2
-[ #k #V #T #H destruct
-| #i #V #T #H destruct
-| #I #V1 #V2 #T1 #T2 #HV12 #HT12 #V #T #H destruct -I V1 T1 /3 width=5/
-| #V1 #V2 #W #T1 #T2 #HV12 #HT12 #V #T #H destruct -V1 T /3 width=8/
-| #I #V1 #V2 #T1 #T2 #T #_ #_ #_ #V0 #T0 #H destruct
-| #V #V1 #V2 #W1 #W2 #T1 #T2 #HV12 #HV2 #HW12 #HT12 #V0 #T0 #H
-  destruct -V1 T0 /3 width=12/
-| #V #T #T1 #T2 #_ #_ #V0 #T0 #H destruct
-| #V #T1 #T2 #_ #V0 #T0 #H destruct
+[ #I #J #V #T #H destruct
+| #I #V1 #V2 #T1 #T2 #HV12 #HT12 #J #V #T #H destruct -I V1 T1 /3 width=5/
+| #V1 #V2 #W #T1 #T2 #HV12 #HT12 #J #V #T #H destruct -J V1 T /3 width=8/
+| #I #V1 #V2 #T1 #T2 #T #_ #_ #_ #J #V0 #T0 #H destruct
+| #V #V1 #V2 #W1 #W2 #T1 #T2 #HV12 #HV2 #HW12 #HT12 #J #V0 #T0 #H
+  destruct -J V1 T0 /3 width=12/
+| #V #T #T1 #T2 #_ #_ #J #V0 #T0 #H destruct
+| #V #T1 #T2 #HT12 #J #V0 #T0 #H destruct -J V T1 /3/
 ]
 qed.
 
-lemma tpr_inv_appl1: βˆ€V1,U0,U2. π•š{Appl} V1. U0 β‡’ U2 β†’
+lemma tpr_inv_flat1: βˆ€V1,U0,U2,I. π•—{I} V1. U0 β‡’ U2 β†’
                      βˆ¨βˆ¨ βˆƒβˆƒV2,T2.            V1 β‡’ V2 & U0 β‡’ T2 &
-                                            U2 = Γ°\9d\95\9a{Appl} V2. T2
+                                            U2 = Γ°\9d\95\97{I} V2. T2
                       | βˆƒβˆƒV2,W,T1,T2.       V1 β‡’ V2 & T1 β‡’ T2 &
-                                            U0 = Γ°\9d\95\9a{Abst} W. T1 &
-                                            U2 = Γ°\9d\95\93{Abbr} V2. T2
+                                            U0 = Γ°\9d\95\94{Abst} W. T1 &
+                                            U2 = Γ°\9d\95\94{Abbr} V2. T2 & I = Appl
                       | βˆƒβˆƒV2,V,W1,W2,T1,T2. V1 β‡’ V2 & W1 β‡’ W2 & T1 β‡’ T2 &
                                             β†‘[0,1] V2 β‰‘ V &
-                                            U0 = π•š{Abbr} W1. T1 &
-                                            U2 = π•š{Abbr} W2. π•š{Appl} V. T2.
-/2/ qed.
-
-fact tpr_inv_cast1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€V1,T1. U1 = π•š{Cast} V1. T1 β†’
-                        (βˆƒβˆƒV2,T2. V1 β‡’ V2 & T1 β‡’ T2 & U2 = π•š{Cast} V2. T2)
-                        βˆ¨ T1 β‡’ U2.
-#U1 #U2 * -U1 U2
-[ #k #V #T #H destruct
-| #i #V #T #H destruct
-| #I #V1 #V2 #T1 #T2 #HV12 #HT12 #V #T #H destruct -I V1 T1 /3 width=5/
-| #V1 #V2 #W #T1 #T2 #_ #_ #V #T #H destruct
-| #I #V1 #V2 #T1 #T2 #T #_ #_ #_ #V0 #T0 #H destruct
-| #V #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #V0 #T0 #H destruct
-| #V #T #T1 #T2 #_ #_ #V0 #T0 #H destruct
-| #V #T1 #T2 #HT12 #V0 #T0 #H destruct -V T1 /2/
-]
-qed.
-
-lemma tpr_inv_cast1: βˆ€V1,T1,U2. π•š{Cast} V1. T1 β‡’ U2 β†’
-                       (βˆƒβˆƒV2,T2. V1 β‡’ V2 & T1 β‡’ T2 & U2 = π•š{Cast} V2. T2)
-                     βˆ¨ T1 β‡’ U2.
+                                            U0 = π•”{Abbr} W1. T1 &
+                                            U2 = π•”{Abbr} W2. π•”{Appl} V. T2 &
+                                            I = Appl
+                      |                     (U0 β‡’ U2 βˆ§ I = Cast).
 /2/ qed.
 
-lemma tpr_inv_flat1: βˆ€V1,U0,U2,I. π•—{I} V1. U0 β‡’ U2 β†’
+lemma tpr_inv_appl1: βˆ€V1,U0,U2. π•”{Appl} V1. U0 β‡’ U2 β†’
                      βˆ¨βˆ¨ βˆƒβˆƒV2,T2.            V1 β‡’ V2 & U0 β‡’ T2 &
-                                            U2 = Γ°\9d\95\97{I} V2. T2
+                                            U2 = Γ°\9d\95\94{Appl} V2. T2
                       | βˆƒβˆƒV2,W,T1,T2.       V1 β‡’ V2 & T1 β‡’ T2 &
-                                            U0 = Γ°\9d\95\9a{Abst} W. T1 &
-                                            U2 = Γ°\9d\95\93{Abbr} V2. T2 & I = Appl
+                                            U0 = Γ°\9d\95\94{Abst} W. T1 &
+                                            U2 = Γ°\9d\95\94{Abbr} V2. T2
                       | βˆƒβˆƒV2,V,W1,W2,T1,T2. V1 β‡’ V2 & W1 β‡’ W2 & T1 β‡’ T2 &
                                             β†‘[0,1] V2 β‰‘ V &
-                                            U0 = π•š{Abbr} W1. T1 &
-                                            U2 = π•š{Abbr} W2. π•š{Appl} V. T2 &
-                                            I = Appl
-                      |                     (U0 β‡’ U2 βˆ§ I = Cast).
-#V1 #U0 #U2 * #H
-[ elim (tpr_inv_appl1 β€¦ H) -H * /3 width=12/
-| elim (tpr_inv_cast1 β€¦ H) -H [1: *] /3 width=5/
+                                            U0 = π•”{Abbr} W1. T1 &
+                                            U2 = π•”{Abbr} W2. π•”{Appl} V. T2.
+#V1 #U0 #U2 #H
+elim (tpr_inv_flat1 β€¦ H) -H * /3 width=12/ #_ #H destruct
+qed.
+
+lemma tpr_inv_cast1: βˆ€V1,T1,U2. π•”{Cast} V1. T1 β‡’ U2 β†’
+                       (βˆƒβˆƒV2,T2. V1 β‡’ V2 & T1 β‡’ T2 & U2 = π•”{Cast} V2. T2)
+                     βˆ¨ T1 β‡’ U2.
+#V1 #T1 #U2 #H
+elim (tpr_inv_flat1 β€¦ H) -H * /3 width=5/
+[ #V2 #W #W1 #W2 #_ #_ #_ #_ #H destruct
+| #V2 #W #W1 #W2 #T2 #U1 #_ #_ #_ #_ #_ #_ #H destruct
 ]
 qed.
 
 fact tpr_inv_lref2_aux: βˆ€T1,T2. T1 β‡’ T2 β†’ βˆ€i. T2 = #i β†’
                         βˆ¨βˆ¨           T1 = #i
                          | βˆƒβˆƒV,T,T0. β†‘[O,1] T0 β‰‘ T & T0 β‡’ #i &
-                                     T1 = Γ°\9d\95\9a{Abbr} V. T
-                         | Γ’\88\83Γ’\88\83V,T.    T Γ’\87\92 #i & T1 = Γ°\9d\95\9a{Cast} V. T.
+                                     T1 = Γ°\9d\95\94{Abbr} V. T
+                         | Γ’\88\83Γ’\88\83V,T.    T Γ’\87\92 #i & T1 = Γ°\9d\95\94{Cast} V. T.
 #T1 #T2 * -T1 T2
-[ #k #i #H destruct
-| #j #i /2/
+[ #I #i #H destruct /2/
 | #I #V1 #V2 #T1 #T2 #_ #_ #i #H destruct
 | #V1 #V2 #W #T1 #T2 #_ #_ #i #H destruct
 | #I #V1 #V2 #T1 #T2 #T #_ #_ #_ #i #H destruct
@@ -213,6 +182,6 @@ qed.
 lemma tpr_inv_lref2: βˆ€T1,i. T1 β‡’ #i β†’
                      βˆ¨βˆ¨           T1 = #i
                       | βˆƒβˆƒV,T,T0. β†‘[O,1] T0 β‰‘ T & T0 β‡’ #i &
-                                  T1 = Γ°\9d\95\93{Abbr} V. T
-                      | Γ’\88\83Γ’\88\83V,T.    T Γ’\87\92 #i & T1 = Γ°\9d\95\97{Cast} V. T.
+                                  T1 = Γ°\9d\95\94{Abbr} V. T
+                      | Γ’\88\83Γ’\88\83V,T.    T Γ’\87\92 #i & T1 = Γ°\9d\95\94{Cast} V. T.
 /2/ qed.
index a748416f00e9369576347893e1765bac4ff801a8..66e872eaea682d5d7e5c755c53f170ca2bb20f2c 100644 (file)
@@ -20,12 +20,11 @@ include "Basic-2/reduction/tpr.ma".
 lemma tpr_lift: βˆ€T1,T2. T1 β‡’ T2 β†’
                 βˆ€d,e,U1. β†‘[d, e] T1 β‰‘ U1 β†’ βˆ€U2. β†‘[d, e] T2 β‰‘ U2 β†’ U1 β‡’ U2.
 #T1 #T2 #H elim H -H T1 T2
-[ #k #d #e #U1 #HU1 #U2 #HU2
-  lapply (lift_mono β€¦ HU1 β€¦ HU2) -HU1 #H destruct -U1;
-  lapply (lift_inv_sort1 β€¦ HU2) -HU2 #H destruct -U2 //
-| #i #d #e #U1 #HU1 #U2 #HU2
-  lapply (lift_mono β€¦ HU1 β€¦ HU2) -HU1 #H destruct -U1;
-  lapply (lift_inv_lref1 β€¦ HU2) * * #Hid #H destruct -U2 //
+[ * #i #d #e #U1 #HU1 #U2 #HU2
+  lapply (lift_mono β€¦ HU1 β€¦ HU2) -HU1 #H destruct -U1
+  [ lapply (lift_inv_sort1 β€¦ HU2) -HU2 #H destruct -U2 //
+  | lapply (lift_inv_lref1 β€¦ HU2) * * #Hid #H destruct -U2 //
+  ]
 | #I #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #d #e #X1 #HX1 #X2 #HX2
   elim (lift_inv_flat1 β€¦ HX1) -HX1 #W1 #U1 #HVW1 #HTU1 #HX1 destruct -X1;
   elim (lift_inv_flat1 β€¦ HX2) -HX2 #W2 #U2 #HVW2 #HTU2 #HX2 destruct -X2 /3/
@@ -57,10 +56,10 @@ lemma tpr_inv_lift: βˆ€T1,T2. T1 β‡’ T2 β†’
                     βˆ€d,e,U1. β†‘[d, e] U1 β‰‘ T1 β†’
                     βˆƒβˆƒU2. β†‘[d, e] U2 β‰‘ T2 & U1 β‡’ U2.
 #T1 #T2 #H elim H -H T1 T2
-[ #k #d #e #U1 #HU1
-  lapply (lift_inv_sort2 β€¦ HU1) -HU1 #H destruct -U1 /2/
-| #i #d #e #U1 #HU1
-  lapply (lift_inv_lref2 β€¦ HU1) -HU1 * * #Hid #H destruct -U1 /3/
+[ * #i #d #e #U1 #HU1
+  lapply (lift_inv_sort2 β€¦ HU1) -HU1 #H destruct -U1 /2/
+  | lapply (lift_inv_lref2 β€¦ HU1) -HU1 * * #Hid #H destruct -U1 /3/
+  ]
 | #I #V1 #V2 #T1 #T2 #_ #_ #IHV12 #IHT12 #d #e #X #HX
   elim (lift_inv_flat2 β€¦ HX) -HX #V0 #T0 #HV01 #HT01 #HX destruct -X;
   elim (IHV12 β€¦ HV01) -IHV12 HV01;
@@ -96,11 +95,10 @@ qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-fact tpr_inv_abst1_aux: Γ’\88\80U1,U2. U1 Γ’\87\92 U2 Γ’\86\92 Γ’\88\80V1,T1. U1 = Γ°\9d\95\9a{Abst} V1. T1 β†’
-                        Γ’\88\83Γ’\88\83V2,T2. V1 Γ’\87\92 V2 & T1 Γ’\87\92 T2 & U2 = Γ°\9d\95\9a{Abst} V2. T2.
+fact tpr_inv_abst1_aux: Γ’\88\80U1,U2. U1 Γ’\87\92 U2 Γ’\86\92 Γ’\88\80V1,T1. U1 = Γ°\9d\95\94{Abst} V1. T1 β†’
+                        Γ’\88\83Γ’\88\83V2,T2. V1 Γ’\87\92 V2 & T1 Γ’\87\92 T2 & U2 = Γ°\9d\95\94{Abst} V2. T2.
 #U1 #U2 * -U1 U2
-[ #k #V #T #H destruct
-| #i #V #T #H destruct
+[ #I #V #T #H destruct
 | #I #V1 #V2 #T1 #T2 #_ #_ #V #T #H destruct
 | #V1 #V2 #W #T1 #T2 #_ #_ #V #T #H destruct
 | #I #V1 #V2 #T1 #T2 #T #HV12 #HT12 #HT2 #V0 #T0 #H destruct -I V1 T1;
@@ -111,6 +109,6 @@ fact tpr_inv_abst1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€V1,T1. U1 = π•š{Abst} V1. T1
 ]
 qed.
 
-lemma tpr_inv_abst1: Γ’\88\80V1,T1,U2. Γ°\9d\95\9a{Abst} V1. T1 β‡’ U2 β†’
-                     Γ’\88\83Γ’\88\83V2,T2. V1 Γ’\87\92 V2 & T1 Γ’\87\92 T2 & U2 = Γ°\9d\95\9a{Abst} V2. T2.
+lemma tpr_inv_abst1: Γ’\88\80V1,T1,U2. Γ°\9d\95\94{Abst} V1. T1 β‡’ U2 β†’
+                     Γ’\88\83Γ’\88\83V2,T2. V1 Γ’\87\92 V2 & T1 Γ’\87\92 T2 & U2 = Γ°\9d\95\94{Abst} V2. T2.
 /2/ qed.
index aa55eb8b527373e433cba65c7e25f634d8094519..27f09e20a36b7c7d80d305b4b0173bb7dac3ceb6 100644 (file)
@@ -20,10 +20,7 @@ include "Basic-2/reduction/tpr_tps.ma".
 
 (* Confluence lemmas ********************************************************)
 
-fact tpr_conf_sort_sort: βˆ€k. βˆƒβˆƒX. β‹†k β‡’ X & β‹†k β‡’ X.
-/2/ qed.
-
-fact tpr_conf_lref_lref: βˆ€i. βˆƒβˆƒX. #i β‡’ X & #i β‡’ X.
+fact tpr_conf_atom_atom: βˆ€I. βˆƒβˆƒX. π•’{I} β‡’ X & π•’{I} β‡’ X.
 /2/ qed.
 
 fact tpr_conf_flat_flat:
@@ -46,8 +43,8 @@ fact tpr_conf_flat_beta:
       βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
    V0 β‡’ V1 β†’ V0 β‡’ V2 β†’
-   U0 Γ’\87\92 T2 Γ’\86\92 Γ°\9d\95\93{Abst} W0. U0 β‡’ T1 β†’
-   Γ’\88\83Γ’\88\83X. Γ°\9d\95\97{Appl} V1. T1 Γ’\87\92 X & Γ°\9d\95\93{Abbr} V2. T2 β‡’ X.
+   U0 Γ’\87\92 T2 Γ’\86\92 Γ°\9d\95\94{Abst} W0. U0 β‡’ T1 β†’
+   Γ’\88\83Γ’\88\83X. Γ°\9d\95\94{Appl} V1. T1 Γ’\87\92 X & Γ°\9d\95\94{Abbr} V2. T2 β‡’ X.
 #V0 #V1 #T1 #V2 #W0 #U0 #T2 #IH #HV01 #HV02 #HT02 #H
 elim (tpr_inv_abst1 β€¦ H) -H #W1 #U1 #HW01 #HU01 #H destruct -T1;
 elim (IH β€¦ HV01 β€¦ HV02) -HV01 HV02 // #V #HV1 #HV2
@@ -61,8 +58,8 @@ fact tpr_conf_flat_theta:
       βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
    V0 β‡’ V1 β†’ V0 β‡’ V2 β†’ β†‘[O,1] V2 β‰‘ V β†’
-   W0 Γ’\87\92 W2 Γ’\86\92 U0 Γ’\87\92 U2 Γ’\86\92  Γ°\9d\95\93{Abbr} W0. U0 β‡’ T1 β†’
-   Γ’\88\83Γ’\88\83X. Γ°\9d\95\97{Appl} V1. T1 Γ’\87\92 X & Γ°\9d\95\93{Abbr} W2. Γ°\9d\95\97{Appl} V. U2 β‡’ X.
+   W0 Γ’\87\92 W2 Γ’\86\92 U0 Γ’\87\92 U2 Γ’\86\92  Γ°\9d\95\94{Abbr} W0. U0 β‡’ T1 β†’
+   Γ’\88\83Γ’\88\83X. Γ°\9d\95\94{Appl} V1. T1 Γ’\87\92 X & Γ°\9d\95\94{Abbr} W2. Γ°\9d\95\94{Appl} V. U2 β‡’ X.
 #V0 #V1 #T1 #V2 #V #W0 #W2 #U0 #U2 #IH #HV01 #HV02 #HV2 #HW02 #HU02 #H
 elim (IH β€¦ HV01 β€¦ HV02) -HV01 HV02 // #VV #HVV1 #HVV2
 elim (lift_total VV 0 1) #VVV #HVV
@@ -98,7 +95,7 @@ fact tpr_conf_flat_cast:
       βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
    V0 β‡’ V1 β†’ T0 β‡’ T1 β†’ T0 β‡’ X2 β†’
-   Γ’\88\83Γ’\88\83X. Γ°\9d\95\97{Cast} V1. T1 β‡’ X & X2 β‡’ X.
+   Γ’\88\83Γ’\88\83X. Γ°\9d\95\94{Cast} V1. T1 β‡’ X & X2 β‡’ X.
 #X2 #V0 #V1 #T0 #T1 #IH #_ #HT01 #HT02
 elim (IH β€¦ HT01 β€¦ HT02) -HT01 HT02 IH /3/
 qed.
@@ -110,7 +107,7 @@ fact tpr_conf_beta_beta:
       βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
    V0 β‡’ V1 β†’ V0 β‡’ V2 β†’ T0 β‡’ T1 β†’ T0 β‡’ T2 β†’
-   Γ’\88\83Γ’\88\83X. Γ°\9d\95\93{Abbr} V1. T1 Γ’\87\92X & Γ°\9d\95\93{Abbr} V2. T2 β‡’ X.
+   Γ’\88\83Γ’\88\83X. Γ°\9d\95\94{Abbr} V1. T1 Γ’\87\92X & Γ°\9d\95\94{Abbr} V2. T2 β‡’ X.
 #W0 #V0 #V1 #T0 #T1 #V2 #T2 #IH #HV01 #HV02 #HT01 #HT02
 elim (IH β€¦ HV01 β€¦ HV02) -HV01 HV02 //
 elim (IH β€¦ HT01 β€¦ HT02) -HT01 HT02 IH /3 width=5/
@@ -159,7 +156,7 @@ fact tpr_conf_theta_theta:
    ) β†’
    V0 β‡’ V1 β†’ V0 β‡’ V2 β†’ W0 β‡’ W1 β†’ W0 β‡’ W2 β†’ T0 β‡’ T1 β†’ T0 β‡’ T2 β†’
    β†‘[O, 1] V1 β‰‘ VV1 β†’ β†‘[O, 1] V2 β‰‘ VV2 β†’
-   Γ’\88\83Γ’\88\83X. Γ°\9d\95\93{Abbr} W1. Γ°\9d\95\97{Appl} VV1. T1 Γ’\87\92 X & Γ°\9d\95\93{Abbr} W2. Γ°\9d\95\97{Appl} VV2. T2 β‡’ X.
+   Γ’\88\83Γ’\88\83X. Γ°\9d\95\94{Abbr} W1. Γ°\9d\95\94{Appl} VV1. T1 Γ’\87\92 X & Γ°\9d\95\94{Abbr} W2. Γ°\9d\95\94{Appl} VV2. T2 β‡’ X.
 #VV1 #V0 #V1 #W0 #W1 #T0 #T1 #V2 #VV2 #W2 #T2 #IH #HV01 #HV02 #HW01 #HW02 #HT01 #HT02 #HVV1 #HVV2
 elim (IH β€¦ HV01 β€¦ HV02) -HV01 HV02 // #V #HV1 #HV2
 elim (IH β€¦ HW01 β€¦ HW02) -HW01 HW02 // #W #HW1 #HW2
@@ -208,75 +205,71 @@ fact tpr_conf_aux:
    βˆ€X0,X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’ X0 = Y0 β†’
    βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X.
 #Y0 #IH #X0 #X1 #X2 * -X0 X1
-[ #k1 #H1 #H2 destruct -Y0;
-  lapply (tpr_inv_sort1 β€¦ H1) -H1
-(* case 1: sort, sort *)
-  #H1 destruct -X2 //
-| #i1 #H1 #H2 destruct -Y0;
-  lapply (tpr_inv_lref1 β€¦ H1) -H1
-(* case 2: lref, lref *)
+[ #I1 #H1 #H2 destruct -Y0;
+  lapply (tpr_inv_atom1 β€¦ H1) -H1
+(* case 1: atom, atom *)
   #H1 destruct -X2 //
 | #I #V0 #V1 #T0 #T1 #HV01 #HT01 #H1 #H2 destruct -Y0;
   elim (tpr_inv_flat1 β€¦ H1) -H1 *
-(* case 3: flat, flat *)
+(* case 2: flat, flat *)
   [ #V2 #T2 #HV02 #HT02 #H destruct -X2
     /3 width=7 by tpr_conf_flat_flat/ (**) (* /3 width=7/ is too slow *)
-(* case 4: flat, beta *)
+(* case 3: flat, beta *)
   | #V2 #W #U0 #T2 #HV02 #HT02 #H1 #H2 #H3 destruct -T0 X2 I
     /3 width=8 by tpr_conf_flat_beta/ (**) (* /3 width=8/ is too slow *)
-(* case 5: flat, theta *)
+(* case 4: flat, theta *)
   | #V2 #V #W0 #W2 #U0 #U2 #HV02 #HW02 #HT02 #HV2 #H1 #H2 #H3 destruct -T0 X2 I
     /3 width=11 by tpr_conf_flat_theta/ (**) (* /3 width=11/ is too slow *)
-(* case 6: flat, tau *)
+(* case 5: flat, tau *)
   | #HT02 #H destruct -I
     /3 width=6 by tpr_conf_flat_cast/ (**) (* /3 width=6/ is too slow *)
   ]
 | #V0 #V1 #W0 #T0 #T1 #HV01 #HT01 #H1 #H2 destruct -Y0;
   elim (tpr_inv_appl1 β€¦ H1) -H1 *
-(* case 7: beta, flat (repeated) *)
+(* case 6: beta, flat (repeated) *)
   [ #V2 #T2 #HV02 #HT02 #H destruct -X2
     @ex2_1_comm /3 width=8 by tpr_conf_flat_beta/
-(* case 8: beta, beta *)
+(* case 7: beta, beta *)
   | #V2 #WW0 #TT0 #T2 #HV02 #HT02 #H1 #H2 destruct -W0 T0 X2
     /3 width=8 by tpr_conf_beta_beta/ (**) (* /3 width=8/ is too slow *)
-(* case 9, beta, theta (excluded) *)
+(* case 8, beta, theta (excluded) *)
   | #V2 #VV2 #WW0 #W2 #TT0 #T2 #_ #_ #_ #_ #H destruct
   ]
 | #I1 #V0 #V1 #T0 #T1 #TT1 #HV01 #HT01 #HTT1 #H1 #H2 destruct -Y0;
   elim (tpr_inv_bind1 β€¦ H1) -H1 *
-(* case 10: delta, delta *)
+(* case 9: delta, delta *)
   [ #V2 #T2 #TT2 #HV02 #HT02 #HTT2 #H destruct -X2
     /3 width=11 by tpr_conf_delta_delta/ (**) (* /3 width=11/ is too slow *)
-(* case 11: delta, zata *)
+(* case 10: delta, zata *)
   | #T2 #HT20 #HTX2 #H destruct -I1;
     /3 width=10 by tpr_conf_delta_zeta/ (**) (* /3 width=10/ is too slow *)
   ]
 | #VV1 #V0 #V1 #W0 #W1 #T0 #T1 #HV01 #HVV1 #HW01 #HT01 #H1 #H2 destruct -Y0;
   elim (tpr_inv_appl1 β€¦ H1) -H1 *
-(* case 12: theta, flat (repeated) *)
+(* case 11: theta, flat (repeated) *)
   [ #V2 #T2 #HV02 #HT02 #H destruct -X2
     @ex2_1_comm /3 width=11 by tpr_conf_flat_theta/
-(* case 13: theta, beta (repeated) *)
+(* case 12: theta, beta (repeated) *)
   | #V2 #WW0 #TT0 #T2 #_ #_ #H destruct
-(* case 14: theta, theta *)
+(* case 13: theta, theta *)
   | #V2 #VV2 #WW0 #W2 #TT0 #T2 #V02 #HW02 #HT02 #HVV2 #H1 #H2 destruct -W0 T0 X2
     /3 width=14 by tpr_conf_theta_theta/ (**) (* /3 width=14/ is too slow *)
   ]
 | #V0 #TT0 #T0 #T1 #HTT0 #HT01 #H1 #H2 destruct -Y0;
   elim (tpr_inv_abbr1 β€¦ H1) -H1 *
-(* case 15: zeta, delta (repeated) *)
+(* case 14: zeta, delta (repeated) *)
   [ #V2 #T2 #TT2 #HV02 #HT02 #HTT2 #H destruct -X2
     @ex2_1_comm /3 width=10 by tpr_conf_delta_zeta/
-(* case 16: zeta, zeta *)
+(* case 15: zeta, zeta *)
   | #T2 #HTT20 #HTX2
     /3 width=9 by tpr_conf_zeta_zeta/ (**) (* /3 width=9/ is too slow *)
   ] 
 | #V0 #T0 #T1 #HT01 #H1 #H2 destruct -Y0;
   elim (tpr_inv_cast1 β€¦ H1) -H1
-(* case 17: tau, flat (repeated) *)
+(* case 16: tau, flat (repeated) *)
   [ * #V2 #T2 #HV02 #HT02 #H destruct -X2
     @ex2_1_comm /3 width=6 by tpr_conf_flat_cast/
-(* case 18: tau, tau *)
+(* case 17: tau, tau *)
   | #HT02
     /2 by tpr_conf_tau_tau/
   ]
index 149fabde329ed02a19ac3c410e12312d9ea98d84..65aaf3d4ee477da17109e981de3dfdde8f9ab448 100644 (file)
@@ -205,7 +205,7 @@ qed.
 
 (* Basic-1: removed theorems 18:
             drop_skip_flat
-           cimp_flat_sx cimp_flat_dx cimp_bind cimp_getl_conf
+            cimp_flat_sx cimp_flat_dx cimp_bind cimp_getl_conf
             drop_clear drop_clear_O drop_clear_S
             clear_gen_sort clear_gen_bind clear_gen_flat clear_gen_flat_r
             clear_gen_all clear_clear clear_mono clear_trans clear_ctail
index 3f9eadf433cb6aea086b0e66906bfb1664a96ac2..0a4e1715abe3d0e7468a7eee4bd59f38fabe60ed 100644 (file)
@@ -38,16 +38,14 @@ qed.
 
 lemma lift_refl: βˆ€T,d. β†‘[d, 0] T β‰‘ T.
 #T elim T -T
-[ //
-| #i #d elim (lt_or_ge i d) /2/
-| #I elim I -I /2/
+[ * #i // #d elim (lt_or_ge i d) /2/
+| * /2/
 ]
 qed.
 
 lemma lift_total: βˆ€T1,d,e. βˆƒT2. β†‘[d,e] T1 β‰‘ T2.
 #T1 elim T1 -T1
-[ /2/
-| #i #d #e elim (lt_or_ge i d) /3/
+[ * #i /2/ #d #e elim (lt_or_ge i d) /3/
 | * #I #V1 #T1 #IHV1 #IHT1 #d #e
   elim (IHV1 d e) -IHV1 #V2 #HV12
   [ elim (IHT1 (d+1) e) -IHT1 /3/
index d2e71ed7d7a38b7d7331eb536e2c9fe941b9f398..2c61e33636f6c118b3b6f9d8ab4267cde8102add 100644 (file)
@@ -17,8 +17,7 @@ include "Basic-2/substitution/drop.ma".
 (* PARALLEL SUBSTITUTION ON TERMS *******************************************)
 
 inductive tps: lenv β†’ term β†’ nat β†’ nat β†’ term β†’ Prop β‰
-| tps_sort : βˆ€L,k,d,e. tps L (⋆k) d e (⋆k)
-| tps_lref : βˆ€L,i,d,e. tps L (#i) d e (#i)
+| tps_atom : βˆ€L,I,d,e. tps L (𝕒{I}) d e (𝕒{I})
 | tps_subst: βˆ€L,K,V,W,i,d,e. d β‰€ i β†’ i < d + e β†’
              β†“[0, i] L β‰‘ K. π•“{Abbr} V β†’ β†‘[0, i + 1] V β‰‘ W β†’ tps L (#i) d e W
 | tps_bind : βˆ€L,I,V1,V2,T1,T2,d,e.
@@ -38,7 +37,6 @@ lemma tps_leq_repl: βˆ€L1,T1,T2,d,e. L1 βŠ’ T1 [d, e] β‰« T2 β†’
                     βˆ€L2. L1 [d, e] β‰ˆ L2 β†’ L2 βŠ’ T1 [d, e] β‰« T2.
 #L1 #T1 #T2 #d #e #H elim H -H L1 T1 T2 d e
 [ //
-| //
 | #L1 #K1 #V #W #i #d #e #Hdi #Hide #HLK1 #HVW #L2 #HL12
   elim (drop_leq_drop1 β€¦ HL12 β€¦ HLK1 ? ?) -HL12 HLK1 // /2/
 | /4/
@@ -56,7 +54,6 @@ lemma tps_weak: βˆ€L,T1,T2,d1,e1. L βŠ’ T1 [d1, e1] β‰« T2 β†’
                 L βŠ’ T1 [d2, e2] β‰« T2.
 #L #T1 #T #d1 #e1 #H elim H -L T1 T d1 e1
 [ //
-| //
 | #L #K #V #W #i #d1 #e1 #Hid1 #Hide1 #HLK #HVW #d2 #e2 #Hd12 #Hde12
   lapply (transitive_le β€¦ Hd12 β€¦ Hid1) -Hd12 Hid1 #Hid2
   lapply (lt_to_le_to_lt β€¦ Hide1 β€¦ Hde12) -Hide1 /2/
@@ -69,7 +66,6 @@ lemma tps_weak_top: βˆ€L,T1,T2,d,e.
                     L βŠ’ T1 [d, e] β‰« T2 β†’ L βŠ’ T1 [d, |L| - d] β‰« T2.
 #L #T1 #T #d #e #H elim H -L T1 T d e
 [ //
-| //
 | #L #K #V #W #i #d #e #Hdi #_ #HLK #HVW
   lapply (drop_fwd_drop2_length β€¦ HLK) #Hi
   lapply (le_to_lt_to_lt β€¦ Hdi Hi) #Hd
@@ -90,7 +86,6 @@ lemma tps_split_up: βˆ€L,T1,T2,d,e. L βŠ’ T1 [d, e] β‰« T2 β†’ βˆ€i. d β‰€ i β†’
                     βˆƒβˆƒT. L βŠ’ T1 [d, i - d] β‰« T & L βŠ’ T [i, d + e - i] β‰« T2.
 #L #T1 #T2 #d #e #H elim H -L T1 T2 d e
 [ /2/
-| /2/
 | #L #K #V #W #i #d #e #Hdi #Hide #HLK #HVW #j #Hdj #Hjde
   elim (lt_or_ge i j)
   [ -Hide Hjde;
@@ -119,8 +114,7 @@ fact tps_inv_lref1_aux: βˆ€L,T1,T2,d,e. L βŠ’ T1 [d, e] β‰« T2 β†’ βˆ€i. T1 = #i
                                β†“[O, i] L β‰‘ K. π•“{Abbr} V &
                                β†‘[O, i + 1] V β‰‘ T2.
 #L #T1 #T2 #d #e * -L T1 T2 d e
-[ #L #k #d #e #i #H destruct
-| /2/
+[ #L #I #d #e #i #H destruct -I /2/
 | #L #K #V #T2 #i #d #e #Hdi #Hide #HLK #HVT2 #j #H destruct -i /3/
 | #L #I #V1 #V2 #T1 #T2 #d #e #_ #_ #i #H destruct
 | #L #I #V1 #V2 #T1 #T2 #d #e #_ #_ #i #H destruct
@@ -141,7 +135,6 @@ fact tps_inv_bind1_aux: βˆ€d,e,L,U1,U2. L βŠ’ U1 [d, e] β‰« U2 β†’
                                  U2 =  π•“{I} V2. T2.
 #d #e #L #U1 #U2 * -d e L U1 U2
 [ #L #k #d #e #I #V1 #T1 #H destruct
-| #L #i #d #e #I #V1 #T1 #H destruct
 | #L #K #V #W #i #d #e #_ #_ #_ #_ #I #V1 #T1 #H destruct
 | #L #J #V1 #V2 #T1 #T2 #d #e #HV12 #HT12 #I #V #T #H destruct /2 width=5/
 | #L #J #V1 #V2 #T1 #T2 #d #e #_ #_ #I #V #T #H destruct
@@ -160,7 +153,6 @@ fact tps_inv_flat1_aux: βˆ€d,e,L,U1,U2. L βŠ’ U1 [d, e] β‰« U2 β†’
                                  U2 =  π•—{I} V2. T2.
 #d #e #L #U1 #U2 * -d e L U1 U2
 [ #L #k #d #e #I #V1 #T1 #H destruct
-| #L #i #d #e #I #V1 #T1 #H destruct
 | #L #K #V #W #i #d #e #_ #_ #_ #_ #I #V1 #T1 #H destruct
 | #L #J #V1 #V2 #T1 #T2 #d #e #_ #_ #I #V #T #H destruct
 | #L #J #V1 #V2 #T1 #T2 #d #e #HV12 #HT12 #I #V #T #H destruct /2 width=5/
@@ -175,7 +167,6 @@ lemma tps_inv_flat1: βˆ€d,e,L,I,V1,T1,U2. L βŠ’ π•—{I} V1. T1 [d, e] β‰« U2 β†’
 fact tps_inv_refl0_aux: βˆ€L,T1,T2,d,e. L βŠ’ T1 [d, e] β‰« T2 β†’ e = 0 β†’ T1 = T2.
 #L #T1 #T2 #d #e #H elim H -H L T1 T2 d e
 [ //
-| //
 | #L #K #V #W #i #d #e #Hdi #Hide #_ #_ #H destruct -e;
   lapply (le_to_lt_to_lt β€¦ Hdi β€¦ Hide) -Hdi Hide <plus_n_O #Hdd
   elim (lt_refl_false β€¦ Hdd)
index 1fc78227d0d0b3bba622a0c342aca2e0c92f0450..d1d2bbb24ea1f49f2b678f0b2d937134844daa99 100644 (file)
@@ -25,9 +25,7 @@ lemma tps_lift_le: βˆ€K,T1,T2,dt,et. K βŠ’ T1 [dt, et] β‰« T2 β†’
                    dt + et β‰€ d β†’
                    L βŠ’ U1 [dt, et] β‰« U2.
 #K #T1 #T2 #dt #et #H elim H -H K T1 T2 dt et
-[ #K #k #dt #et #L #U1 #U2 #d #e #_ #H1 #H2 #_
-  >(lift_mono β€¦ H1 β€¦ H2) -H1 H2 //
-| #K #i #dt #et #L #U1 #U2 #d #e #_ #H1 #H2 #_
+[ #K #I #dt #et #L #U1 #U2 #d #e #_ #H1 #H2 #_
   >(lift_mono β€¦ H1 β€¦ H2) -H1 H2 //
 | #K #KV #V #W #i #dt #et #Hdti #Hidet #HKV #HVW #L #U1 #U2 #d #e #HLK #H #HVU2 #Hdetd
   lapply (lt_to_le_to_lt β€¦ Hidet β€¦ Hdetd) -Hdetd #Hid
@@ -53,9 +51,7 @@ lemma tps_lift_ge: βˆ€K,T1,T2,dt,et. K βŠ’ T1 [dt, et] β‰« T2 β†’
                    d β‰€ dt β†’
                    L βŠ’ U1 [dt + e, et] β‰« U2.
 #K #T1 #T2 #dt #et #H elim H -H K T1 T2 dt et
-[ #K #k #dt #et #L #U1 #U2 #d #e #_ #H1 #H2 #_
-  >(lift_mono β€¦ H1 β€¦ H2) -H1 H2 //
-| #K #i #dt #et #L #U1 #U2 #d #e #_ #H1 #H2 #_
+[ #K #I #dt #et #L #U1 #U2 #d #e #_ #H1 #H2 #_
   >(lift_mono β€¦ H1 β€¦ H2) -H1 H2 //
 | #K #KV #V #W #i #dt #et #Hdti #Hidet #HKV #HVW #L #U1 #U2 #d #e #HLK #H #HWU2 #Hddt
   lapply (transitive_le β€¦ Hddt β€¦ Hdti) -Hddt #Hid
@@ -78,10 +74,10 @@ lemma tps_inv_lift1_le: βˆ€L,U1,U2,dt,et. L βŠ’ U1 [dt, et] β‰« U2 β†’
                         dt + et β‰€ d β†’
                         βˆƒβˆƒT2. K βŠ’ T1 [dt, et] β‰« T2 & β†‘[d, e] T2 β‰‘ U2.
 #L #U1 #U2 #dt #et #H elim H -H L U1 U2 dt et
-[ #L #k #dt #et #K #d #e #_ #T1 #H #_
-  lapply (lift_inv_sort2 β€¦ H) -H #H destruct -T1 /2/
-| #L #i #dt #et #K #d #e #_ #T1 #H #_
-  elim (lift_inv_lref2 β€¦ H) -H * #Hid #H destruct -T1 /3/
+[ #L * #i #dt #et #K #d #e #_ #T1 #H #_
+  lapply (lift_inv_sort2 β€¦ H) -H #H destruct -T1 /2/
+  | elim (lift_inv_lref2 β€¦ H) -H * #Hid #H destruct -T1 /3/
+  ]
 | #L #KV #V #W #i #dt #et #Hdti #Hidet #HLKV #HVW #K #d #e #HLK #T1 #H #Hdetd
   lapply (lt_to_le_to_lt β€¦ Hidet β€¦ Hdetd) -Hdetd #Hid
   lapply (lift_inv_lref2_lt β€¦ H β€¦ Hid) -H #H destruct -T1;
@@ -103,10 +99,10 @@ lemma tps_inv_lift1_ge: βˆ€L,U1,U2,dt,et. L βŠ’ U1 [dt, et] β‰« U2 β†’
                         d + e β‰€ dt β†’
                         βˆƒβˆƒT2. K βŠ’ T1 [dt - e, et] β‰« T2 & β†‘[d, e] T2 β‰‘ U2.
 #L #U1 #U2 #dt #et #H elim H -H L U1 U2 dt et
-[ #L #k #dt #et #K #d #e #_ #T1 #H #_
-  lapply (lift_inv_sort2 β€¦ H) -H #H destruct -T1 /2/
-| #L #i #dt #et #K #d #e #_ #T1 #H #_
-  elim (lift_inv_lref2 β€¦ H) -H * #Hid #H destruct -T1 /3/
+[ #L * #i #dt #et #K #d #e #_ #T1 #H #_
+  lapply (lift_inv_sort2 β€¦ H) -H #H destruct -T1 /2/
+  | elim (lift_inv_lref2 β€¦ H) -H * #Hid #H destruct -T1 /3/
+  ]
 | #L #KV #V #W #i #dt #et #Hdti #Hidet #HLKV #HVW #K #d #e #HLK #T1 #H #Hdedt  
   lapply (transitive_le β€¦ Hdedt β€¦ Hdti) #Hdei
   lapply (plus_le_weak β€¦ Hdedt) -Hdedt #Hedt
@@ -136,7 +132,6 @@ lemma tps_inv_lift1_eq: βˆ€L,U1,U2,d,e.
                         L βŠ’ U1 [d, e] β‰« U2 β†’ βˆ€T1. β†‘[d, e] T1 β‰‘ U1 β†’ U1 = U2.
 #L #U1 #U2 #d #e #H elim H -H L U1 U2 d e
 [ //
-| //
 | #L #K #V #W #i #d #e #Hdi #Hide #_ #_ #T1 #H
   elim (lift_inv_lref2 β€¦ H) -H * #H
   [ lapply (le_to_lt_to_lt β€¦ Hdi β€¦ H) -Hdi H #H
@@ -188,7 +183,6 @@ fact tps_inv_refl1_aux: βˆ€L,T1,T2,d,e. L βŠ’ T1 [d, e] β‰« T2 β†’ e = 1 β†’
                         βˆ€K,V. β†“[0, d] L β‰‘ K. π•“{Abst} V β†’ T1 = T2.
 #L #T1 #T2 #d #e #H elim H -H L T1 T2 d e
 [ //
-| //
 | #L #K0 #V0 #W #i #d #e #Hdi #Hide #HLK0 #_ #H destruct -e;
   >(le_to_le_to_eq β€¦ Hdi ?) /2/ -d #K #V #HLK
   lapply (drop_mono β€¦ HLK0 β€¦ HLK) #H destruct
index 83316ac30a429fa907561ba86804f3fc0409a969..65b1b86d448ad2ea48207969fbf3140d3556eb72 100644 (file)
@@ -22,7 +22,6 @@ theorem tps_conf: βˆ€L,T0,T1,d,e. L βŠ’ T0 [d, e] β‰« T1 β†’ βˆ€T2. L βŠ’ T0 [d,
                   βˆƒβˆƒT. L βŠ’ T1 [d, e] β‰« T & L βŠ’ T2 [d, e] β‰« T.
 #L #T0 #T1 #d #e #H elim H -H L T0 T1 d e
 [ /2/
-| /2/
 | #L #K1 #V1 #T1 #i1 #d #e #Hdi1 #Hi1de #HLK1 #HVT1 #T2 #H
   elim (tps_inv_lref1 β€¦ H) -H
   [ #HX destruct -T2 /4/
@@ -51,7 +50,6 @@ theorem tps_trans_down: βˆ€L,T1,T0,d1,e1. L βŠ’ T1 [d1, e1] β‰« T0 β†’
                         βˆƒβˆƒT. L βŠ’ T1 [d2, e2] β‰« T & L βŠ’ T [d1, e1] β‰« T2.
 #L #T1 #T0 #d1 #e1 #H elim H -L T1 T0 d1 e1
 [ /2/
-| /2/
 | #L #K #V #W #i1 #d1 #e1 #Hdi1 #Hide1 #HLK #HVW #T2 #d2 #e2 #HWT2 #Hde2d1
   lapply (transitive_le β€¦ Hde2d1 Hdi1) -Hde2d1 #Hde2i1
   lapply (tps_weak β€¦ HWT2 0 (i1 + 1) ? ?) -HWT2; normalize /2/ -Hde2i1 #HWT2