]> matita.cs.unibo.it Git - helm.git/commitdiff
tpr: more inversion lemmas and a main property stated
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 26 Jul 2011 19:47:31 +0000 (19:47 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Tue, 26 Jul 2011 19:47:31 +0000 (19:47 +0000)
matita/matita/lib/lambda-delta/reduction/tpr_defs.ma
matita/matita/lib/lambda-delta/reduction/tpr_ps.ma [new file with mode: 0644]
matita/matita/lib/lambda-delta/reduction/tpr_tpr.ma
matita/matita/lib/lambda-delta/xoa_defs.ma
matita/matita/lib/lambda-delta/xoa_notation.ma

index 498fbb744c5b567a5e2acecd15f993daa4f9c205..a8aac61df77fbbd9db92268c3fa9b391ca7c6b09 100644 (file)
@@ -127,6 +127,18 @@ lemma tpr_inv_abst1: βˆ€V1,T1,U2. π•š{Abst} V1. T1 β‡’ U2 β†’
                      βˆƒβˆƒV2,T2. V1 β‡’ V2 & T1 β‡’ T2 & U2 = π•š{Abst} V2. T2.
 /2/ qed.
 
+lemma tpr_inv_bind1: βˆ€V1,T1,U2,I. π•“{I} V1. T1 β‡’ U2 β†’
+                     βˆ¨βˆ¨ βˆƒβˆƒV2,T2. V1 β‡’ V2 & T1 β‡’ T2 & U2 = π•“{I} V2. T2
+                      | βˆƒβˆƒV2,T2,T. V1 β‡’ V2 & T1 β‡’ T2 &
+                                   β‹†.  π•“{Abbr} V2 βŠ’ T2 [0, 1] β‰« T &
+                                   U2 = π•š{Abbr} V2. T & I = Abbr
+                      | βˆƒβˆƒT. β†‘[0,1] T β‰‘ T1 & tpr T U2 & I = Abbr.
+#V1 #T1 #U2 * #H
+[ elim (tpr_inv_abbr1 β€¦ H) -H * /3 width=7/
+| /3/
+]
+qed.
+
 lemma tpr_inv_appl1_aux: βˆ€U1,U2. U1 β‡’ U2 β†’ βˆ€V1,U0. U1 = π•š{Appl} V1. U0 β†’
                          βˆ¨βˆ¨ βˆƒβˆƒV2,T2.            V1 β‡’ V2 & U0 β‡’ T2 &
                                                 U2 = π•š{Appl} V2. T2
@@ -184,6 +196,24 @@ lemma tpr_inv_cast1: βˆ€V1,T1,U2. π•š{Cast} V1. T1 β‡’ U2 β†’
                      βˆ¨ T1 β‡’ U2.
 /2/ qed.
 
+lemma tpr_inv_flat1: βˆ€V1,U0,U2,I. π•—{I} V1. U0 β‡’ U2 β†’
+                     βˆ¨βˆ¨ βˆƒβˆƒV2,T2.            V1 β‡’ V2 & U0 β‡’ T2 &
+                                            U2 = π•—{I} V2. T2
+                      | βˆƒβˆƒV2,W,T1,T2.       V1 β‡’ V2 & T1 β‡’ T2 &
+                                            U0 = π•š{Abst} W. T1 &
+                                            U2 = π•“{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 &
+                                            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/
+]
+qed.
+
 lemma tpr_inv_lref2_aux: βˆ€T1,T2. T1 β‡’ T2 β†’ βˆ€i. T2 = #i β†’
                          βˆ¨βˆ¨           T1 = #i
                           | βˆƒβˆƒV,T,T0. β†‘[O,1] T0 β‰‘ T & T0 β‡’ #i &
diff --git a/matita/matita/lib/lambda-delta/reduction/tpr_ps.ma b/matita/matita/lib/lambda-delta/reduction/tpr_ps.ma
new file mode 100644 (file)
index 0000000..dc4a109
--- /dev/null
@@ -0,0 +1,26 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "lambda-delta/reduction/lpr_defs.ma".
+
+(* CONTEXT-FREE PARALLEL REDUCTION ON TERMS *********************************)
+
+axiom tpr_ps_lpr: βˆ€L1,L2. L1 β‡’ L2 β†’ βˆ€T1,T2. T1 β‡’ T2 β†’
+                  βˆ€d,e,U1. L1 βŠ’ T1 [d, e] β‰« U1 β†’
+                  βˆƒβˆƒU2. U1 β‡’ U2 & L2 βŠ’ T2 [d, e] β‰« U2.
+
+lemma tpr_ps_bind: βˆ€I,V1,V2,T1,T2,U1. V1 β‡’ V2 β†’ T1 β‡’ T2 β†’
+                   β‹†. π•“{I} V1 βŠ’ T1 [0, 1] β‰« U1 β†’
+                   βˆƒβˆƒU2. U1 β‡’ U2 & β‹†. π•“{I} V2 βŠ’ T2 [0, 1] β‰« U2.
+/3 width=5/ qed.
index da8a5507184680fbf2b2e48d1026ee8526dc1a27..6e632f72d21b27e10b67a327d995a94317136ae7 100644 (file)
      \ /
       V_______________________________________________________________ *)
 
+include "lambda-delta/substitution/lift_fun.ma".
 include "lambda-delta/substitution/lift_weight.ma".
 include "lambda-delta/reduction/tpr_main.ma".
+include "lambda-delta/reduction/tpr_ps.ma".
 
 (* CONTEXT-FREE PARALLEL REDUCTION ON TERMS *********************************)
 
 (* Confluence lemmas ********************************************************)
 
-lemma tpr_conf_sort_sort: βˆ€k1. βˆƒβˆƒT0. β‹†k1 β‡’ T0 & β‹†k1 β‡’ T0.
+lemma tpr_conf_sort_sort: βˆ€k. βˆƒβˆƒX. β‹†k β‡’ X & β‹†k β‡’ X.
 /2/ qed.
 
-lemma tpr_conf_lref_lref: βˆ€i1. βˆƒβˆƒT0. #i1 β‡’ T0 & #i1 β‡’ T0.
+lemma tpr_conf_lref_lref: βˆ€i. βˆƒβˆƒX. #i β‡’ X & #i β‡’ X.
 /2/ qed.
 
 lemma tpr_conf_bind_bind:
-   βˆ€I1,V11,V12,T11,T12,V22,T22. (
-      βˆ€T1. #T1 < #V11 + #T11 + 1 β†’
-      βˆ€T3,T4. T1 β‡’ T3 β†’ T1 β‡’ T4 β†’
-      βˆƒβˆƒT0. T3 β‡’ T0 & T4 β‡’ T0
+   βˆ€I,V0,V1,T0,T1,V2,T2. (
+      βˆ€X0:term. #X0 < #V0 + #T0 + 1 β†’
+      βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
+   ) β†’
+   V0 β‡’ V1 β†’ V0 β‡’ V2 β†’ T0 β‡’ T1 β†’ T0 β‡’ T2 β†’
+   βˆƒβˆƒX. π•“{I} V1. T1 β‡’ X & π•“{I} V2. T2 β‡’ X.
+#I #V0 #V1 #T0 #T1 #V2 #T2 #IH #HV01 #HV02 #HT01 #HT02
+elim (IH β€¦ HV01 β€¦ HV02) -HV01 HV02 // #V #HV1 #HV2
+elim (IH β€¦ HT01 β€¦ HT02) -HT01 HT02 IH /3 width=5/
+qed.
+
+lemma tpr_conf_bind_delta:
+   βˆ€V0,V1,T0,T1,V2,T2,T. (
+      βˆ€X0:term. #X0 < #V0 + #T0 + 1 β†’
+      βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
-   V11 β‡’ V12 β†’ T11 β‡’ T12 β†’
-   V11 β‡’ V22 β†’ T11 β‡’ T22 β†’
-   βˆƒβˆƒT0. π•“{I1} V12. T12 β‡’ T0 & π•“{I1} V22. T22 β‡’ T0.
-#I1 #V11 #V12 #T11 #T12 #V22 #T22 #IH #HV1 #HT1 #HV2 #HT2
-elim (IH β€¦ HV1 β€¦ HV2) -HV1 HV2 // #V #HV1 #HV2
-elim (IH β€¦ HT1 β€¦ HT2) -HT1 HT2 IH /3 width=5/
+   V0 β‡’ V1 β†’ V0 β‡’ V2 β†’
+   T0 β‡’ T1 β†’ T0 β‡’ T2 β†’ β‹†. π•“{Abbr} V2 βŠ’ T2 [O,1] β‰« T β†’
+   βˆƒβˆƒX. π•“{Abbr} V1. T1 β‡’ X & π•“{Abbr} V2. T β‡’ X.
+#V0 #V1 #T0 #T1 #V2 #T2 #T #IH #HV01 #HV02 #HT01 #HT02 #HT2
+elim (IH β€¦ HV01 β€¦ HV02) -HV01 HV02 // #V #HV1 #HV2
+elim (IH β€¦ HT01 β€¦ HT02) -HT01 HT02 IH // -V0 T0 #T0 #HT10 #HT20
+elim (tpr_ps_bind β€¦ HV2 HT20 β€¦ HT2) -HT20 HT2 /3 width=5/
 qed.
 
 lemma tpr_conf_bind_zeta:
-   βˆ€V11,V12,T11,T12,T22,T20. (
-      βˆ€T1. #T1 < #V11 + #T11 +1 β†’
-      βˆ€T3,T4. T1 β‡’ T3 β†’ T1 β‡’ T4 β†’
-      βˆƒβˆƒT0. T3 β‡’ T0 & T4 β‡’ T0
+   βˆ€X2,V0,V1,T0,T1,T. (
+      βˆ€X0:term. #X0 < #V0 + #T0 +1 β†’
+      βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
-   V11 β‡’ V12 β†’ T22 β‡’ T20 β†’ T11 β‡’ T12 β†’ β†‘[O, 1] T22 β‰‘ T11 β†’
-   βˆƒβˆƒT0. π•“{Abbr} V12. T12 β‡’ T0 & T20 β‡’ T0.
-#V11 #V12 #T11 #T12 #T22 #T20 #IH #HV112 #HT202 #HT112 #HT
-elim (tpr_inv_lift β€¦ HT112 β€¦ HT) -HT112 #T #HT12 #HT22
-lapply (tw_lift β€¦ HT) -HT #HT
-elim (IH β€¦ HT202 β€¦ HT22) -HT202 HT22 IH /3/
+   V0 β‡’ V1 β†’ T0 β‡’ T1 β†’ T β‡’ X2 β†’ β†‘[O, 1] T β‰‘ T0 β†’
+   βˆƒβˆƒX. π•“{Abbr} V1. T1 β‡’ X & X2 β‡’ X.
+#X2 #V0 #V1 #T0 #T1 #T #IH #HV01 #HT01 #HTX2 #HT0
+elim (tpr_inv_lift β€¦ HT01 β€¦ HT0) -HT01 #U #HUT1 #HTU
+lapply (tw_lift β€¦ HT0) -HT0 #HT0
+elim (IH β€¦ HTX2 β€¦ HTU) -HTX2 HTU IH /3/
 qed.
 
 lemma tpr_conf_flat_flat:
-   βˆ€I1,V11,V12,T11,T12,V22,T22. (
-      βˆ€T1. #T1 < #V11 + #T11 + 1 β†’
-      βˆ€T3,T4. T1 β‡’ T3 β†’ T1 β‡’ T4 β†’
-      βˆƒβˆƒT0. T3 β‡’ T0 & T4 β‡’ T0
+   βˆ€I,V0,V1,T0,T1,V2,T2. (
+      βˆ€X0:term. #X0 < #V0 + #T0 + 1 β†’
+      βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
-   V11 β‡’ V12 β†’ T11 β‡’ T12 β†’
-   V11 β‡’ V22 β†’ T11 β‡’ T22 β†’
-   βˆƒβˆƒT0. π•—{I1} V12. T12 β‡’ T0 & π•—{I1} V22. T22 β‡’ T0.
-#I1 #V11 #V12 #T11 #T12 #V22 #T22 #IH #HV1 #HT1 #HV2 #HT2
-elim (IH β€¦ HV1 β€¦ HV2) -HV1 HV2 // #V #HV1 #HV2
-elim (IH β€¦ HT1 β€¦ HT2) -HT1 HT2 /3 width=5/
+   V0 β‡’ V1 β†’ V0 β‡’ V2 β†’ T0 β‡’ T1 β†’ T0 β‡’ T2 β†’
+   βˆƒβˆƒT0. π•—{I} V1. T1 β‡’ T0 & π•—{I} V2. T2 β‡’ T0.
+#I #V0 #V1 #T0 #T1 #V2 #T2 #IH #HV01 #HV02 #HT01 #HT02
+elim (IH β€¦ HV01 β€¦ HV02) -HV01 HV02 // #V #HV1 #HV2
+elim (IH β€¦ HT01 β€¦ HT02) -HT01 HT02 /3 width=5/
 qed.
 
 lemma tpr_conf_flat_beta:
-   βˆ€V11,V12,T12,V22,W2,T21,T22. (
-      βˆ€T1. #T1 < #V11 + (#W2 + #T21 + 1) + 1 β†’
-      βˆ€T3,T4. T1 β‡’ T3 β†’ T1 β‡’ T4 β†’
-      βˆƒβˆƒT0. T3 β‡’ T0 & T4 β‡’ T0
+   βˆ€V0,V1,T1,V2,W0,U0,T2. (
+      βˆ€X0:term. #X0 < #V0 + (#W0 + #U0 + 1) + 1 β†’
+      βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
-   V11 β‡’ V12 β†’ V11 β‡’ V22 β†’
-   T21 β‡’ T22 β†’ π•“{Abst} W2. T21 β‡’ T12 β†’
-   βˆƒβˆƒT0. π•—{Appl} V12. T12 β‡’ T0 & π•“{Abbr} V22. T22 β‡’ T0.
-#V11 #V12 #T12 #V22 #W2 #T21 #T22 #IH #HV1 #HV2 #HT1 #HT2
-elim (tpr_inv_abst1 β€¦ HT2) -HT2 #W1 #T1 #HW21 #HT21 #H destruct -T12;
-elim (IH β€¦ HV1 β€¦ HV2) -HV1 HV2 // #V #HV12 #HV22
-elim (IH β€¦ HT21 β€¦ HT1) -HT21 HT1 IH /3 width=5/
+   V0 β‡’ V1 β†’ V0 β‡’ V2 β†’
+   U0 β‡’ T2 β†’ π•“{Abst} W0. U0 β‡’ T1 β†’
+   βˆƒβˆƒX. π•—{Appl} V1. T1 β‡’ X & π•“{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
+elim (IH β€¦ HT02 β€¦ HU01) -HT02 HU01 IH /3 width=5/
 qed.
-(*
+
 lemma tpr_conf_flat_theta:
-   βˆ€V11,V12,T12,V2,V22,W21,W22,T21,T22. (
-      βˆ€T1. #T1 < #V11 + (#W21 + #T21 + 1) + 1 β†’
-      βˆ€T3,T4. T1 β‡’ T3 β†’ T1 β‡’ T4 β†’
-      βˆƒβˆƒT0. T3 β‡’ T0 & T4 β‡’T0
+   βˆ€V0,V1,T1,V2,V,W0,W2,U0,U2. (
+      βˆ€X0:term. #X0 < #V0 + (#W0 + #U0 + 1) + 1 β†’
+      βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
    ) β†’
-   V11 β‡’ V12 β†’ V11 β‡’ V22 β†’ β†‘[O,1] V22 β‰‘ V2 β†’
-   W21 β‡’ W22 β†’ T21 β‡’ T22 β†’  π•“{Abbr} W21. T21 β‡’ T12 β†’
-   βˆƒβˆƒT0. π•—{Appl} V12. T12 β‡’ T0 & π•“{Abbr} W22. π•—{Appl} V2. T22 β‡’T0.
-*)
-
+   V0 β‡’ V1 β†’ V0 β‡’ V2 β†’ β†‘[O,1] V2 β‰‘ V β†’
+   W0 β‡’ W2 β†’ U0 β‡’ U2 β†’  π•“{Abbr} W0. U0 β‡’ T1 β†’
+   βˆƒβˆƒX. π•—{Appl} V1. T1 β‡’ X & π•“{Abbr} W2. π•—{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
+lapply (tpr_lift β€¦ HVV2 β€¦ HV2 β€¦ HVV) #HVVV
+elim (tpr_inv_abbr1 β€¦ H) -H *
+(* case 1: bind *)
+[ -HV2 HVV2 #WW #UU #HWW0 #HUU0 #H destruct -T1;
+  elim (IH β€¦ HW02 β€¦ HWW0) -HW02 HWW0 // #W #HW2 #HWW
+  elim (IH β€¦ HU02 β€¦ HUU0) -HU02 HUU0 IH // #U #HU2 #HUU
+  @ex2_1_intro
+  [2: @tpr_theta [5: @HVV1 |6: @HVV |7:// by {}; (*@HWW*) |8: @HUU |1,2,3,4:skip ]
+  |3: @tpr_bind [ @HW2 | @tpr_flat [ @HVVV | @HU2 ] ]
+  | skip 
 (* Confluence ***************************************************************)
-(*
+
 lemma tpr_conf_aux:
-   βˆ€T. (
-      βˆ€T1. #T1 < #T β†’ βˆ€T3,T4. T1 β‡’ T3 β†’ T1 β‡’ T4 β†’
-      βˆƒβˆƒT0. T3 β‡’ T0 & T4 β‡’ T0
+   βˆ€Y0:term. (
+      βˆ€X0:term. #X0 < #Y0 β†’ βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2 β‡’ X
          ) β†’
-   βˆ€U1,T1,T2. U1 β‡’ T1 β†’ U1 β‡’ T2 β†’ U1 = T β†’
-   βˆƒβˆƒT0. T1 β‡’ T0 & T2 β‡’ T0.
-#T #IH  #U1 #T1 #T2 * -U1 T1
-[ #k1 #H1 #H2 destruct -T;
+   βˆ€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 -T2 //
-| #i1 #H1 #H2 destruct -T;
+(* case 1: sort, sort *)
+  #H1 destruct -X2 //
+| #i1 #H1 #H2 destruct -Y0;
   lapply (tpr_inv_lref1 β€¦ H1) -H1
-(* case 2: lref, lref *) 
-  #H1 destruct -T2 //
-| #I1 #V11 #V12 #T11 #T12 #HV112 #HT112 #H1 #H2 destruct -T;
-  lapply (tpr_inv_bind1 β€¦ H1) -H1
-  [ 
-
-theorem tpr_conf: βˆ€T,T1,T2. T β‡’ T1 β†’ T β‡’ T2 β†’
-                 βˆƒβˆƒT0. T1 β‡’ T0 & T2 β‡’ T0.
+(* case 2: lref, lref *)
+  #H1 destruct -X2 //
+| #I #V0 #V1 #T0 #T1 #HV01 #HT01 #H1 #H2 destruct -Y0;
+  elim (tpr_inv_bind1 β€¦ H1) -H1 *
+(* case 3: bind, bind *)
+  [ #V2 #T2 #HV02 #HT02 #H destruct -X2
+    @tpr_conf_bind_bind /2 width=7/ (**) (* /3 width=7/ is too slow *)
+(* case 4: bind, delta *)
+  | #V2 #T2 #T #HV02 #HT02 #HT2 #H1 #H2 destruct -X2 I
+    @tpr_conf_bind_delta /2 width=9/ (**) (* /3 width=9/ is too slow *)
+(* case 5: bind, zeta *)
+  | #T #HT0 #HTX2 #H destruct -I
+    @tpr_conf_bind_zeta /2 width=8/ (**) (* /3 width=8/ is too slow *)
+  ]
+| #I #V0 #V1 #T0 #T1 #HV01 #HT01 #H1 #H2 destruct -Y0;
+  elim (tpr_inv_flat1 β€¦ H1) -H1 *
+(* case 6: flat, flat *)
+  [ #V2 #T2 #HV02 #HT02 #H destruct -X2
+    @tpr_conf_flat_flat /2 width=7/ (**) (* /3 width=7/ is too slow *)
+(* case 7: flat, beta *)
+  | #V2 #W #U0 #T2 #HV02 #HT02 #H1 #H2 #H3 destruct -T0 X2 I
+    @tpr_conf_flat_beta /2 width=8/ (**) (* /3 width=8/ is too slow *)
+(* case 8: flat, theta *)
+  | #V2 #V #W0 #W2 #U0 #U2 #HV02 #HW02 #HT02 #HV2 #H1 #H2 #H3 destruct -T0 X2 I  
+    //
+theorem tpr_conf: βˆ€T0,T1,T2. T0 β‡’ T1 β†’ T0 β‡’ T2 β†’
+                  βˆƒβˆƒT. T1 β‡’ T & T2 β‡’ T.
 #T @(tw_wf_ind β€¦ T) -T /3 width=6/
 qed.
 *)
@@ -218,3 +263,12 @@ lemma tpr_conf_flat_theta:
    W21 β‡’ W22 β†’ T21 β‡’ T22 β†’  π•“{Abbr} W21. T21 β‡’ T12 β†’
    βˆƒβˆƒT0. π•—{Appl} V12. T12 β‡’ T0 & π•“{Abbr} W22. π•—{Appl} V2. T22 β‡’T0.
 
+lemma tpr_conf_bind_delta:
+   βˆ€V0,V1,T0,T1,V2,T2,T. (
+      βˆ€X. #X < #V0 + #T0 + 1 β†’
+      βˆ€X1,X2. X0 β‡’ X1 β†’ X0 β‡’ X2 β†’
+      βˆƒβˆƒX. X1 β‡’ X & X2β‡’X
+   ) β†’
+   V0 β‡’ V1 β†’ V0 β‡’ V2 β†’
+   T0 β‡’ T1 β†’ T0 β‡’ T2 β†’ β‹†. π•“{Abbr} V2 βŠ’ T2 [O,1] β‰« T β†’
+   βˆƒβˆƒX. π•“{Abbr} V1. T1 β‡’ X & π•“{Abbr} V2. T β‡’ X.
\ No newline at end of file
index af9ba3708627092d7d1ee6387e5c91c18bbea241..9dbf226f4831723c4e389e090817476aa3e62254 100644 (file)
@@ -28,6 +28,12 @@ inductive ex2_2 (A0,A1:Type[0]) (P0,P1:A0β†’A1β†’Prop) : Prop β‰
 
 interpretation "multiple existental quantifier (2, 2)" 'Ex P0 P1 = (ex2_2 ? ? P0 P1).
 
+inductive ex3_1 (A0:Type[0]) (P0,P1,P2:A0β†’Prop) : Prop β‰
+   | ex3_1_intro: βˆ€x0. P0 x0 β†’ P1 x0 β†’ P2 x0 β†’ ex3_1 ? ? ? ?
+.
+
+interpretation "multiple existental quantifier (3, 1)" 'Ex P0 P1 P2 = (ex3_1 ? P0 P1 P2).
+
 inductive ex3_2 (A0,A1:Type[0]) (P0,P1,P2:A0β†’A1β†’Prop) : Prop β‰
    | ex3_2_intro: βˆ€x0,x1. P0 x0 x1 β†’ P1 x0 x1 β†’ P2 x0 x1 β†’ ex3_2 ? ? ? ? ?
 .
@@ -52,12 +58,30 @@ inductive ex4_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3:A0β†’A1β†’A2β†’A3β†’Prop) : P
 
 interpretation "multiple existental quantifier (4, 4)" 'Ex P0 P1 P2 P3 = (ex4_4 ? ? ? ? P0 P1 P2 P3).
 
+inductive ex5_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4:A0β†’A1β†’A2β†’Prop) : Prop β‰
+   | ex5_3_intro: βˆ€x0,x1,x2. P0 x0 x1 x2 β†’ P1 x0 x1 x2 β†’ P2 x0 x1 x2 β†’ P3 x0 x1 x2 β†’ P4 x0 x1 x2 β†’ ex5_3 ? ? ? ? ? ? ? ?
+.
+
+interpretation "multiple existental quantifier (5, 3)" 'Ex P0 P1 P2 P3 P4 = (ex5_3 ? ? ? P0 P1 P2 P3 P4).
+
+inductive ex5_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4:A0β†’A1β†’A2β†’A3β†’Prop) : Prop β‰
+   | ex5_4_intro: βˆ€x0,x1,x2,x3. P0 x0 x1 x2 x3 β†’ P1 x0 x1 x2 x3 β†’ P2 x0 x1 x2 x3 β†’ P3 x0 x1 x2 x3 β†’ P4 x0 x1 x2 x3 β†’ ex5_4 ? ? ? ? ? ? ? ? ?
+.
+
+interpretation "multiple existental quantifier (5, 4)" 'Ex P0 P1 P2 P3 P4 = (ex5_4 ? ? ? ? P0 P1 P2 P3 P4).
+
 inductive ex6_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4,P5:A0β†’A1β†’A2β†’A3β†’A4β†’A5β†’Prop) : Prop β‰
    | ex6_6_intro: βˆ€x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 β†’ P1 x0 x1 x2 x3 x4 x5 β†’ P2 x0 x1 x2 x3 x4 x5 β†’ P3 x0 x1 x2 x3 x4 x5 β†’ P4 x0 x1 x2 x3 x4 x5 β†’ P5 x0 x1 x2 x3 x4 x5 β†’ ex6_6 ? ? ? ? ? ? ? ? ? ? ? ?
 .
 
 interpretation "multiple existental quantifier (6, 6)" 'Ex P0 P1 P2 P3 P4 P5 = (ex6_6 ? ? ? ? ? ? P0 P1 P2 P3 P4 P5).
 
+inductive ex7_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0β†’A1β†’A2β†’A3β†’A4β†’A5β†’Prop) : Prop β‰
+   | ex7_6_intro: βˆ€x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 β†’ P1 x0 x1 x2 x3 x4 x5 β†’ P2 x0 x1 x2 x3 x4 x5 β†’ P3 x0 x1 x2 x3 x4 x5 β†’ P4 x0 x1 x2 x3 x4 x5 β†’ P5 x0 x1 x2 x3 x4 x5 β†’ P6 x0 x1 x2 x3 x4 x5 β†’ ex7_6 ? ? ? ? ? ? ? ? ? ? ? ? ?
+.
+
+interpretation "multiple existental quantifier (7, 6)" 'Ex P0 P1 P2 P3 P4 P5 P6 = (ex7_6 ? ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6).
+
 inductive or3 (P0,P1,P2:Prop) : Prop β‰
    | or3_intro0: P0 β†’ or3 ? ? ?
    | or3_intro1: P1 β†’ or3 ? ? ?
@@ -66,3 +90,12 @@ inductive or3 (P0,P1,P2:Prop) : Prop β‰
 
 interpretation "multiple disjunction connective (3)" 'Or P0 P1 P2 = (or3 P0 P1 P2).
 
+inductive or4 (P0,P1,P2,P3:Prop) : Prop β‰
+   | or4_intro0: P0 β†’ or4 ? ? ? ?
+   | or4_intro1: P1 β†’ or4 ? ? ? ?
+   | or4_intro2: P2 β†’ or4 ? ? ? ?
+   | or4_intro3: P3 β†’ or4 ? ? ? ?
+.
+
+interpretation "multiple disjunction connective (4)" 'Or P0 P1 P2 P3 = (or4 P0 P1 P2 P3).
+
index 18b3c0293ea3db8b5715b7aef268568a469cc665..e37c37eb1a33862eef1fa06bafb12d2cd44769e7 100644 (file)
@@ -22,6 +22,10 @@ notation "hvbox(βˆƒβˆƒ ident x0 , ident x1 break . term 19 P0 break & term 19 P1
  non associative with precedence 20
  for @{ 'Ex (Ξ»${ident x0},${ident x1}.$P0) (Ξ»${ident x0},${ident x1}.$P1) }.
 
+notation "hvbox(βˆƒβˆƒ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2)"
+ non associative with precedence 20
+ for @{ 'Ex (Ξ»${ident x0}.$P0) (Ξ»${ident x0}.$P1) (Ξ»${ident x0}.$P2) }.
+
 notation "hvbox(βˆƒβˆƒ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2)"
  non associative with precedence 20
  for @{ 'Ex (Ξ»${ident x0},${ident x1}.$P0) (Ξ»${ident x0},${ident x1}.$P1) (Ξ»${ident x0},${ident x1}.$P2) }.
@@ -38,11 +42,27 @@ notation "hvbox(βˆƒβˆƒ ident x0 , ident x1 , ident x2 , ident x3 break . term 19
  non associative with precedence 20
  for @{ 'Ex (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P0) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P1) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P2) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P3) }.
 
+notation "hvbox(βˆƒβˆƒ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)"
+ non associative with precedence 20
+ for @{ 'Ex (Ξ»${ident x0},${ident x1},${ident x2}.$P0) (Ξ»${ident x0},${ident x1},${ident x2}.$P1) (Ξ»${ident x0},${ident x1},${ident x2}.$P2) (Ξ»${ident x0},${ident x1},${ident x2}.$P3) (Ξ»${ident x0},${ident x1},${ident x2}.$P4) }.
+
+notation "hvbox(βˆƒβˆƒ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)"
+ non associative with precedence 20
+ for @{ 'Ex (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P0) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P1) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P2) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P3) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3}.$P4) }.
+
 notation "hvbox(βˆƒβˆƒ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)"
  non associative with precedence 20
  for @{ 'Ex (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P0) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P1) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P2) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P3) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P4) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P5) }.
 
-notation "hvbox(Γ’\88¨Ò\88Β¨ term 19 P0 break | term 19 P1 break | term 19 P2)"
+notation "hvbox(Γ’\88\83Γ’\88\83 ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)"
  non associative with precedence 20
+ for @{ 'Ex (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P0) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P1) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P2) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P3) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P4) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P5) (Ξ»${ident x0},${ident x1},${ident x2},${ident x3},${ident x4},${ident x5}.$P6) }.
+
+notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2)"
+ non associative with precedence 30
  for @{ 'Or $P0 $P1 $P2 }.
 
+notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2 break | term 29 P3)"
+ non associative with precedence 30
+ for @{ 'Or $P0 $P1 $P2 $P3 }.
+