]> matita.cs.unibo.it Git - helm.git/commitdiff
update for the article
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 18 Nov 2019 22:12:40 +0000 (23:12 +0100)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 18 Nov 2019 22:12:40 +0000 (23:12 +0100)
+ pending conjectures proved
+ some renaming
+ probe: dependences are output in order

165 files changed:
.gitignore
matita/components/binaries/probe/options.ml
matita/matita/contribs/lambdadelta/Makefile
matita/matita/contribs/lambdadelta/alpha_1/syntax/term.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_trans.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_conf.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_trans.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpme.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmre.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq_conf.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx_conf.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmuwe_cpme.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmuwe_cpmre.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_eval.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_cpes.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme_aaa.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre_aaa.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmuwe_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpms.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpre.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_csx.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cpms.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cprre.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_csx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_teqo.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_gcp.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_gcr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple_teqo.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fpbs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_rsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_basic.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_fpb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl
matita/matita/contribs/lambdadelta/compile_partial.sh
matita/matita/contribs/lambdadelta/ground_2/lib/arith.ma
matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma
matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/relocation/lifts_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/aaa_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/aaa_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/feqx_feqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/feqx_fqup.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/feqx_fqus.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/feqx_req.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqup.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/rdeq_rdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/rdeq_req.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/static/reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/reqx_drops.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/reqx_fqup.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/reqx_fqus.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/reqx_length.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/reqx_req.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/static/reqx_reqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/syntax/sd_d.ma
matita/matita/contribs/lambdadelta/static_2/syntax/sh_lt.ma
matita/matita/contribs/lambdadelta/static_2/syntax/tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_ext.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/syntax/teqo_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/syntax/teqo_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/syntax/teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/syntax/teqx_ext.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/syntax/teqx_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/syntax/tweq_tdeq.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/syntax/tweq_teqx.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/web/static_2_src.tbl

index e7228e3ba6538d1b96b59a22207bd2b05f9b4968..5958dcdfba12d445ac64f9e7090cfef2222b36c3 100644 (file)
@@ -74,7 +74,8 @@ matita/matita/contribs/lambdadelta/.depend
 matita/matita/contribs/lambdadelta/nodes
 matita/matita/contribs/lambdadelta/token
 matita/matita/contribs/lambdadelta/2A
-matita/matita/contribs/lambdadelta/*/*_probe.txt
+matita/matita/contribs/lambdadelta/*/probe.txt
+matita/matita/contribs/lambdadelta/*/deps.txt
 matita/matita/contribs/lambdadelta/*/web/*_sum.tbl
 
 matita/matita/contribs/convergence/
index 981483e29b196ce8fbbae3a593f7f004913bfb12..ce29c1ef0f7499b6e9e16b8b4275865c3a4f6fd0 100644 (file)
@@ -16,7 +16,25 @@ module C  = NCic
 module R  = Helm_registry
 module U  = NUri
 module US = NUri.UriSet
-module UH = NUri.UriHash
+
+module UriPair = struct
+
+  type t = U.uri * U.uri
+
+  let equal (u1l,u1r) (u2l,u2r) =
+     U.eq u1l u2l && U.eq u1r u2r
+
+  let compare (u1l,u1r) (u2l,u2r) =
+    match U.compare u1l u2l with
+    | 0 -> U.compare u1r u2r
+    | c -> c
+
+  let hash (ul,ur) =
+    Hashtbl.hash (U.hash ul, U.hash ur)
+
+end
+
+module UPS = Set.Make(UriPair)
 
 type def_xflavour = [ C.def_flavour
                     | `Inductive
@@ -62,7 +80,7 @@ let no_devel = ref default_no_devel
 
 let no_init = ref default_no_init
 
-let deps = UH.create 11
+let deps = ref UPS.empty
 
 let index_of_xflavour = function
   | `Inductive  -> 0
@@ -83,14 +101,14 @@ let clear_slot i _ = slot.(i) <- 0
 let iter_xflavours map = A.iteri (fun _ -> map) slot
 
 let add_dep c u =
-  UH.add deps c u
+  deps := UPS.add (c,u) !deps
 
 let out_deps file =
   let och = open_out file in
-  let map a b =
+  let map (a,b) =
     P.fprintf och "\"%s\": \"%s\"\n" (U.string_of_uri a) (U.string_of_uri b)
   in
-  UH.iter map deps;
+  UPS.iter map !deps;
   close_out och
 
 let clear () =
@@ -99,4 +117,4 @@ let clear () =
   exclude := default_exclude; net := default_net;
   chars := default_chars; debug_lexer := default_debug_lexer;
   no_devel := default_no_devel; no_init := default_no_init;
-  UH.reset deps
+  deps := UPS.empty
index dd955bcc233944487ee9c20cc2c53003194fe021..3e0228cb086305ca98911fea26b7ec66d432698f 100644 (file)
@@ -29,7 +29,7 @@ CONTRIB      := lambdadelta_2
 
 WWW          := ../../../../helm/www/lambdadelta
 
-TAGS := all xoa xoa2 orig elim deps top leaf stats tbls trim contrib clean \
+TAGS := all xoa xoa2 orig elim deps top leaf stats tbls odeps trim contrib clean \
         www up-html
 
 PACKAGES  := ground_2 static_2 basic_2 apps_2 alpha_1
@@ -48,10 +48,14 @@ define MAS_TEMPLATE
   MAS_$(1) := $$(shell find $(1) -name "*.ma")
   MAS      += $$(MAS_$(1))
 
-$(1)/$(1)_probe.txt: $$(MAS_$(1))
+$(1)/probe.txt: $$(MAS_$(1))
        @echo "  PROBE $(1)"
-       $$(H)$$(PRB_DIR)/$$(PRB) $$(PRB_OPTS) $(1) -sn -sc -on -oc -f -b $(1)/$(1)_deps.txt > $$@
-       $$(H)sort < $(1)/$(1)_deps.txt | uniq > $(1)/$(1)_deps_uniq.txt
+       $$(H)$$(PRB_DIR)/$$(PRB) $$(PRB_OPTS) $(1) -sn -sc -on -oc -f > $$@
+
+$(1)/deps.txt: $$(MAS_$(1))
+       @echo "  PROBE $(1)"
+       $$(H)$$(PRB_DIR)/$$(PRB) $$(PRB_OPTS) $(1) -b $$@
+
 endef
 
 $(foreach PKG, $(PACKAGES), $(eval $(call MAS_TEMPLATE,$(PKG))))
@@ -123,7 +127,7 @@ define STATS_TEMPLATE
   STT_$(1) := $(1).stats
   STTS     += $$(STT_$(1))
 
-  $$(STT_$(1)): C0 = $$(shell cat $(1)/$(1)_probe.txt)
+  $$(STT_$(1)): C0 = $$(shell cat $(1)/probe.txt)
   $$(STT_$(1)): C2 = $$(word 2, $$(C0))
   $$(STT_$(1)): C3 = $$(word 4, $$(C0))
   $$(STT_$(1)): O1 = $$(shell ls $$(MAS_$(1)) | wc -l)
@@ -140,7 +144,7 @@ define STATS_TEMPLATE
   $$(STT_$(1)): M2 = $$(shell grep "$$(OPEN)\*[^*:]*$$$$" $$(MAS_$(1)) | wc -l)
   $$(STT_$(1)): M3 = $$(shell grep "(\*\*)" $$(MAS_$(1)) | wc -l)
 
-$$(STT_$(1)): $$(MAS_$(1)) $(1)/$(1)_probe.txt
+$$(STT_$(1)): $$(MAS_$(1)) $(1)/probe.txt
        @printf '\x1B[1;40;37m'
        @printf '%-15s %-46s' 'Statistics for:' $(1)
        @printf '\x1B[0m\n'
@@ -187,10 +191,10 @@ stats: $(STTS)
 # summary ####################################################################
 
 define SUMMARY_TEMPLATE
-  SUM_$(1) := $(1)/web/$(1)_sum.tbl  
+  SUM_$(1) := $(1)/web/$(1)_sum.tbl
   SUMS     += $$(SUM_$(1))
 
-  $$(SUM_$(1)): C0 = $$(shell cat $(1)/$(1)_probe.txt)
+  $$(SUM_$(1)): C0 = $$(shell cat $(1)/probe.txt)
   $$(SUM_$(1)): S1 = $$(word 1, $$(C0))
   $$(SUM_$(1)): S2 = $$(word 2, $$(C0))
   $$(SUM_$(1)): S3 = $$(word 3, $$(C0))
@@ -203,7 +207,7 @@ define SUMMARY_TEMPLATE
   $$(SUM_$(1)): P2 = $$(word 9, $$(C0))
   $$(SUM_$(1)): P3 = $$(shell echo "$$(P1)+$$(P2)"|bc)
 
-  $$(SUM_$(1)): $$(MAS_$(1)) $(1)/$(1)_probe.txt Makefile
+  $$(SUM_$(1)): $$(MAS_$(1)) $(1)/probe.txt Makefile
        @printf '  SUMMARY $(1)\n'
        @printf 'name "$$(basename $$(@F))"\n\n'                        >  $$@
        @printf 'table {\n'                                             >> $$@
@@ -239,6 +243,10 @@ endif
 
 tbls: $(SUMS)
 
+# odeps ######################################################################
+
+odeps: $(PACKAGES:%=%/deps.txt)
+
 # trim #######################################################################
 
 TRIMS := $(MAS) $(TBLS) $(LDWS)
index 674e618a8874c3629230246f42b6c5ffdb9a8f58..7b09c887df47aad954a767d4109d5cd42e14a860 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/constructors/snitem2_3.ma".
-include "basic_2/notation/constructors/star_0.ma".
-include "basic_2/notation/constructors/snabstpos_2.ma".
-include "basic_2/notation/constructors/snabbr_3.ma".
-include "basic_2/notation/constructors/snabbrpos_2.ma".
-include "basic_2/notation/constructors/snabbrneg_2.ma".
+include "static_2/notation/functions/snitem2_3.ma".
+include "static_2/notation/functions/star_0.ma".
+include "static_2/notation/functions/snabstpos_2.ma".
+include "static_2/notation/functions/snabbr_3.ma".
+include "static_2/notation/functions/snabbrpos_2.ma".
+include "static_2/notation/functions/snabbrneg_2.ma".
 include "alpha_1/notation/constructors/snitem1_2.ma".
 include "alpha_1/notation/constructors/snstar_2.ma".
 include "alpha_1/notation/constructors/snlref_2.ma".
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq.ma
deleted file mode 100644 (file)
index 4ea9ff5..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "ground_2/xoa/ex_5_1.ma".
-include "ground_2/xoa/ex_9_3.ma".
-include "basic_2/rt_transition/cpm_tdeq.ma".
-include "basic_2/rt_computation/fpbg_fqup.ma".
-include "basic_2/dynamic/cnv_fsb.ma".
-
-(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
-
-(* Inversion lemmas with restricted rt-transition for terms *****************)
-
-lemma cnv_cpr_tdeq_fwd_refl (h) (a) (G) (L):
-      ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 → T1 ≛ T2 → ⦃G,L⦄ ⊢ T1 ![h,a] → T1 = T2.
-#h #a #G #L #T1 #T2 #H @(cpr_ind … H) -G -L -T1 -T2
-[ //
-| #G #K #V1 #V2 #X2 #_ #_ #_ #H1 #_ -a -G -K -V1 -V2
-  lapply (tdeq_inv_lref1 … H1) -H1 #H destruct //
-| #I #G #K #T2 #X2 #i #_ #_ #_ #H1 #_ -a -I -G -K -T2
-  lapply (tdeq_inv_lref1 … H1) -H1 #H destruct //
-| #p #I #G #L #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #H1 #H2
-  elim (tdeq_inv_pair1 … H1) -H1 #V0 #T0 #HV0 #HT0 #H destruct
-  elim (cnv_inv_bind … H2) -H2 #HV1 #HT1
-  /3 width=3 by eq_f2/
-| #I #G #L #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #H1 #H2
-  elim (tdeq_inv_pair1 … H1) -H1 #V0 #T0 #HV0 #HT0 #H destruct
-  elim (cnv_fwd_flat … H2) -H2 #HV1 #HT1
-  /3 width=3 by eq_f2/
-| #G #K #V #T1 #X1 #X2 #HXT1 #HX12 #_ #H1 #H2
-  elim (cnv_fpbg_refl_false … H2) -a
-  @(fpbg_tdeq_div … H1) -H1
-  /3 width=9 by cpm_tdneq_cpm_fpbg, cpm_zeta, tdeq_lifts_inv_pair_sn/
-| #G #L #U #T1 #T2 #HT12 #_ #H1 #H2
-  elim (cnv_fpbg_refl_false … H2) -a
-  @(fpbg_tdeq_div … H1) -H1
-  /3 width=6 by cpm_tdneq_cpm_fpbg, cpm_eps, tdeq_inv_pair_xy_y/
-| #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #H1 #_
-  elim (tdeq_inv_pair … H1) -H1 #H #_ #_ destruct
-| #p #G #L #V1 #V2 #X2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #_ #H1 #_
-  elim (tdeq_inv_pair … H1) -H1 #H #_ #_ destruct
-]
-qed-.
-
-lemma cpm_tdeq_inv_bind_sn (h) (a) (n) (p) (I) (G) (L):
-      ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![h,a] →
-      ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
-      ∃∃T2. ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
-#h #a #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
-elim (cpm_inv_bind1 … H1) -H1 *
-[ #XV #T2 #HXV #HT12 #H destruct
-  elim (tdeq_inv_pair … H2) -H2 #_ #H2XV #H2T12
-  elim (cnv_inv_bind … H0) -H0 #HV #HT
-  lapply (cnv_cpr_tdeq_fwd_refl … HXV H2XV HV) #H destruct -HXV -H2XV
-  /2 width=4 by ex5_intro/
-| #X1 #HXT1 #HX1 #H1 #H destruct
-  elim (cnv_fpbg_refl_false … H0) -a
-  @(fpbg_tdeq_div … H2) -H2
-  /3 width=9 by cpm_tdneq_cpm_fpbg, cpm_zeta, tdeq_lifts_inv_pair_sn/
-]
-qed-.
-
-lemma cpm_tdeq_inv_appl_sn (h) (a) (n) (G) (L):
-      ∀V,T1. ⦃G,L⦄ ⊢ ⓐV.T1 ![h,a] →
-      ∀X. ⦃G,L⦄ ⊢ ⓐV.T1 ➡[n,h] X → ⓐV.T1 ≛ X →
-      ∃∃m,q,W,U1,T2. ad a m & ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L⦄ ⊢ V ➡*[1,h] W & ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{q}W.U1
-                   & ⦃G,L⦄⊢ T1 ![h,a] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓐV.T2.
-#h #a #n #G #L #V #T1 #H0 #X #H1 #H2
-elim (cpm_inv_appl1 … H1) -H1 *
-[ #XV #T2 #HXV #HT12 #H destruct
-  elim (tdeq_inv_pair … H2) -H2 #_ #H2XV #H2T12
-  elim (cnv_inv_appl … H0) -H0 #m #q #W #U1 #Hm #HV #HT #HVW #HTU1
-  lapply (cnv_cpr_tdeq_fwd_refl … HXV H2XV HV) #H destruct -HXV -H2XV
-  /3 width=7 by ex8_5_intro/
-| #q #V2 #W1 #W2 #XT #T2 #_ #_ #_ #H1 #H destruct -H0
-  elim (tdeq_inv_pair … H2) -H2 #H #_ #_ destruct
-| #q #V2 #XV #W1 #W2 #XT #T2 #_ #_ #_ #_ #H1 #H destruct -H0
-  elim (tdeq_inv_pair … H2) -H2 #H #_ #_ destruct
-]
-qed-.
-
-lemma cpm_tdeq_inv_cast_sn (h) (a) (n) (G) (L):
-      ∀U1,T1. ⦃G,L⦄ ⊢ ⓝU1.T1 ![h,a] →
-      ∀X. ⦃G,L⦄ ⊢ ⓝU1.T1 ➡[n,h] X → ⓝU1.T1 ≛ X →
-      ∃∃U0,U2,T2. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 & ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0
-                & ⦃G,L⦄ ⊢ U1 ![h,a] & ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 & U1 ≛ U2
-                & ⦃G,L⦄ ⊢ T1 ![h,a] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓝU2.T2.
-#h #a #n #G #L #U1 #T1 #H0 #X #H1 #H2
-elim (cpm_inv_cast1 … H1) -H1 [ * || * ]
-[ #U2 #T2 #HU12 #HT12 #H destruct
-  elim (tdeq_inv_pair … H2) -H2 #_ #H2U12 #H2T12
-  elim (cnv_inv_cast … H0) -H0 #U0 #HU1 #HT1 #HU10 #HT1U0
-  /2 width=7 by ex9_3_intro/
-| #HT1X
-  elim (cnv_fpbg_refl_false … H0) -a
-  @(fpbg_tdeq_div … H2) -H2
-  /3 width=6 by cpm_tdneq_cpm_fpbg, cpm_eps, tdeq_inv_pair_xy_y/
-| #m #HU1X #H destruct
-  elim (cnv_fpbg_refl_false … H0) -a
-  @(fpbg_tdeq_div … H2) -H2
-  /3 width=6 by cpm_tdneq_cpm_fpbg, cpm_ee, tdeq_inv_pair_xy_x/
-]
-qed-.
-
-lemma cpm_tdeq_inv_bind_dx (h) (a) (n) (p) (I) (G) (L):
-      ∀X. ⦃G,L⦄ ⊢ X ![h,a] →
-      ∀V,T2. ⦃G,L⦄ ⊢ X ➡[n,h] ⓑ{p,I}V.T2 → X ≛ ⓑ{p,I}V.T2 →
-      ∃∃T1. ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T1.
-#h #a #n #p #I #G #L #X #H0 #V #T2 #H1 #H2
-elim (tdeq_inv_pair2 … H2) #V0 #T1 #_ #_ #H destruct
-elim (cpm_tdeq_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T0 #HV #HT1 #H1T12 #H2T12 #H destruct
-/2 width=5 by ex5_intro/
-qed-.
-
-(* Eliminators with restricted rt-transition for terms **********************)
-
-lemma cpm_tdeq_ind (h) (a) (n) (G) (Q:relation3 …):
-      (∀I,L. n = 0 → Q L (⓪{I}) (⓪{I})) →
-      (∀L,s. n = 1 → Q L (⋆s) (⋆(⫯[h]s))) →
-      (∀p,I,L,V,T1. ⦃G,L⦄⊢ V![h,a] → ⦃G,L.ⓑ{I}V⦄⊢T1![h,a] →
-        ∀T2. ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-        Q (L.ⓑ{I}V) T1 T2 → Q L (ⓑ{p,I}V.T1) (ⓑ{p,I}V.T2)
-      ) →
-      (∀m. ad a m →
-        ∀L,V. ⦃G,L⦄ ⊢ V ![h,a] → ∀W. ⦃G,L⦄ ⊢ V ➡*[1,h] W →
-        ∀p,T1,U1. ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{p}W.U1 → ⦃G,L⦄⊢ T1 ![h,a] →
-        ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-        Q L T1 T2 → Q L (ⓐV.T1) (ⓐV.T2)
-      ) →
-      (∀L,U0,U1,T1. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 → ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0 →
-        ∀U2. ⦃G,L⦄ ⊢ U1 ![h,a] → ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 → U1 ≛ U2 →
-        ∀T2. ⦃G,L⦄ ⊢ T1 ![h,a] → ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-        Q L U1 U2 → Q L T1 T2 → Q L (ⓝU1.T1) (ⓝU2.T2)
-      ) →
-      ∀L,T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
-      ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 → Q L T1 T2.
-#h #a #n #G #Q #IH1 #IH2 #IH3 #IH4 #IH5 #L #T1
-@(insert_eq_0 … G) #F
-@(fqup_wf_ind_eq (Ⓣ) … F L T1) -L -T1 -F
-#G0 #L0 #T0 #IH #F #L * [| * [| * ]]
-[ #I #_ #_ #_ #_ #HF #X #H1X #H2X destruct -G0 -L0 -T0
-  elim (cpm_tdeq_inv_atom_sn … H1X H2X) -H1X -H2X *
-  [ #H1 #H2 destruct /2 width=1 by/
-  | #s #H1 #H2 #H3 destruct /2 width=1 by/
-  ]
-| #p #I #V #T1 #HG #HL #HT #H0 #HF #X #H1X #H2X destruct
-  elim (cpm_tdeq_inv_bind_sn … H0 … H1X H2X) -H0 -H1X -H2X #T2 #HV #HT1 #H1T12 #H2T12 #H destruct
-  /3 width=5 by/
-| #V #T1 #HG #HL #HT #H0 #HF #X #H1X #H2X destruct
-  elim (cpm_tdeq_inv_appl_sn … H0 … H1X H2X) -H0 -H1X -H2X #m #q #W #U1 #T2 #Hm #HV #HVW #HTU1 #HT1 #H1T12 #H2T12 #H destruct
-  /3 width=7 by/
-| #U1 #T1 #HG #HL #HT #H0 #HF #X #H1X #H2X destruct
-  elim (cpm_tdeq_inv_cast_sn … H0 … H1X H2X) -H0 -H1X -H2X #U0 #U2 #T2 #HU10 #HT1U0 #HU1 #H1U12 #H2U12 #HT1 #H1T12 #H2T12 #H destruct
-  /3 width=5 by/
-]
-qed-.
-
-(* Advanced properties with restricted rt-transition for terms **************)
-
-lemma cpm_tdeq_free (h) (a) (n) (G) (L):
-      ∀T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
-      ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-      ∀F,K. ⦃F,K⦄ ⊢ T1 ➡[n,h] T2.
-#h #a #n #G #L #T1 #H0 #T2 #H1 #H2
-@(cpm_tdeq_ind … H0 … H1 H2) -L -T1 -T2
-[ #I #L #H #F #K destruct //
-| #L #s #H #F #K destruct //
-| #p #I #L #V #T1 #_ #_ #T2 #_ #_ #IH #F #K
-  /2 width=1 by cpm_bind/
-| #m #_ #L #V #_ #W #_ #q #T1 #U1 #_ #_ #T2 #_ #_ #IH #F #K
-  /2 width=1 by cpm_appl/
-| #L #U0 #U1 #T1 #_ #_ #U2 #_ #_ #_ #T2 #_ #_ #_ #IHU #IHT #F #K
-  /2 width=1 by cpm_cast/
-]
-qed-.
-
-(* Advanced inversion lemmas with restricted rt-transition for terms ********)
-
-lemma cpm_tdeq_inv_bind_sn_void (h) (a) (n) (p) (I) (G) (L):
-      ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![h,a] →
-      ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
-      ∃∃T2. ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![h,a] & ⦃G,L.ⓧ⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
-#h #a #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
-elim (cpm_tdeq_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T2 #HV #HT1 #H1T12 #H2T12 #H
-/3 width=5 by ex5_intro, cpm_tdeq_free/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma
deleted file mode 100644 (file)
index 54cd32a..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "ground_2/xoa/ex_4_1_props.ma".
-include "basic_2/dynamic/cnv_cpm_tdeq.ma".
-
-(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
-
-definition IH_cnv_cpm_tdeq_conf_lpr (h) (a): relation3 genv lenv term ≝
-           λG,L0,T0. ⦃G,L0⦄ ⊢ T0 ![h,a] →
-           ∀n1,T1. ⦃G,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-           ∀n2,T2. ⦃G,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-           ∀L1. ⦃G,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L0⦄ ⊢ ➡[h] L2 →
-           ∃∃T. ⦃G,L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ⦃G,L2⦄ ⊢ T2 ➡[n1-n2,h] T & T2 ≛ T.
-
-(* Diamond propery with restricted rt-transition for terms ******************)
-
-fact cnv_cpm_tdeq_conf_lpr_atom_atom_aux (h) (G0) (L1) (L2) (I):
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛ T & ⦃G0,L2⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛ T.
-#h #G0 #L1 #L2 #I
-/2 width=5 by ex4_intro/
-qed-.
-
-fact cnv_cpm_tdeq_conf_lpr_atom_ess_aux (h) (G0) (L1) (L2) (s):
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⋆s ➡[1,h] T & ⋆s ≛ T & ⦃G0,L2⦄ ⊢ ⋆(⫯[h]s) ➡[h] T & ⋆(⫯[h]s) ≛ T.
-#h #G0 #L1 #L2 #s
-/3 width=5 by tdeq_sort, ex4_intro/
-qed-.
-
-fact cnv_cpm_tdeq_conf_lpr_bind_bind_aux (h) (a) (p) (I) (G0) (L0) (V0) (T0):
-     (∀G,L,T. ⦃G0,L0,ⓑ{p,I}V0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr h a G L T) →
-     ⦃G0,L0⦄ ⊢ ⓑ{p,I}V0.T0 ![h,a] →
-     ∀n1,T1. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-     ∀n2,T2. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓑ{p,I}V0.T1 ➡[n2-n1,h] T & ⓑ{p,I}V0.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓑ{p,I}V0.T2 ➡[n1-n2,h] T & ⓑ{p,I}V0.T2 ≛ T.
-#h #a #p #I #G0 #L0 #V0 #T0 #IH #H0
-#n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
-#L1 #HL01 #L2 #HL02
-elim (cnv_inv_bind … H0) -H0 #_ #HT0
-elim (IH … H1T01 H2T01 … H1T02 H2T02 (L1.ⓑ{I}V0) … (L2.ⓑ{I}V0)) [|*: /2 width=1 by lpr_bind_refl_dx/ ]
-#T #H1T1 #H2T1 #H1T2 #H2T2 -L0 -T0
-/3 width=7 by cpm_bind, tdeq_pair, ex4_intro/
-qed-.
-
-fact cnv_cpm_tdeq_conf_lpr_appl_appl_aux (h) (a) (G0) (L0) (V0) (T0):
-     (∀G,L,T. ⦃G0,L0,ⓐV0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr h a G L T) →
-     ⦃G0,L0⦄ ⊢ ⓐV0.T0 ![h,a] →
-     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓐV0.T1 ➡[n2-n1,h] T & ⓐV0.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓐV0.T2 ➡[n1-n2,h] T & ⓐV0.T2 ≛ T.
-#h #a #G0 #L0 #V0 #T0 #IH #H0
-#n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
-#L1 #HL01 #L2 #HL02
-elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #_ #HT0 #_ #_ -n0 -p0 -X01 -X02
-elim (IH … H1T01 H2T01 … H1T02 H2T02 … HL01 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
-#T #H1T1 #H2T1 #H1T2 #H2T2 -L0 -T0
-/3 width=7 by cpm_appl, tdeq_pair, ex4_intro/
-qed-.
-
-fact cnv_cpm_tdeq_conf_lpr_cast_cast_aux (h) (a) (G0) (L0) (V0) (T0):
-     (∀G,L,T. ⦃G0,L0,ⓝV0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr h a G L T) →
-     ⦃G0,L0⦄ ⊢ ⓝV0.T0 ![h,a] →
-     ∀n1,V1. ⦃G0,L0⦄ ⊢ V0 ➡[n1,h] V1 → V0 ≛ V1 →
-     ∀n2,V2. ⦃G0,L0⦄ ⊢ V0 ➡[n2,h] V2 → V0 ≛ V2 →
-     ∀T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-     ∀T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓝV1.T1 ➡[n2-n1,h] T & ⓝV1.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓝV2.T2 ➡[n1-n2,h] T & ⓝV2.T2 ≛ T.
-#h #a #G0 #L0 #V0 #T0 #IH #H0
-#n1 #V1 #H1V01 #H2V01 #n2 #V2 #H1V02 #H2V02 #T1 #H1T01 #H2T01 #T2 #H1T02 #H2T02
-#L1 #HL01 #L2 #HL02
-elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #HT0 #_ #_ -X0
-elim (IH … H1V01 H2V01 … H1V02 H2V02 … HL01 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
-elim (IH … H1T01 H2T01 … H1T02 H2T02 … HL01 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
-#T #H1T1 #H2T1 #H1T2 #H2T2 #V #H1V1 #H2V1 #H1V2 #H2V2 -L0 -V0 -T0
-/3 width=7 by cpm_cast, tdeq_pair, ex4_intro/
-qed-.
-
-fact cnv_cpm_tdeq_conf_lpr_aux (h) (a) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr h a G L T) →
-     ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpm_tdeq_conf_lpr h a G L T.
-#h #a #G0 #L0 #T0 #IH1 #G #L * [| * [| * ]]
-[ #I #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
-  elim (cpm_tdeq_inv_atom_sn … H1X1 H2X1) -H1X1 -H2X1 *
-  elim (cpm_tdeq_inv_atom_sn … H1X2 H2X2) -H1X2 -H2X2 *
-  [ #H21 #H22 #H11 #H12 destruct -a -L
-    <minus_O_n
-    /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_atom_aux/
-  | #s2 #H21 #H22 #H23 #H11 #H12 destruct -a -L
-    <minus_O_n <minus_n_O
-    /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_ess_aux/
-  | #H21 #H22 #s1 #H11 #H12 #H13 destruct -a -L
-    <minus_O_n <minus_n_O
-    @ex4_commute /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_ess_aux/
-  | #s2 #H21 #H22 #H23 #s1 #H11 #H12 #H13 destruct -a -L
-    <minus_n_n
-    /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_atom_aux/
-  ]
-| #p #I #V #T #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
-  elim (cpm_tdeq_inv_bind_sn … HT … H1X1 H2X1) -H1X1 -H2X1
-  elim (cpm_tdeq_inv_bind_sn … HT … H1X2 H2X2) -H1X2 -H2X2
-  #T2 #_ #_ #H1T2 #H2T2 #H21 #T1 #_ #_ #H1T1 #H2T1 #H11 destruct
-  @(cnv_cpm_tdeq_conf_lpr_bind_bind_aux … IH1) -IH1 /1 width=1 by/
-| #V #T #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
-  elim (cpm_tdeq_inv_appl_sn … HT … H1X1 H2X1) -H1X1 -H2X1
-  elim (cpm_tdeq_inv_appl_sn … HT … H1X2 H2X2) -H1X2 -H2X2
-  #m2 #q2 #W2 #U2 #T2 #_ #_ #_ #_ #_ #H1T2 #H2T2 #H21 #m1 #q1 #W1 #U1 #T1 #_ #_ #_ #_ #_ #H1T1 #H2T1 #H11 destruct -m1 -m2 -q1 -q2 -W1 -W2 -U1 -U2
-  @(cnv_cpm_tdeq_conf_lpr_appl_appl_aux … IH1) -IH1 /1 width=1 by/
-| #V #T #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
-  elim (cpm_tdeq_inv_cast_sn … HT … H1X1 H2X1) -H1X1 -H2X1
-  elim (cpm_tdeq_inv_cast_sn … HT … H1X2 H2X2) -H1X2 -H2X2
-  #U2 #V2 #T2 #_ #_ #_ #H1V2 #H2V2 #_ #H1T2 #H2T2 #H21 #U1 #V1 #T1 #_ #_ #_ #H1V1 #H2V1 #_ #H1T1 #H2T1 #H11 destruct -U1 -U2
-  @(cnv_cpm_tdeq_conf_lpr_cast_cast_aux … IH1) -IH1 /1 width=1 by/
-]
-qed-.
-
-lemma cnv_cpm_tdeq_conf_lpr (h) (a) (G0) (L0) (T0):
-      IH_cnv_cpm_tdeq_conf_lpr h a G0 L0 T0.
-#h #a #G0 #L0 #T0
-@(fqup_wf_ind (Ⓣ) … G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH
-/3 width=17 by cnv_cpm_tdeq_conf_lpr_aux/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_trans.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_trans.ma
deleted file mode 100644 (file)
index c71ef29..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/dynamic/cnv_cpm_trans.ma".
-include "basic_2/dynamic/cnv_cpm_tdeq.ma".
-
-(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
-
-definition IH_cnv_cpm_tdeq_cpm_trans (h) (a): relation3 genv lenv term ≝
-           λG,L,T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
-           ∀n1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → T1 ≛ T →
-           ∀n2,T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 →
-           ∃∃T0. ⦃G,L⦄ ⊢ T1 ➡[n2,h] T0 & ⦃G,L⦄ ⊢ T0 ➡[n1,h] T2 & T0 ≛ T2.
-
-(* Transitive properties restricted rt-transition for terms *****************)
-
-fact cnv_cpm_tdeq_cpm_trans_sub (h) (a) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_cpm_trans h a G L T) →
-     ∀G,L,T1. G0 = G → L0 = L → T0 = T1 → IH_cnv_cpm_tdeq_cpm_trans h a G L T1.
-#h #a #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
-[ #I #_ #_ #_ #_ #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct -G0 -L0 -T0
-  elim (cpm_tdeq_inv_atom_sn … H1X H2X) -H1X -H2X *
-  [ #H1 #H2 destruct /2 width=4 by ex3_intro/
-  | #s #H1 #H2 #H3 destruct
-    elim (cpm_inv_sort1 … HX2) -HX2 #H #Hn2 destruct >iter_n_Sm
-    /3 width=4 by cpm_sort, tdeq_sort, ex3_intro/
-  ]
-| #p #I #V1 #T1 #HG #HL #HT #H0 #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct
-  elim (cpm_tdeq_inv_bind_sn … H0 … H1X H2X) -H0 -H1X -H2X #T #_ #H0T1 #H1T1 #H2T1 #H destruct
-  elim (cpm_inv_bind1 … HX2) -HX2 *
-  [ #V2 #T2 #HV12 #HT2 #H destruct
-    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 [| // ] #T0 #HT10 #H1T02 #H2T02
-    lapply (IH2 … H0T1 … HT10 (L.ⓑ{I}V1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
-    lapply (cpm_tdeq_free … HT0 … H1T02 H2T02 G (L.ⓑ{I}V2)) -H1T02 #H1T02
-    /3 width=6 by cpm_bind, tdeq_pair, ex3_intro/
-  | #T2 #HT2 #HTX2 #H1 #H2 destruct -IH2
-    elim (tdeq_inv_lifts_dx … H2T1 … HT2) -H2T1 #XT #HXT1 #H2XT2
-    lapply (cpm_inv_lifts_bi … H1T1 (Ⓣ) … HXT1 … HT2) -T [3:|*: /3 width=2 by drops_refl, drops_drop/ ] #H1XT2
-    lapply (cnv_inv_lifts … H0T1 (Ⓣ) … HXT1) -H0T1 [3:|*: /3 width=2 by drops_refl, drops_drop/ ] #H0XT2
-    elim (IH1 … H0XT2 … H1XT2 H2XT2 … HTX2) -T2 -IH1 -H0XT2 [| /2 width=1 by fqup_zeta/ ] #T2 #HXT2 #H1TX2 #H2XT2
-    /3 width=4 by cpm_zeta, ex3_intro/
-  ]
-| #V1 #XT1 #HG #HL #HT #H0 #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct
-  elim (cpm_tdeq_inv_appl_sn … H0 … H1X H2X) -H0 -H1X -H2X #m #q #W1 #U1 #XT #_ #_ #_ #_ #H0T1 #H1T1 #H2T1 #H destruct -m -q -W1 -U1
-  elim (cpm_inv_appl1 … HX2) -HX2 *
-  [ #V2 #T2 #HV12 #HT2 #H destruct -IH2
-    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -XT -IH1 -H0T1 [| // ] #T0 #HT10 #H1T02 #H2T02
-    /3 width=6 by cpm_appl, tdeq_pair, ex3_intro/
-  | #p #V2 #W1 #W2 #T #T2 #HV12 #HW12 #HT2 #H1 #H2 destruct
-    elim (cpm_tdeq_inv_bind_dx … H0T1 … H1T1 H2T1) -H0T1 -H1T1 -H2T1 #T1 #_ #H0T1 #H1T1 #H2T1 #H destruct
-    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 [| // ] #T0 #HT10 #H1T02 #H2T02
-    lapply (IH2 … H0T1 … HT10 (L.ⓛW1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
-    lapply (cpm_tdeq_free … HT0 … H1T02 H2T02 G (L.ⓓⓝW2.V2)) -H1T02 #H1T02
-    /3 width=6 by cpm_beta, cpm_bind, tdeq_pair, ex3_intro/
-  | #p #V2 #V0 #W1 #W2 #T #T2 #HV12 #HV20 #HW12 #HT2 #H1 #H2 destruct
-    elim (cpm_tdeq_inv_bind_dx … H0T1 … H1T1 H2T1) -H0T1 -H1T1 -H2T1 #T1 #_ #H0T1 #H1T1 #H2T1 #H destruct 
-    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 [| // ] #T0 #HT10 #H1T02 #H2T02
-    lapply (IH2 … H0T1 … HT10 (L.ⓓW1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
-    lapply (cpm_tdeq_free … HT0 … H1T02 H2T02 G (L.ⓓW2)) -H1T02
-    /4 width=8 by cpm_theta, cpm_appl, cpm_bind, tdeq_pair, ex3_intro/
-  ]
-| #U1 #T1 #HG #HL #HT #H0 #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct -IH2
-  elim (cpm_tdeq_inv_cast_sn … H0 … H1X H2X) -H0 -H1X -H2X #U0 #U #T #_ #_ #H0U1 #H1U1 #H2U1 #H0T1 #H1T1 #H2T1 #H destruct -U0
-  elim (cpm_inv_cast1 … HX2) -HX2 [ * || * ]
-  [ #U2 #T2 #HU2 #HT2 #H destruct
-    elim (IH1 … H0U1 … H1U1 H2U1 … HU2) -U -H0U1 [| // ] #U0 #HU10 #H1U02 #H2U02
-    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 -H0T1 [| // ] #T0 #HT10 #H1T02 #H2T02
-    /3 width=6 by cpm_cast, tdeq_pair, ex3_intro/
-  | #HTX2 -U -H0U1
-    elim (IH1 … H0T1 … H1T1 H2T1 … HTX2) -T -IH1 -H0T1 [| // ] #T0 #HT10 #H1T02 #H2T02
-    /3 width=4 by cpm_eps, ex3_intro/
-  | #m2 #HUX2 #H destruct -T -H0T1
-    elim (IH1 … H0U1 … H1U1 H2U1 … HUX2) -U -H0U1 [| // ] #U0 #HU10 #H1U02 #H2U02
-    /3 width=4 by cpm_ee, ex3_intro/
-  ]
-]
-qed-.
-
-fact cnv_cpm_tdeq_cpm_trans_aux (h) (a) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
-     IH_cnv_cpm_tdeq_cpm_trans h a G0 L0 T0.
-#h #a #G0 #L0 #T0
-@(fqup_wf_ind (Ⓣ) … G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH #IH0
-/5 width=10 by cnv_cpm_tdeq_cpm_trans_sub, fqup_fpbg_trans/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx.ma
new file mode 100644 (file)
index 0000000..e8f23f5
--- /dev/null
@@ -0,0 +1,197 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "ground_2/xoa/ex_5_1.ma".
+include "ground_2/xoa/ex_9_3.ma".
+include "basic_2/rt_transition/cpm_teqx.ma".
+include "basic_2/rt_computation/fpbg_fqup.ma".
+include "basic_2/dynamic/cnv_fsb.ma".
+
+(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
+
+(* Inversion lemmas with restricted rt-transition for terms *****************)
+
+lemma cnv_cpr_teqx_fwd_refl (h) (a) (G) (L):
+      ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 → T1 ≛ T2 → ⦃G,L⦄ ⊢ T1 ![h,a] → T1 = T2.
+#h #a #G #L #T1 #T2 #H @(cpr_ind … H) -G -L -T1 -T2
+[ //
+| #G #K #V1 #V2 #X2 #_ #_ #_ #H1 #_ -a -G -K -V1 -V2
+  lapply (teqx_inv_lref1 … H1) -H1 #H destruct //
+| #I #G #K #T2 #X2 #i #_ #_ #_ #H1 #_ -a -I -G -K -T2
+  lapply (teqx_inv_lref1 … H1) -H1 #H destruct //
+| #p #I #G #L #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #H1 #H2
+  elim (teqx_inv_pair1 … H1) -H1 #V0 #T0 #HV0 #HT0 #H destruct
+  elim (cnv_inv_bind … H2) -H2 #HV1 #HT1
+  /3 width=3 by eq_f2/
+| #I #G #L #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #H1 #H2
+  elim (teqx_inv_pair1 … H1) -H1 #V0 #T0 #HV0 #HT0 #H destruct
+  elim (cnv_fwd_flat … H2) -H2 #HV1 #HT1
+  /3 width=3 by eq_f2/
+| #G #K #V #T1 #X1 #X2 #HXT1 #HX12 #_ #H1 #H2
+  elim (cnv_fpbg_refl_false … H2) -a
+  @(fpbg_teqx_div … H1) -H1
+  /3 width=9 by cpm_tneqx_cpm_fpbg, cpm_zeta, teqx_lifts_inv_pair_sn/
+| #G #L #U #T1 #T2 #HT12 #_ #H1 #H2
+  elim (cnv_fpbg_refl_false … H2) -a
+  @(fpbg_teqx_div … H1) -H1
+  /3 width=6 by cpm_tneqx_cpm_fpbg, cpm_eps, teqx_inv_pair_xy_y/
+| #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #H1 #_
+  elim (teqx_inv_pair … H1) -H1 #H #_ #_ destruct
+| #p #G #L #V1 #V2 #X2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #_ #H1 #_
+  elim (teqx_inv_pair … H1) -H1 #H #_ #_ destruct
+]
+qed-.
+
+lemma cpm_teqx_inv_bind_sn (h) (a) (n) (p) (I) (G) (L):
+      ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![h,a] →
+      ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
+      ∃∃T2. ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
+#h #a #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
+elim (cpm_inv_bind1 … H1) -H1 *
+[ #XV #T2 #HXV #HT12 #H destruct
+  elim (teqx_inv_pair … H2) -H2 #_ #H2XV #H2T12
+  elim (cnv_inv_bind … H0) -H0 #HV #HT
+  lapply (cnv_cpr_teqx_fwd_refl … HXV H2XV HV) #H destruct -HXV -H2XV
+  /2 width=4 by ex5_intro/
+| #X1 #HXT1 #HX1 #H1 #H destruct
+  elim (cnv_fpbg_refl_false … H0) -a
+  @(fpbg_teqx_div … H2) -H2
+  /3 width=9 by cpm_tneqx_cpm_fpbg, cpm_zeta, teqx_lifts_inv_pair_sn/
+]
+qed-.
+
+lemma cpm_teqx_inv_appl_sn (h) (a) (n) (G) (L):
+      ∀V,T1. ⦃G,L⦄ ⊢ ⓐV.T1 ![h,a] →
+      ∀X. ⦃G,L⦄ ⊢ ⓐV.T1 ➡[n,h] X → ⓐV.T1 ≛ X →
+      ∃∃m,q,W,U1,T2. ad a m & ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L⦄ ⊢ V ➡*[1,h] W & ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{q}W.U1
+                   & ⦃G,L⦄⊢ T1 ![h,a] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓐV.T2.
+#h #a #n #G #L #V #T1 #H0 #X #H1 #H2
+elim (cpm_inv_appl1 … H1) -H1 *
+[ #XV #T2 #HXV #HT12 #H destruct
+  elim (teqx_inv_pair … H2) -H2 #_ #H2XV #H2T12
+  elim (cnv_inv_appl … H0) -H0 #m #q #W #U1 #Hm #HV #HT #HVW #HTU1
+  lapply (cnv_cpr_teqx_fwd_refl … HXV H2XV HV) #H destruct -HXV -H2XV
+  /3 width=7 by ex8_5_intro/
+| #q #V2 #W1 #W2 #XT #T2 #_ #_ #_ #H1 #H destruct -H0
+  elim (teqx_inv_pair … H2) -H2 #H #_ #_ destruct
+| #q #V2 #XV #W1 #W2 #XT #T2 #_ #_ #_ #_ #H1 #H destruct -H0
+  elim (teqx_inv_pair … H2) -H2 #H #_ #_ destruct
+]
+qed-.
+
+lemma cpm_teqx_inv_cast_sn (h) (a) (n) (G) (L):
+      ∀U1,T1. ⦃G,L⦄ ⊢ ⓝU1.T1 ![h,a] →
+      ∀X. ⦃G,L⦄ ⊢ ⓝU1.T1 ➡[n,h] X → ⓝU1.T1 ≛ X →
+      ∃∃U0,U2,T2. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 & ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0
+                & ⦃G,L⦄ ⊢ U1 ![h,a] & ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 & U1 ≛ U2
+                & ⦃G,L⦄ ⊢ T1 ![h,a] & ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓝU2.T2.
+#h #a #n #G #L #U1 #T1 #H0 #X #H1 #H2
+elim (cpm_inv_cast1 … H1) -H1 [ * || * ]
+[ #U2 #T2 #HU12 #HT12 #H destruct
+  elim (teqx_inv_pair … H2) -H2 #_ #H2U12 #H2T12
+  elim (cnv_inv_cast … H0) -H0 #U0 #HU1 #HT1 #HU10 #HT1U0
+  /2 width=7 by ex9_3_intro/
+| #HT1X
+  elim (cnv_fpbg_refl_false … H0) -a
+  @(fpbg_teqx_div … H2) -H2
+  /3 width=6 by cpm_tneqx_cpm_fpbg, cpm_eps, teqx_inv_pair_xy_y/
+| #m #HU1X #H destruct
+  elim (cnv_fpbg_refl_false … H0) -a
+  @(fpbg_teqx_div … H2) -H2
+  /3 width=6 by cpm_tneqx_cpm_fpbg, cpm_ee, teqx_inv_pair_xy_x/
+]
+qed-.
+
+lemma cpm_teqx_inv_bind_dx (h) (a) (n) (p) (I) (G) (L):
+      ∀X. ⦃G,L⦄ ⊢ X ![h,a] →
+      ∀V,T2. ⦃G,L⦄ ⊢ X ➡[n,h] ⓑ{p,I}V.T2 → X ≛ ⓑ{p,I}V.T2 →
+      ∃∃T1. ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T1.
+#h #a #n #p #I #G #L #X #H0 #V #T2 #H1 #H2
+elim (teqx_inv_pair2 … H2) #V0 #T1 #_ #_ #H destruct
+elim (cpm_teqx_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T0 #HV #HT1 #H1T12 #H2T12 #H destruct
+/2 width=5 by ex5_intro/
+qed-.
+
+(* Eliminators with restricted rt-transition for terms **********************)
+
+lemma cpm_teqx_ind (h) (a) (n) (G) (Q:relation3 …):
+      (∀I,L. n = 0 → Q L (⓪{I}) (⓪{I})) →
+      (∀L,s. n = 1 → Q L (⋆s) (⋆(⫯[h]s))) →
+      (∀p,I,L,V,T1. ⦃G,L⦄⊢ V![h,a] → ⦃G,L.ⓑ{I}V⦄⊢T1![h,a] →
+        ∀T2. ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        Q (L.ⓑ{I}V) T1 T2 → Q L (ⓑ{p,I}V.T1) (ⓑ{p,I}V.T2)
+      ) →
+      (∀m. ad a m →
+        ∀L,V. ⦃G,L⦄ ⊢ V ![h,a] → ∀W. ⦃G,L⦄ ⊢ V ➡*[1,h] W →
+        ∀p,T1,U1. ⦃G,L⦄ ⊢ T1 ➡*[m,h] ⓛ{p}W.U1 → ⦃G,L⦄⊢ T1 ![h,a] →
+        ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        Q L T1 T2 → Q L (ⓐV.T1) (ⓐV.T2)
+      ) →
+      (∀L,U0,U1,T1. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 → ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0 →
+        ∀U2. ⦃G,L⦄ ⊢ U1 ![h,a] → ⦃G,L⦄ ⊢ U1 ➡[n,h] U2 → U1 ≛ U2 →
+        ∀T2. ⦃G,L⦄ ⊢ T1 ![h,a] → ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        Q L U1 U2 → Q L T1 T2 → Q L (ⓝU1.T1) (ⓝU2.T2)
+      ) →
+      ∀L,T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
+      ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 → Q L T1 T2.
+#h #a #n #G #Q #IH1 #IH2 #IH3 #IH4 #IH5 #L #T1
+@(insert_eq_0 … G) #F
+@(fqup_wf_ind_eq (Ⓣ) … F L T1) -L -T1 -F
+#G0 #L0 #T0 #IH #F #L * [| * [| * ]]
+[ #I #_ #_ #_ #_ #HF #X #H1X #H2X destruct -G0 -L0 -T0
+  elim (cpm_teqx_inv_atom_sn … H1X H2X) -H1X -H2X *
+  [ #H1 #H2 destruct /2 width=1 by/
+  | #s #H1 #H2 #H3 destruct /2 width=1 by/
+  ]
+| #p #I #V #T1 #HG #HL #HT #H0 #HF #X #H1X #H2X destruct
+  elim (cpm_teqx_inv_bind_sn … H0 … H1X H2X) -H0 -H1X -H2X #T2 #HV #HT1 #H1T12 #H2T12 #H destruct
+  /3 width=5 by/
+| #V #T1 #HG #HL #HT #H0 #HF #X #H1X #H2X destruct
+  elim (cpm_teqx_inv_appl_sn … H0 … H1X H2X) -H0 -H1X -H2X #m #q #W #U1 #T2 #Hm #HV #HVW #HTU1 #HT1 #H1T12 #H2T12 #H destruct
+  /3 width=7 by/
+| #U1 #T1 #HG #HL #HT #H0 #HF #X #H1X #H2X destruct
+  elim (cpm_teqx_inv_cast_sn … H0 … H1X H2X) -H0 -H1X -H2X #U0 #U2 #T2 #HU10 #HT1U0 #HU1 #H1U12 #H2U12 #HT1 #H1T12 #H2T12 #H destruct
+  /3 width=5 by/
+]
+qed-.
+
+(* Advanced properties with restricted rt-transition for terms **************)
+
+lemma cpm_teqx_free (h) (a) (n) (G) (L):
+      ∀T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
+      ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+      ∀F,K. ⦃F,K⦄ ⊢ T1 ➡[n,h] T2.
+#h #a #n #G #L #T1 #H0 #T2 #H1 #H2
+@(cpm_teqx_ind … H0 … H1 H2) -L -T1 -T2
+[ #I #L #H #F #K destruct //
+| #L #s #H #F #K destruct //
+| #p #I #L #V #T1 #_ #_ #T2 #_ #_ #IH #F #K
+  /2 width=1 by cpm_bind/
+| #m #_ #L #V #_ #W #_ #q #T1 #U1 #_ #_ #T2 #_ #_ #IH #F #K
+  /2 width=1 by cpm_appl/
+| #L #U0 #U1 #T1 #_ #_ #U2 #_ #_ #_ #T2 #_ #_ #_ #IHU #IHT #F #K
+  /2 width=1 by cpm_cast/
+]
+qed-.
+
+(* Advanced inversion lemmas with restricted rt-transition for terms ********)
+
+lemma cpm_teqx_inv_bind_sn_void (h) (a) (n) (p) (I) (G) (L):
+      ∀V,T1. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ![h,a] →
+      ∀X. ⦃G,L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
+      ∃∃T2. ⦃G,L⦄ ⊢ V ![h,a] & ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ![h,a] & ⦃G,L.ⓧ⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
+#h #a #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
+elim (cpm_teqx_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T2 #HV #HT1 #H1T12 #H2T12 #H
+/3 width=5 by ex5_intro, cpm_teqx_free/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_conf.ma
new file mode 100644 (file)
index 0000000..f894128
--- /dev/null
@@ -0,0 +1,135 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "ground_2/xoa/ex_4_1_props.ma".
+include "basic_2/dynamic/cnv_cpm_teqx.ma".
+
+(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
+
+definition IH_cnv_cpm_teqx_conf_lpr (h) (a): relation3 genv lenv term ≝
+           λG,L0,T0. ⦃G,L0⦄ ⊢ T0 ![h,a] →
+           ∀n1,T1. ⦃G,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+           ∀n2,T2. ⦃G,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
+           ∀L1. ⦃G,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L0⦄ ⊢ ➡[h] L2 →
+           ∃∃T. ⦃G,L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ⦃G,L2⦄ ⊢ T2 ➡[n1-n2,h] T & T2 ≛ T.
+
+(* Diamond propery with restricted rt-transition for terms ******************)
+
+fact cnv_cpm_teqx_conf_lpr_atom_atom_aux (h) (G0) (L1) (L2) (I):
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛ T & ⦃G0,L2⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛ T.
+#h #G0 #L1 #L2 #I
+/2 width=5 by ex4_intro/
+qed-.
+
+fact cnv_cpm_teqx_conf_lpr_atom_ess_aux (h) (G0) (L1) (L2) (s):
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⋆s ➡[1,h] T & ⋆s ≛ T & ⦃G0,L2⦄ ⊢ ⋆(⫯[h]s) ➡[h] T & ⋆(⫯[h]s) ≛ T.
+#h #G0 #L1 #L2 #s
+/3 width=5 by teqx_sort, ex4_intro/
+qed-.
+
+fact cnv_cpm_teqx_conf_lpr_bind_bind_aux (h) (a) (p) (I) (G0) (L0) (V0) (T0):
+     (∀G,L,T. ⦃G0,L0,ⓑ{p,I}V0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_teqx_conf_lpr h a G L T) →
+     ⦃G0,L0⦄ ⊢ ⓑ{p,I}V0.T0 ![h,a] →
+     ∀n1,T1. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
+     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓑ{p,I}V0.T1 ➡[n2-n1,h] T & ⓑ{p,I}V0.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓑ{p,I}V0.T2 ➡[n1-n2,h] T & ⓑ{p,I}V0.T2 ≛ T.
+#h #a #p #I #G0 #L0 #V0 #T0 #IH #H0
+#n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
+#L1 #HL01 #L2 #HL02
+elim (cnv_inv_bind … H0) -H0 #_ #HT0
+elim (IH … H1T01 H2T01 … H1T02 H2T02 (L1.ⓑ{I}V0) … (L2.ⓑ{I}V0)) [|*: /2 width=1 by lpr_bind_refl_dx/ ]
+#T #H1T1 #H2T1 #H1T2 #H2T2 -L0 -T0
+/3 width=7 by cpm_bind, teqx_pair, ex4_intro/
+qed-.
+
+fact cnv_cpm_teqx_conf_lpr_appl_appl_aux (h) (a) (G0) (L0) (V0) (T0):
+     (∀G,L,T. ⦃G0,L0,ⓐV0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_teqx_conf_lpr h a G L T) →
+     ⦃G0,L0⦄ ⊢ ⓐV0.T0 ![h,a] →
+     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
+     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓐV0.T1 ➡[n2-n1,h] T & ⓐV0.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓐV0.T2 ➡[n1-n2,h] T & ⓐV0.T2 ≛ T.
+#h #a #G0 #L0 #V0 #T0 #IH #H0
+#n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
+#L1 #HL01 #L2 #HL02
+elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #_ #HT0 #_ #_ -n0 -p0 -X01 -X02
+elim (IH … H1T01 H2T01 … H1T02 H2T02 … HL01 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
+#T #H1T1 #H2T1 #H1T2 #H2T2 -L0 -T0
+/3 width=7 by cpm_appl, teqx_pair, ex4_intro/
+qed-.
+
+fact cnv_cpm_teqx_conf_lpr_cast_cast_aux (h) (a) (G0) (L0) (V0) (T0):
+     (∀G,L,T. ⦃G0,L0,ⓝV0.T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_teqx_conf_lpr h a G L T) →
+     ⦃G0,L0⦄ ⊢ ⓝV0.T0 ![h,a] →
+     ∀n1,V1. ⦃G0,L0⦄ ⊢ V0 ➡[n1,h] V1 → V0 ≛ V1 →
+     ∀n2,V2. ⦃G0,L0⦄ ⊢ V0 ➡[n2,h] V2 → V0 ≛ V2 →
+     ∀T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+     ∀T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
+     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓝV1.T1 ➡[n2-n1,h] T & ⓝV1.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓝV2.T2 ➡[n1-n2,h] T & ⓝV2.T2 ≛ T.
+#h #a #G0 #L0 #V0 #T0 #IH #H0
+#n1 #V1 #H1V01 #H2V01 #n2 #V2 #H1V02 #H2V02 #T1 #H1T01 #H2T01 #T2 #H1T02 #H2T02
+#L1 #HL01 #L2 #HL02
+elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #HT0 #_ #_ -X0
+elim (IH … H1V01 H2V01 … H1V02 H2V02 … HL01 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
+elim (IH … H1T01 H2T01 … H1T02 H2T02 … HL01 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
+#T #H1T1 #H2T1 #H1T2 #H2T2 #V #H1V1 #H2V1 #H1V2 #H2V2 -L0 -V0 -T0
+/3 width=7 by cpm_cast, teqx_pair, ex4_intro/
+qed-.
+
+fact cnv_cpm_teqx_conf_lpr_aux (h) (a) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_teqx_conf_lpr h a G L T) →
+     ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpm_teqx_conf_lpr h a G L T.
+#h #a #G0 #L0 #T0 #IH1 #G #L * [| * [| * ]]
+[ #I #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
+  elim (cpm_teqx_inv_atom_sn … H1X1 H2X1) -H1X1 -H2X1 *
+  elim (cpm_teqx_inv_atom_sn … H1X2 H2X2) -H1X2 -H2X2 *
+  [ #H21 #H22 #H11 #H12 destruct -a -L
+    <minus_O_n
+    /2 width=1 by cnv_cpm_teqx_conf_lpr_atom_atom_aux/
+  | #s2 #H21 #H22 #H23 #H11 #H12 destruct -a -L
+    <minus_O_n <minus_n_O
+    /2 width=1 by cnv_cpm_teqx_conf_lpr_atom_ess_aux/
+  | #H21 #H22 #s1 #H11 #H12 #H13 destruct -a -L
+    <minus_O_n <minus_n_O
+    @ex4_commute /2 width=1 by cnv_cpm_teqx_conf_lpr_atom_ess_aux/
+  | #s2 #H21 #H22 #H23 #s1 #H11 #H12 #H13 destruct -a -L
+    <minus_n_n
+    /2 width=1 by cnv_cpm_teqx_conf_lpr_atom_atom_aux/
+  ]
+| #p #I #V #T #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
+  elim (cpm_teqx_inv_bind_sn … HT … H1X1 H2X1) -H1X1 -H2X1
+  elim (cpm_teqx_inv_bind_sn … HT … H1X2 H2X2) -H1X2 -H2X2
+  #T2 #_ #_ #H1T2 #H2T2 #H21 #T1 #_ #_ #H1T1 #H2T1 #H11 destruct
+  @(cnv_cpm_teqx_conf_lpr_bind_bind_aux … IH1) -IH1 /1 width=1 by/
+| #V #T #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
+  elim (cpm_teqx_inv_appl_sn … HT … H1X1 H2X1) -H1X1 -H2X1
+  elim (cpm_teqx_inv_appl_sn … HT … H1X2 H2X2) -H1X2 -H2X2
+  #m2 #q2 #W2 #U2 #T2 #_ #_ #_ #_ #_ #H1T2 #H2T2 #H21 #m1 #q1 #W1 #U1 #T1 #_ #_ #_ #_ #_ #H1T1 #H2T1 #H11 destruct -m1 -m2 -q1 -q2 -W1 -W2 -U1 -U2
+  @(cnv_cpm_teqx_conf_lpr_appl_appl_aux … IH1) -IH1 /1 width=1 by/
+| #V #T #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
+  elim (cpm_teqx_inv_cast_sn … HT … H1X1 H2X1) -H1X1 -H2X1
+  elim (cpm_teqx_inv_cast_sn … HT … H1X2 H2X2) -H1X2 -H2X2
+  #U2 #V2 #T2 #_ #_ #_ #H1V2 #H2V2 #_ #H1T2 #H2T2 #H21 #U1 #V1 #T1 #_ #_ #_ #H1V1 #H2V1 #_ #H1T1 #H2T1 #H11 destruct -U1 -U2
+  @(cnv_cpm_teqx_conf_lpr_cast_cast_aux … IH1) -IH1 /1 width=1 by/
+]
+qed-.
+
+lemma cnv_cpm_teqx_conf_lpr (h) (a) (G0) (L0) (T0):
+      IH_cnv_cpm_teqx_conf_lpr h a G0 L0 T0.
+#h #a #G0 #L0 #T0
+@(fqup_wf_ind (Ⓣ) … G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH
+/3 width=17 by cnv_cpm_teqx_conf_lpr_aux/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_trans.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_trans.ma
new file mode 100644 (file)
index 0000000..e69ab2f
--- /dev/null
@@ -0,0 +1,97 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/dynamic/cnv_cpm_trans.ma".
+include "basic_2/dynamic/cnv_cpm_teqx.ma".
+
+(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
+
+definition IH_cnv_cpm_teqx_cpm_trans (h) (a): relation3 genv lenv term ≝
+           λG,L,T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
+           ∀n1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → T1 ≛ T →
+           ∀n2,T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 →
+           ∃∃T0. ⦃G,L⦄ ⊢ T1 ➡[n2,h] T0 & ⦃G,L⦄ ⊢ T0 ➡[n1,h] T2 & T0 ≛ T2.
+
+(* Transitive properties restricted rt-transition for terms *****************)
+
+fact cnv_cpm_teqx_cpm_trans_sub (h) (a) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ ⬂+ ⦃G,L,T⦄ → IH_cnv_cpm_teqx_cpm_trans h a G L T) →
+     ∀G,L,T1. G0 = G → L0 = L → T0 = T1 → IH_cnv_cpm_teqx_cpm_trans h a G L T1.
+#h #a #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
+[ #I #_ #_ #_ #_ #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct -G0 -L0 -T0
+  elim (cpm_teqx_inv_atom_sn … H1X H2X) -H1X -H2X *
+  [ #H1 #H2 destruct /2 width=4 by ex3_intro/
+  | #s #H1 #H2 #H3 destruct
+    elim (cpm_inv_sort1 … HX2) -HX2 #H #Hn2 destruct >iter_n_Sm
+    /3 width=4 by cpm_sort, teqx_sort, ex3_intro/
+  ]
+| #p #I #V1 #T1 #HG #HL #HT #H0 #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct
+  elim (cpm_teqx_inv_bind_sn … H0 … H1X H2X) -H0 -H1X -H2X #T #_ #H0T1 #H1T1 #H2T1 #H destruct
+  elim (cpm_inv_bind1 … HX2) -HX2 *
+  [ #V2 #T2 #HV12 #HT2 #H destruct
+    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 [| // ] #T0 #HT10 #H1T02 #H2T02
+    lapply (IH2 … H0T1 … HT10 (L.ⓑ{I}V1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
+    lapply (cpm_teqx_free … HT0 … H1T02 H2T02 G (L.ⓑ{I}V2)) -H1T02 #H1T02
+    /3 width=6 by cpm_bind, teqx_pair, ex3_intro/
+  | #T2 #HT2 #HTX2 #H1 #H2 destruct -IH2
+    elim (teqx_inv_lifts_dx … H2T1 … HT2) -H2T1 #XT #HXT1 #H2XT2
+    lapply (cpm_inv_lifts_bi … H1T1 (Ⓣ) … HXT1 … HT2) -T [3:|*: /3 width=2 by drops_refl, drops_drop/ ] #H1XT2
+    lapply (cnv_inv_lifts … H0T1 (Ⓣ) … HXT1) -H0T1 [3:|*: /3 width=2 by drops_refl, drops_drop/ ] #H0XT2
+    elim (IH1 … H0XT2 … H1XT2 H2XT2 … HTX2) -T2 -IH1 -H0XT2 [| /2 width=1 by fqup_zeta/ ] #T2 #HXT2 #H1TX2 #H2XT2
+    /3 width=4 by cpm_zeta, ex3_intro/
+  ]
+| #V1 #XT1 #HG #HL #HT #H0 #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct
+  elim (cpm_teqx_inv_appl_sn … H0 … H1X H2X) -H0 -H1X -H2X #m #q #W1 #U1 #XT #_ #_ #_ #_ #H0T1 #H1T1 #H2T1 #H destruct -m -q -W1 -U1
+  elim (cpm_inv_appl1 … HX2) -HX2 *
+  [ #V2 #T2 #HV12 #HT2 #H destruct -IH2
+    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -XT -IH1 -H0T1 [| // ] #T0 #HT10 #H1T02 #H2T02
+    /3 width=6 by cpm_appl, teqx_pair, ex3_intro/
+  | #p #V2 #W1 #W2 #T #T2 #HV12 #HW12 #HT2 #H1 #H2 destruct
+    elim (cpm_teqx_inv_bind_dx … H0T1 … H1T1 H2T1) -H0T1 -H1T1 -H2T1 #T1 #_ #H0T1 #H1T1 #H2T1 #H destruct
+    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 [| // ] #T0 #HT10 #H1T02 #H2T02
+    lapply (IH2 … H0T1 … HT10 (L.ⓛW1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
+    lapply (cpm_teqx_free … HT0 … H1T02 H2T02 G (L.ⓓⓝW2.V2)) -H1T02 #H1T02
+    /3 width=6 by cpm_beta, cpm_bind, teqx_pair, ex3_intro/
+  | #p #V2 #V0 #W1 #W2 #T #T2 #HV12 #HV20 #HW12 #HT2 #H1 #H2 destruct
+    elim (cpm_teqx_inv_bind_dx … H0T1 … H1T1 H2T1) -H0T1 -H1T1 -H2T1 #T1 #_ #H0T1 #H1T1 #H2T1 #H destruct 
+    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 [| // ] #T0 #HT10 #H1T02 #H2T02
+    lapply (IH2 … H0T1 … HT10 (L.ⓓW1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
+    lapply (cpm_teqx_free … HT0 … H1T02 H2T02 G (L.ⓓW2)) -H1T02
+    /4 width=8 by cpm_theta, cpm_appl, cpm_bind, teqx_pair, ex3_intro/
+  ]
+| #U1 #T1 #HG #HL #HT #H0 #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct -IH2
+  elim (cpm_teqx_inv_cast_sn … H0 … H1X H2X) -H0 -H1X -H2X #U0 #U #T #_ #_ #H0U1 #H1U1 #H2U1 #H0T1 #H1T1 #H2T1 #H destruct -U0
+  elim (cpm_inv_cast1 … HX2) -HX2 [ * || * ]
+  [ #U2 #T2 #HU2 #HT2 #H destruct
+    elim (IH1 … H0U1 … H1U1 H2U1 … HU2) -U -H0U1 [| // ] #U0 #HU10 #H1U02 #H2U02
+    elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 -H0T1 [| // ] #T0 #HT10 #H1T02 #H2T02
+    /3 width=6 by cpm_cast, teqx_pair, ex3_intro/
+  | #HTX2 -U -H0U1
+    elim (IH1 … H0T1 … H1T1 H2T1 … HTX2) -T -IH1 -H0T1 [| // ] #T0 #HT10 #H1T02 #H2T02
+    /3 width=4 by cpm_eps, ex3_intro/
+  | #m2 #HUX2 #H destruct -T -H0T1
+    elim (IH1 … H0U1 … H1U1 H2U1 … HUX2) -U -H0U1 [| // ] #U0 #HU10 #H1U02 #H2U02
+    /3 width=4 by cpm_ee, ex3_intro/
+  ]
+]
+qed-.
+
+fact cnv_cpm_teqx_cpm_trans_aux (h) (a) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
+     IH_cnv_cpm_teqx_cpm_trans h a G0 L0 T0.
+#h #a #G0 #L0 #T0
+@(fqup_wf_ind (Ⓣ) … G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH #IH0
+/5 width=10 by cnv_cpm_teqx_cpm_trans_sub, fqup_fpbg_trans/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpme.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpme.ma
deleted file mode 100644 (file)
index a3aa687..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_computation/cprs_cnr.ma".
-include "basic_2/rt_computation/cpre.ma".
-include "basic_2/dynamic/cnv_preserve.ma".
-
-(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
-
-(* Properties with t-bound evaluation on terms ******************************)
-
-lemma cnv_cpme_trans (h) (a) (n) (G) (L):
-      ∀T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
-      ∀T2. ⦃G,L⦄ ⊢ T1 ➡*[h,n] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T2 ![h,a].
-#h #a #n #G #L #T1 #HT1 #T2 * #HT12 #_
-/2 width=4 by cnv_cpms_trans/
-qed-.
-
-lemma cnv_cpme_cpms_conf (h) (a) (n) (G) (L):
-      ∀T. ⦃G,L⦄ ⊢ T ![h,a] → ∀T1. ⦃G,L⦄ ⊢ T ➡*[n,h] T1 →
-      ∀T2. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[h] 𝐍⦃T2⦄.
-#h #a #n #G #L #T0 #HT0 #T1 #HT01 #T2 * #HT02 #HT2
-elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
-lapply (cprs_inv_cnr_sn … HT20 HT2) -HT20 #H destruct
-/2 width=1 by cpme_intro/
-qed-.
-
-(* Main properties with evaluation for t-bound rt-transition on terms *****)
-
-theorem cnv_cpme_mono (h) (a) (n) (G) (L):
-        ∀T. ⦃G,L⦄ ⊢ T ![h,a] → ∀T1. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T1⦄ →
-        ∀T2. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T2⦄ → T1 = T2.
-#h #a #n #G #L #T0 #HT0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2
-elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
-/3 width=7 by cprs_inv_cnr_sn, canc_dx_eq/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmre.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmre.ma
new file mode 100644 (file)
index 0000000..709b472
--- /dev/null
@@ -0,0 +1,47 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_computation/cprs_cnr.ma".
+include "basic_2/rt_computation/cprre.ma".
+include "basic_2/dynamic/cnv_preserve.ma".
+
+(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
+
+(* Properties with t-bound evaluation on terms ******************************)
+
+lemma cnv_cpmre_trans (h) (a) (n) (G) (L):
+      ∀T1. ⦃G,L⦄ ⊢ T1 ![h,a] →
+      ∀T2. ⦃G,L⦄ ⊢ T1 ➡*[h,n] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T2 ![h,a].
+#h #a #n #G #L #T1 #HT1 #T2 * #HT12 #_
+/2 width=4 by cnv_cpms_trans/
+qed-.
+
+lemma cnv_cpmre_cpms_conf (h) (a) (n) (G) (L):
+      ∀T. ⦃G,L⦄ ⊢ T ![h,a] → ∀T1. ⦃G,L⦄ ⊢ T ➡*[n,h] T1 →
+      ∀T2. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[h] 𝐍⦃T2⦄.
+#h #a #n #G #L #T0 #HT0 #T1 #HT01 #T2 * #HT02 #HT2
+elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
+lapply (cprs_inv_cnr_sn … HT20 HT2) -HT20 #H destruct
+/2 width=1 by cpmre_intro/
+qed-.
+
+(* Main properties with evaluation for t-bound rt-transition on terms *****)
+
+theorem cnv_cpmre_mono (h) (a) (n) (G) (L):
+        ∀T. ⦃G,L⦄ ⊢ T ![h,a] → ∀T1. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T1⦄ →
+        ∀T2. ⦃G,L⦄ ⊢ T ➡*[h,n] 𝐍⦃T2⦄ → T1 = T2.
+#h #a #n #G #L #T0 #HT0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2
+elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
+/3 width=7 by cprs_inv_cnr_sn, canc_dx_eq/
+qed-.
index 97c7369027cc4793702e6c7812747e6e5843f9d1..f5c38f1981abbe4aba87d822d81c9ce56501a284 100644 (file)
 (**************************************************************************)
 
 include "basic_2/dynamic/cnv_cpm_conf.ma".
-include "basic_2/dynamic/cnv_cpms_tdeq_conf.ma".
+include "basic_2/dynamic/cnv_cpms_teqx_conf.ma".
 
 (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
 
 (* Sub confluence propery with t-bound rt-computation for terms *************)
 
-fact cnv_cpms_conf_lpr_tdeq_tdeq_aux (h) (a) (G0) (L0) (T0):
+fact cnv_cpms_conf_lpr_teqx_teqx_aux (h) (a) (G0) (L0) (T0):
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![h,a] →
@@ -30,11 +30,11 @@ fact cnv_cpms_conf_lpr_tdeq_tdeq_aux (h) (a) (G0) (L0) (T0):
 #h #a #G #L0 #T0 #IH2 #IH1 #HT0
 #n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
-elim (cnv_cpms_tdeq_conf_lpr_aux … IH2 IH1 … H1T01 … H1T02 … HL01 … HL02) -IH2 -IH1 -H1T01 -H1T02 -HL01 -HL02
+elim (cnv_cpms_teqx_conf_lpr_aux … IH2 IH1 … H1T01 … H1T02 … HL01 … HL02) -IH2 -IH1 -H1T01 -H1T02 -HL01 -HL02
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpms_conf_lpr_refl_tdneq_sub (h) (a) (G0) (L0) (T0) (m21) (m22):
+fact cnv_cpms_conf_lpr_refl_tneqx_sub (h) (a) (G0) (L0) (T0) (m21) (m22):
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![h,a] →
@@ -56,7 +56,7 @@ lapply (cpms_trans … HTY2 … HY2) -Y2 #HT2Y
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpms_conf_lpr_step_tdneq_sub (h) (a) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
+fact cnv_cpms_conf_lpr_step_tneqx_sub (h) (a) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![h,a] →
@@ -82,11 +82,11 @@ cut (⦃G0, L0, T0⦄ >[h] ⦃G0, L0, X2⦄) [ /4 width=5 by cpms_fwd_fpbs, cpm_
 lapply (fpbg_fpbs_trans ?? G0 ? L0 ? Z0 ? … H1fpbg) [ /2 width=2 by cpms_fwd_fpbs/ ] #H2fpbg
 lapply (cnv_cpms_trans_lpr_sub … IH2 … HXZ20 … L0 ?) // #HZ0
 elim (IH1 … HXT2 … HXZ20 … L2 … L0) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ] -HXT2 -HXZ20 #Z2 #HTZ2 #HZ02
-elim (tdeq_dec X1 Z0) #H2XZ
+elim (teqx_dec X1 Z0) #H2XZ
 [ -IH
-  elim (cnv_cpms_conf_lpr_tdeq_tdeq_aux … HX1 … H1XT1 H2XT1 … HXZ10 H2XZ … L1 … L0) [2,3: // |4,5: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ]
+  elim (cnv_cpms_conf_lpr_teqx_teqx_aux … HX1 … H1XT1 H2XT1 … HXZ10 H2XZ … L1 … L0) [2,3: // |4,5: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ]
 | -H1XT1 -H2XT1
-  elim (cpms_tdneq_fwd_step_sn_aux … HXZ10 HX1 H2XZ) [|*: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ]
+  elim (cpms_tneqx_fwd_step_sn_aux … HXZ10 HX1 H2XZ) [|*: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ]
   -HXZ10 -H2XZ #n1 #n2 #X0 #H1X10 #H2X10 #HXZ0 #Hn
   elim (IH … H1X10 H2X10 … HXZ0 … L1 … L0) [2,3: // |4,5: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ]
   >Hn -n1 -n2 -X0 -IH
@@ -98,7 +98,7 @@ lapply (cpms_trans … HTZ2 … HZ02) -Z2 <arith_l4 #HT2Z
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpms_conf_lpr_tdeq_tdneq_aux (h) (a) (G0) (L0) (T0) (n1) (m21) (m22):
+fact cnv_cpms_conf_lpr_teqx_tneqx_aux (h) (a) (G0) (L0) (T0) (n1) (m21) (m22):
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![h,a] →
@@ -110,18 +110,18 @@ fact cnv_cpms_conf_lpr_tdeq_tdneq_aux (h) (a) (G0) (L0) (T0) (n1) (m21) (m22):
 #T1 #H1T01 #H2T01
 generalize in match m22; generalize in match m21; -m21 -m22
 generalize in match IH1; generalize in match IH2;
-@(cpms_tdeq_ind_sn … H1T01 HT0 H2T01 IH1 IH2) -n1 -T0
+@(cpms_teqx_ind_sn … H1T01 HT0 H2T01 IH1 IH2) -n1 -T0
 [ #HT1 #IH2 #IH1 #m21 #m22
   #X2 #HX02 #HnX02 #T2 #HXT2 #L1 #HL01 #L2 #HL02
   <minus_O_n <minus_n_O
-  @(cnv_cpms_conf_lpr_refl_tdneq_sub … IH2 IH1) -IH2 -IH1 /2 width=4 by/
+  @(cnv_cpms_conf_lpr_refl_tneqx_sub … IH2 IH1) -IH2 -IH1 /2 width=4 by/
 | #m11 #m12 #T0 #X1 #H1X01 #HT0 #H2X01 #H1XT1 #_ #H2XT1 #IH #IH2 #IH1 #m21 #m22
   #X2 #HX02 #HnX02 #T2 #HXT2 #L1 #HL01 #L2 #HL02
-  @(cnv_cpms_conf_lpr_step_tdneq_sub … IH2 IH1 … IH) -IH2 -IH1 -IH /2 width=4 by/
+  @(cnv_cpms_conf_lpr_step_tneqx_sub … IH2 IH1 … IH) -IH2 -IH1 -IH /2 width=4 by/
 ]
 qed-.
 
-fact cnv_cpms_conf_lpr_tdneq_tdneq_aux (h) (a) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
+fact cnv_cpms_conf_lpr_tneqx_tneqx_aux (h) (a) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![h,a] →
@@ -152,18 +152,18 @@ fact cnv_cpms_conf_lpr_aux (h) (a) (G0) (L0) (T0):
      ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpms_conf_lpr h a G L T.
 #h #a #G #L #T #IH2 #IH1 #G0 #L0 #T0 #HG #HL #HT
 #HT0 #n1 #T1 #HT01 #n2 #T2 #HT02 #L1 #HL01 #L2 #HL02 destruct
-elim (tdeq_dec T0 T1) #H2T01
-elim (tdeq_dec T0 T2) #H2T02
-[ @(cnv_cpms_conf_lpr_tdeq_tdeq_aux … IH2 IH1) -IH2 -IH1 /2 width=1 by/
-| elim (cpms_tdneq_fwd_step_sn_aux … HT02 HT0 H2T02 IH1 IH2) -HT02 -H2T02
+elim (teqx_dec T0 T1) #H2T01
+elim (teqx_dec T0 T2) #H2T02
+[ @(cnv_cpms_conf_lpr_teqx_teqx_aux … IH2 IH1) -IH2 -IH1 /2 width=1 by/
+| elim (cpms_tneqx_fwd_step_sn_aux … HT02 HT0 H2T02 IH1 IH2) -HT02 -H2T02
   #m21 #m22 #X2 #HX02 #HnX02 #HXT2 #H2 destruct
-  @(cnv_cpms_conf_lpr_tdeq_tdneq_aux … IH2 IH1) -IH2 -IH1 /2 width=4 by/
-| elim (cpms_tdneq_fwd_step_sn_aux … HT01 HT0 H2T01 IH1 IH2) -HT01 -H2T01
+  @(cnv_cpms_conf_lpr_teqx_tneqx_aux … IH2 IH1) -IH2 -IH1 /2 width=4 by/
+| elim (cpms_tneqx_fwd_step_sn_aux … HT01 HT0 H2T01 IH1 IH2) -HT01 -H2T01
   #m11 #m12 #X1 #HX01 #HnX01 #HXT1 #H1 destruct
-  @ex2_commute @(cnv_cpms_conf_lpr_tdeq_tdneq_aux … IH2 IH1) -IH2 -IH1 /2 width=4 by/
-| elim (cpms_tdneq_fwd_step_sn_aux … HT01 HT0 H2T01 IH1 IH2) -HT01 -H2T01
-  elim (cpms_tdneq_fwd_step_sn_aux … HT02 HT0 H2T02 IH1 IH2) -HT02 -H2T02
+  @ex2_commute @(cnv_cpms_conf_lpr_teqx_tneqx_aux … IH2 IH1) -IH2 -IH1 /2 width=4 by/
+| elim (cpms_tneqx_fwd_step_sn_aux … HT01 HT0 H2T01 IH1 IH2) -HT01 -H2T01
+  elim (cpms_tneqx_fwd_step_sn_aux … HT02 HT0 H2T02 IH1 IH2) -HT02 -H2T02
   #m21 #m22 #X2 #HX02 #HnX02 #HXT2 #H2 #m11 #m12 #X1 #HX01 #HnX01 #HXT1 #H1 destruct
-  @(cnv_cpms_conf_lpr_tdneq_tdneq_aux … IH2 IH1) -IH2 -IH1 /2 width=4 by/
+  @(cnv_cpms_conf_lpr_tneqx_tneqx_aux … IH2 IH1) -IH2 -IH1 /2 width=4 by/
 ]
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq.ma
deleted file mode 100644 (file)
index b0c9d9e..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/dynamic/cnv_cpm_tdeq_trans.ma".
-
-(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
-
-(* Properties with restricted rt-computation for terms **********************)
-
-fact cpms_tdneq_fwd_step_sn_aux (h) (a) (n) (G) (L) (T1):
-     ∀T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G,L⦄ ⊢ T1 ![h,a] → (T1 ≛ T2 → ⊥) →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
-     ∃∃n1,n2,T0. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T0 & T1 ≛ T0 → ⊥ & ⦃G,L⦄ ⊢ T0 ➡*[n2,h] T2 & n1+n2 = n.
-#h #a #n #G #L #T1 #T2 #H
-@(cpms_ind_sn … H) -n -T1
-[ #_ #H2T2 elim H2T2 -H2T2 //
-| #n1 #n2 #T1 #T #H1T1 #H1T2 #IH #H0T1 #H2T12 #IH2 #IH1
-  elim (tdeq_dec T1 T) #H2T1
-  [ elim (tdeq_dec T T2) #H2T2
-    [ -IH -IH2 -IH1 -H0T1 /4 width=7 by tdeq_trans, ex4_3_intro/
-    | lapply (cnv_cpm_trans_lpr_aux … IH2 IH1 … H1T1 L ?) [6:|*: // ] -H1T2 -H2T12 #H0T
-      elim (IH H0T H2T2) [|*: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ] -IH -IH2 -H0T -H2T2 (**)
-      #m1 #m2 #T0 #H1T0 #H2T0 #H1T02 #H destruct
-      elim (cnv_cpm_tdeq_cpm_trans_aux … IH1 … H0T1 … H1T1 H2T1 … H1T0) -IH1 -H0T1 -H1T1 -H1T0
-      #T3 #H1T13 #H1T30 #H2T30
-      @(ex4_3_intro … H1T13) /4 width=3 by cpms_step_sn, tdeq_canc_sn/ (**) (* explicit constructor *)
-    ]
-  | -IH -IH2 -IH1 -H2T12 /3 width=7 by tdeq_trans, ex4_3_intro/
-  ]
-]
-qed-.
-
-fact cpms_tdeq_ind_sn (h) (a) (G) (L) (T2) (Q:relation2 …):
-     (⦃G,L⦄ ⊢ T2 ![h,a] → Q 0 T2) →
-     (∀n1,n2,T1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → ⦃G,L⦄ ⊢ T1 ![h,a] → T1 ≛ T → ⦃G,L⦄ ⊢ T ➡*[n2,h] T2 → ⦃G,L⦄ ⊢ T ![h,a] → T ≛ T2 → Q n2 T → Q (n1+n2) T1) →
-     ∀n,T1. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G,L⦄ ⊢ T1 ![h,a] → T1 ≛ T2 →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) → 
-     Q n T1.
-#h #a #G #L #T2 #Q #IB1 #IB2 #n #T1 #H
-@(cpms_ind_sn … H) -n -T1
-[ -IB2 #H0T2 #_ #_ #_ /2 width=1 by/
-| #n1 #n2 #T1 #T #H1T1 #H1T2 #IH #H0T1 #H2T12 #IH2 #IH1 -IB1
-  elim (tdeq_dec T1 T) #H2T1
-  [ lapply (cnv_cpm_trans_lpr_aux … IH2 IH1 … H1T1 L ?) [6:|*: // ] #H0T
-    lapply (tdeq_canc_sn … H2T1 … H2T12) -H2T12 #H2T2
-    /6 width=7 by cpm_fpbq, fpbq_fpbg_trans/ (**)
-  | -IB2 -IH -IH2 -IH1
-    elim (cnv_fpbg_refl_false … H0T1) -a -Q
-    /3 width=8 by cpm_tdneq_cpm_cpms_tdeq_sym_fwd_fpbg/
-  ]
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq_conf.ma
deleted file mode 100644 (file)
index 20759dd..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/dynamic/cnv_cpm_tdeq_conf.ma".
-include "basic_2/dynamic/cnv_cpms_tdeq.ma".
-
-(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
-
-(* Sub confluence propery with restricted rt-transition for terms ***********)
-
-fact cnv_cpms_tdeq_strip_lpr_aux (h) (a) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
-     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![h,a] → T0 ≛ T1 →
-     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
-#h #a #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
-@(cpms_tdeq_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
-[ #H0T1 #n2 #T2 #H1T12 #H2T12 #L1 #HL01 #L2 #HL02
-  <minus_O_n <minus_n_O
-  elim (cnv_cpm_tdeq_conf_lpr … H0T1 0 T1 … H1T12 H2T12 … HL01 … HL02) // -L0 -H2T12
-  <minus_O_n <minus_n_O #T #H1T1 #H2T1 #H1T2 #H2T2
-  /3 width=5 by cpm_cpms, ex4_intro/
-| #m1 #m2 #T0 #T3 #H1T03 #H0T0 #H2T03 #_ #_ #_ #IH
-  #n2 #T2 #H1T02 #H2T02 #L1 #HL01 #L2 #HL02
-  elim (cnv_cpm_tdeq_conf_lpr … H0T0 … H1T03 H2T03 … H1T02 H2T02 … L0 … HL02) -T0 //
-  #T0 #H1T30 #H2T30 #H1T20 #H2T20
-  elim (IH … H1T30 H2T30 … HL01 … HL02) -L0 -T3
-  #T3 #H1T13 #H2T13 #H1T03 #H2T03
-  <minus_plus >arith_l3
-  /3 width=7 by cpms_step_sn, tdeq_trans, ex4_intro/
-]
-qed-.
-
-fact cnv_cpms_tdeq_conf_lpr_aux (h) (a) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
-     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![h,a] → T0 ≛ T1 →
-     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡*[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[n2-n1,h] T & T1 ≛ T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
-#h #a #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
-generalize in match IH1; generalize in match IH2;
-@(cpms_tdeq_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
-[ #H0T1 #IH2 #IH1 #n2 #T2 #H1T12 #H2T12 #L1 #HL01 #L2 #HL02
-  <minus_O_n <minus_n_O
-  elim (cnv_cpms_tdeq_strip_lpr_aux … IH2 IH1 … H1T12 H0T1 H2T12 0 T1 … HL02 … HL01) // -L0 -H2T12
-  <minus_O_n <minus_n_O #T #H1T2 #H2T2 #H1T1 #H2T1
-  /3 width=5 by cpm_cpms, ex4_intro/
-| #m1 #m2 #T0 #T3 #H1T03 #H0T0 #H2T03 #_ #_ #_ #IH #IH2 #IH1
-  #n2 #T2 #H1T02 #H2T02 #L1 #HL01 #L2 #HL02
-  elim (cnv_cpms_tdeq_strip_lpr_aux … IH2 IH1 … H1T02 H0T0 H2T02 … H1T03 H2T03 … HL02 L0) -H0T0 -H2T03 //
-  #T4 #H1T24 #H2T24 #H1T34 #H2T34
-  elim (IH … H1T34 H2T34 … HL01 … HL02) [|*: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ] -L0 -T0 -T3 (**)
-  #T3 #H1T13 #H2T13 #H1T43 #H2T43
-  <minus_plus >arith_l3
-  /3 width=7 by cpms_step_sn, tdeq_trans, ex4_intro/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx.ma
new file mode 100644 (file)
index 0000000..7654a5e
--- /dev/null
@@ -0,0 +1,65 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/dynamic/cnv_cpm_teqx_trans.ma".
+
+(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
+
+(* Properties with restricted rt-computation for terms **********************)
+
+fact cpms_tneqx_fwd_step_sn_aux (h) (a) (n) (G) (L) (T1):
+     ∀T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G,L⦄ ⊢ T1 ![h,a] → (T1 ≛ T2 → ⊥) →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
+     ∃∃n1,n2,T0. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T0 & T1 ≛ T0 → ⊥ & ⦃G,L⦄ ⊢ T0 ➡*[n2,h] T2 & n1+n2 = n.
+#h #a #n #G #L #T1 #T2 #H
+@(cpms_ind_sn … H) -n -T1
+[ #_ #H2T2 elim H2T2 -H2T2 //
+| #n1 #n2 #T1 #T #H1T1 #H1T2 #IH #H0T1 #H2T12 #IH2 #IH1
+  elim (teqx_dec T1 T) #H2T1
+  [ elim (teqx_dec T T2) #H2T2
+    [ -IH -IH2 -IH1 -H0T1 /4 width=7 by teqx_trans, ex4_3_intro/
+    | lapply (cnv_cpm_trans_lpr_aux … IH2 IH1 … H1T1 L ?) [6:|*: // ] -H1T2 -H2T12 #H0T
+      elim (IH H0T H2T2) [|*: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ] -IH -IH2 -H0T -H2T2 (**)
+      #m1 #m2 #T0 #H1T0 #H2T0 #H1T02 #H destruct
+      elim (cnv_cpm_teqx_cpm_trans_aux … IH1 … H0T1 … H1T1 H2T1 … H1T0) -IH1 -H0T1 -H1T1 -H1T0
+      #T3 #H1T13 #H1T30 #H2T30
+      @(ex4_3_intro … H1T13) /4 width=3 by cpms_step_sn, teqx_canc_sn/ (**) (* explicit constructor *)
+    ]
+  | -IH -IH2 -IH1 -H2T12 /3 width=7 by teqx_trans, ex4_3_intro/
+  ]
+]
+qed-.
+
+fact cpms_teqx_ind_sn (h) (a) (G) (L) (T2) (Q:relation2 …):
+     (⦃G,L⦄ ⊢ T2 ![h,a] → Q 0 T2) →
+     (∀n1,n2,T1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → ⦃G,L⦄ ⊢ T1 ![h,a] → T1 ≛ T → ⦃G,L⦄ ⊢ T ➡*[n2,h] T2 → ⦃G,L⦄ ⊢ T ![h,a] → T ≛ T2 → Q n2 T → Q (n1+n2) T1) →
+     ∀n,T1. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G,L⦄ ⊢ T1 ![h,a] → T1 ≛ T2 →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) → 
+     Q n T1.
+#h #a #G #L #T2 #Q #IB1 #IB2 #n #T1 #H
+@(cpms_ind_sn … H) -n -T1
+[ -IB2 #H0T2 #_ #_ #_ /2 width=1 by/
+| #n1 #n2 #T1 #T #H1T1 #H1T2 #IH #H0T1 #H2T12 #IH2 #IH1 -IB1
+  elim (teqx_dec T1 T) #H2T1
+  [ lapply (cnv_cpm_trans_lpr_aux … IH2 IH1 … H1T1 L ?) [6:|*: // ] #H0T
+    lapply (teqx_canc_sn … H2T1 … H2T12) -H2T12 #H2T2
+    /6 width=7 by cpm_fpbq, fpbq_fpbg_trans/ (**)
+  | -IB2 -IH -IH2 -IH1
+    elim (cnv_fpbg_refl_false … H0T1) -a -Q
+    /3 width=8 by cpm_tneqx_cpm_cpms_teqx_sym_fwd_fpbg/
+  ]
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx_conf.ma
new file mode 100644 (file)
index 0000000..f0e8dff
--- /dev/null
@@ -0,0 +1,71 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/dynamic/cnv_cpm_teqx_conf.ma".
+include "basic_2/dynamic/cnv_cpms_teqx.ma".
+
+(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
+
+(* Sub confluence propery with restricted rt-transition for terms ***********)
+
+fact cnv_cpms_teqx_strip_lpr_aux (h) (a) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
+     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![h,a] → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
+     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
+     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
+#h #a #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
+@(cpms_teqx_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
+[ #H0T1 #n2 #T2 #H1T12 #H2T12 #L1 #HL01 #L2 #HL02
+  <minus_O_n <minus_n_O
+  elim (cnv_cpm_teqx_conf_lpr … H0T1 0 T1 … H1T12 H2T12 … HL01 … HL02) // -L0 -H2T12
+  <minus_O_n <minus_n_O #T #H1T1 #H2T1 #H1T2 #H2T2
+  /3 width=5 by cpm_cpms, ex4_intro/
+| #m1 #m2 #T0 #T3 #H1T03 #H0T0 #H2T03 #_ #_ #_ #IH
+  #n2 #T2 #H1T02 #H2T02 #L1 #HL01 #L2 #HL02
+  elim (cnv_cpm_teqx_conf_lpr … H0T0 … H1T03 H2T03 … H1T02 H2T02 … L0 … HL02) -T0 //
+  #T0 #H1T30 #H2T30 #H1T20 #H2T20
+  elim (IH … H1T30 H2T30 … HL01 … HL02) -L0 -T3
+  #T3 #H1T13 #H2T13 #H1T03 #H2T03
+  <minus_plus >arith_l3
+  /3 width=7 by cpms_step_sn, teqx_trans, ex4_intro/
+]
+qed-.
+
+fact cnv_cpms_teqx_conf_lpr_aux (h) (a) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr h a G L T) →
+     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![h,a] → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡*[n2,h] T2 → T0 ≛ T2 →
+     ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
+     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[n2-n1,h] T & T1 ≛ T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
+#h #a #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
+generalize in match IH1; generalize in match IH2;
+@(cpms_teqx_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
+[ #H0T1 #IH2 #IH1 #n2 #T2 #H1T12 #H2T12 #L1 #HL01 #L2 #HL02
+  <minus_O_n <minus_n_O
+  elim (cnv_cpms_teqx_strip_lpr_aux … IH2 IH1 … H1T12 H0T1 H2T12 0 T1 … HL02 … HL01) // -L0 -H2T12
+  <minus_O_n <minus_n_O #T #H1T2 #H2T2 #H1T1 #H2T1
+  /3 width=5 by cpm_cpms, ex4_intro/
+| #m1 #m2 #T0 #T3 #H1T03 #H0T0 #H2T03 #_ #_ #_ #IH #IH2 #IH1
+  #n2 #T2 #H1T02 #H2T02 #L1 #HL01 #L2 #HL02
+  elim (cnv_cpms_teqx_strip_lpr_aux … IH2 IH1 … H1T02 H0T0 H2T02 … H1T03 H2T03 … HL02 L0) -H0T0 -H2T03 //
+  #T4 #H1T24 #H2T24 #H1T34 #H2T34
+  elim (IH … H1T34 H2T34 … HL01 … HL02) [|*: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ] -L0 -T0 -T3 (**)
+  #T3 #H1T13 #H2T13 #H1T43 #H2T43
+  <minus_plus >arith_l3
+  /3 width=7 by cpms_step_sn, teqx_trans, ex4_intro/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmuwe_cpme.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmuwe_cpme.ma
deleted file mode 100644 (file)
index 801a56a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_computation/cpme_aaa.ma".
-include "basic_2/rt_computation/cnuw_cnuw.ma".
-include "basic_2/rt_computation/cpmuwe.ma".
-include "basic_2/dynamic/cnv_cpme.ma".
-
-(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
-
-(* Advanced Properties with t-unbound whd evaluation on terms ***************)
-
-lemma cnv_R_cpmuwe_dec (h) (a) (G) (L):
-      ∀T. ⦃G,L⦄ ⊢ T ![h,a] → ∀n. Decidable (R_cpmuwe h G L T n).
-#h #a #G #L #T1 #HT1 #n
-elim (cnv_fwd_aaa … HT1) #A #HA
-elim (cpme_total_aaa h n … HA) -HA #T2 #HT12
-elim (cnuw_dec h G L T2) #HnT1
-[ /5 width=3 by cpme_fwd_cpms, cpmuwe_intro, ex_intro, or_introl/
-| @or_intror * #T3 * #HT13 #HT3
-  lapply (cnv_cpme_cpms_conf … HT1 … HT13 … HT12) -a -T1 #HT32
-  /4 width=9 by cpme_fwd_cpms, cnuw_cpms_trans/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmuwe_cpmre.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmuwe_cpmre.ma
new file mode 100644 (file)
index 0000000..701746c
--- /dev/null
@@ -0,0 +1,35 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_computation/cpmre_aaa.ma".
+include "basic_2/rt_computation/cnuw_cnuw.ma".
+include "basic_2/rt_computation/cpmuwe.ma".
+include "basic_2/dynamic/cnv_cpmre.ma".
+
+(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
+
+(* Advanced Properties with t-unbound whd evaluation on terms ***************)
+
+lemma cnv_R_cpmuwe_dec (h) (a) (G) (L):
+      ∀T. ⦃G,L⦄ ⊢ T ![h,a] → ∀n. Decidable (R_cpmuwe h G L T n).
+#h #a #G #L #T1 #HT1 #n
+elim (cnv_fwd_aaa … HT1) #A #HA
+elim (cpmre_total_aaa h n … HA) -HA #T2 #HT12
+elim (cnuw_dec h G L T2) #HnT1
+[ /5 width=3 by cpmre_fwd_cpms, cpmuwe_intro, ex_intro, or_introl/
+| @or_intror * #T3 * #HT13 #HT3
+  lapply (cnv_cpmre_cpms_conf … HT1 … HT13 … HT12) -a -T1 #HT32
+  /4 width=9 by cpmre_fwd_cpms, cnuw_cpms_trans/
+]
+qed-.
index d87201dad1b18afbaa0b2d30b5e04f91a880a177..f0557da9286d4530639fbe73f91c1d07c74dc6a6 100644 (file)
@@ -15,7 +15,7 @@
 include "basic_2/rt_computation/cpmuwe_cpmuwe.ma".
 include "basic_2/rt_equivalence/cpes_cpes.ma".
 include "basic_2/dynamic/cnv_cpmuwe.ma". (**) (* should be included by the next *)
-include "basic_2/dynamic/cnv_cpmuwe_cpme.ma".
+include "basic_2/dynamic/cnv_cpmuwe_cpmre.ma".
 include "basic_2/dynamic/cnv_cpes.ma".
 include "basic_2/dynamic/cnv_preserve_cpes.ma".
 
index 57b9fc3df83cefbeb7888ada62fb0c6b60261e17..55ce4a7005012f52b39b540f3fbd5c96fe5225e2 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_computation/cpme_aaa.ma".
-include "basic_2/rt_computation/cpre_cpre.ma".
+include "basic_2/rt_computation/cpmre_aaa.ma".
+include "basic_2/rt_computation/cprre_cprre.ma".
 include "basic_2/rt_equivalence/cpes.ma".
-include "basic_2/dynamic/cnv_cpme.ma".
+include "basic_2/dynamic/cnv_cpmre.ma".
 
 (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
 
@@ -27,15 +27,15 @@ lemma cnv_cpes_dec (h) (a) (n1) (n2) (G) (L):
 #h #a #n1 #n2 #G #L #T1 #HT1 #T2 #HT2
 elim (cnv_fwd_aaa … HT1) #A1 #HA1
 elim (cnv_fwd_aaa … HT2) #A2 #HA2
-elim (cpme_total_aaa h n1 … HA1) -HA1 #U1 #HTU1
-elim (cpme_total_aaa h n2 … HA2) -HA2 #U2 #HTU2
+elim (cpmre_total_aaa h n1 … HA1) -HA1 #U1 #HTU1
+elim (cpmre_total_aaa h n2 … HA2) -HA2 #U2 #HTU2
 elim (eq_term_dec U1 U2) [ #H destruct | #HnU12 ]
 [ cases HTU1 -HTU1 #HTU1 #_
   cases HTU2 -HTU2 #HTU2 #_
   /3 width=3 by cpms_div, or_introl/
 | @or_intror * #T0 #HT10 #HT20
-  lapply (cnv_cpme_cpms_conf … HT1 … HT10 … HTU1) -T1 #H1
-  lapply (cnv_cpme_cpms_conf … HT2 … HT20 … HTU2) -T2 #H2
-  /3 width=6 by cpre_mono/
+  lapply (cnv_cpmre_cpms_conf … HT1 … HT10 … HTU1) -T1 #H1
+  lapply (cnv_cpmre_cpms_conf … HT2 … HT20 … HTU2) -T2 #H2
+  /3 width=6 by cprre_mono/
 ]
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme.ma
deleted file mode 100644 (file)
index dcee3eb..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/notation/relations/predeval_6.ma".
-include "basic_2/rt_transition/cnr.ma".
-include "basic_2/rt_computation/cpms.ma".
-
-(* EVALUATION FOR T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ON TERMS *)
-
-(* Basic_2A1: uses: cpre *)
-definition cpme (h) (n) (G) (L): relation2 term term ≝
-           λT1,T2. ∧∧ ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 & ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃T2⦄.
-
-interpretation "evaluation for t-bound context-sensitive parallel rt-transition (term)"
-   'PRedEval h n G L T1 T2 = (cpme h n G L T1 T2).
-
-(* Basic properties *********************************************************)
-
-lemma cpme_intro (h) (n) (G) (L):
-      ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃T2⦄ → ⦃G,L⦄⊢T1➡*[h,n]𝐍⦃T2⦄.
-/2 width=1 by conj/ qed.
-
-(* Basic forward lemmas *****************************************************)
-
-lemma cpme_fwd_cpms (h) (n) (G) (L):
-      ∀T1,T2. ⦃G,L⦄⊢T1➡*[h,n]𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2.
-#h #n #G #L #T1 #T2 * //
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpme_aaa.ma
deleted file mode 100644 (file)
index 6d61825..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_computation/csx_aaa.ma".
-include "basic_2/rt_computation/cpms_aaa.ma".
-include "basic_2/rt_computation/cpre_csx.ma".
-include "basic_2/rt_computation/cpre_cpms.ma".
-
-(* EVALUATION FOR T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ON TERMS *)
-
-(* Properties with atomic atomic arity assignment on terms ******************)
-
-lemma cpme_total_aaa (h) (n) (A) (G) (L):
-      ∀T1. ⦃G,L⦄ ⊢ T1 ⁝ A → ∃T2. ⦃G,L⦄ ⊢ T1 ➡*[h,n] 𝐍⦃T2⦄.
-#h #n #A #G #L #T1 #HT1
-elim (cpms_total_aaa h … n … HT1) #T0 #HT10
-elim (cpre_total_csx h G L T0)
-[ #T2 /3 width=4 by cpms_cpre_trans, ex_intro/
-| /4 width=4 by cpms_fwd_cpxs, aaa_csx, csx_cpxs_trans/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre.ma
new file mode 100644 (file)
index 0000000..112f0aa
--- /dev/null
@@ -0,0 +1,39 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/notation/relations/predeval_6.ma".
+include "basic_2/rt_transition/cnr.ma".
+include "basic_2/rt_computation/cpms.ma".
+
+(* EVALUATION FOR T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ON TERMS *)
+
+(* Basic_2A1: uses: cprre *)
+definition cpmre (h) (n) (G) (L): relation2 term term ≝
+           λT1,T2. ∧∧ ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 & ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃T2⦄.
+
+interpretation "evaluation for t-bound context-sensitive parallel rt-transition (term)"
+   'PRedEval h n G L T1 T2 = (cpmre h n G L T1 T2).
+
+(* Basic properties *********************************************************)
+
+lemma cpmre_intro (h) (n) (G) (L):
+      ∀T1,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃T2⦄ → ⦃G,L⦄⊢T1➡*[h,n]𝐍⦃T2⦄.
+/2 width=1 by conj/ qed.
+
+(* Basic forward lemmas *****************************************************)
+
+lemma cpmre_fwd_cpms (h) (n) (G) (L):
+      ∀T1,T2. ⦃G,L⦄⊢T1➡*[h,n]𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2.
+#h #n #G #L #T1 #T2 * //
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre_aaa.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre_aaa.ma
new file mode 100644 (file)
index 0000000..840985f
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_computation/csx_aaa.ma".
+include "basic_2/rt_computation/cpms_aaa.ma".
+include "basic_2/rt_computation/cprre_csx.ma".
+include "basic_2/rt_computation/cprre_cpms.ma".
+
+(* EVALUATION FOR T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ON TERMS *)
+
+(* Properties with atomic atomic arity assignment on terms ******************)
+
+lemma cpmre_total_aaa (h) (n) (A) (G) (L):
+      ∀T1. ⦃G,L⦄ ⊢ T1 ⁝ A → ∃T2. ⦃G,L⦄ ⊢ T1 ➡*[h,n] 𝐍⦃T2⦄.
+#h #n #A #G #L #T1 #HT1
+elim (cpms_total_aaa h … n … HT1) #T0 #HT10
+elim (cprre_total_csx h G L T0)
+[ #T2 /3 width=4 by cpms_cprre_trans, ex_intro/
+| /4 width=4 by cpms_fwd_cpxs, aaa_csx, csx_cpxs_trans/
+]
+qed-.
index 5a0471b2a0e6def262d0a70cba5f4e9d0bc2e556..a71f3de70f7ee5a01e61e0adea77a985b5dcfa28 100644 (file)
@@ -20,10 +20,10 @@ include "basic_2/rt_computation/cpms_fpbs.ma".
 
 (* Forward lemmas with proper parallel rst-computation for closures *********)
 
-lemma cpms_tdneq_fwd_fpbg (h) (n):
+lemma cpms_tneqx_fwd_fpbg (h) (n):
       ∀G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 →
       (T1 ≛ T2 → ⊥) → ⦃G,L,T1⦄ >[h] ⦃G,L,T2⦄.
-/3 width=2 by cpms_fwd_cpxs, cpxs_tdneq_fpbg/ qed-.
+/3 width=2 by cpms_fwd_cpxs, cpxs_tneqx_fpbg/ qed-.
 
 lemma fpbg_cpms_trans (h) (n):
       ∀G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T⦄ →
@@ -40,9 +40,9 @@ lemma fqup_cpms_fwd_fpbg (h):
       ∀n,T2. ⦃G2,L2⦄ ⊢ T ➡*[n,h] T2 → ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T2⦄.
 /3 width=5 by cpms_fwd_fpbs, fqup_fpbg, fpbg_fpbs_trans/ qed-.
 
-lemma cpm_tdneq_cpm_cpms_tdeq_sym_fwd_fpbg (h) (G) (L) (T1):
+lemma cpm_tneqx_cpm_cpms_teqx_sym_fwd_fpbg (h) (G) (L) (T1):
       ∀n1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → (T1 ≛ T → ⊥) →
       ∀n2,T2. ⦃G,L⦄⊢ T ➡*[n2,h] T2 → T1 ≛ T2 → ⦃G,L,T1⦄ >[h] ⦃G,L,T1⦄.
 #h #G #L #T1 #n1 #T #H1T1 #H2T1 #n2 #T2 #H1T2 #H2T12
-/4 width=7 by cpms_fwd_fpbs, cpm_fpb, fpbs_tdeq_trans, tdeq_sym, ex2_3_intro/
+/4 width=7 by cpms_fwd_fpbs, cpm_fpb, fpbs_teqx_trans, teqx_sym, ex2_3_intro/
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma
deleted file mode 100644 (file)
index f6c8198..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_computation/cpxs_rdeq.ma".
-include "basic_2/rt_computation/cpms_cpxs.ma".
-
-(* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
-
-(* Properties with sort-irrelevant equivalence for local environments *******)
-
-lemma cpms_rdeq_conf_sn (h) (n) (G) (L1) (L2):
-                        ∀T1,T2. ⦃G,L1⦄ ⊢ T1 ➡*[n,h] T2 →
-                        L1 ≛[T1] L2 → L1 ≛[T2] L2.
-/3 width=5 by cpms_fwd_cpxs, cpxs_rdeq_conf_sn/ qed-.
-
-lemma cpms_rdeq_conf_dx (h) (n) (G) (L1) (L2):
-                        ∀T1,T2. ⦃G,L2⦄ ⊢ T1 ➡*[n,h] T2 →
-                        L1 ≛[T1] L2 → L1 ≛[T2] L2.
-/3 width=5 by cpms_fwd_cpxs, cpxs_rdeq_conf_dx/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_reqx.ma
new file mode 100644 (file)
index 0000000..cda3b2b
--- /dev/null
@@ -0,0 +1,30 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_computation/cpxs_reqx.ma".
+include "basic_2/rt_computation/cpms_cpxs.ma".
+
+(* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+
+(* Properties with sort-irrelevant equivalence for local environments *******)
+
+lemma cpms_reqx_conf_sn (h) (n) (G) (L1) (L2):
+                        ∀T1,T2. ⦃G,L1⦄ ⊢ T1 ➡*[n,h] T2 →
+                        L1 ≛[T1] L2 → L1 ≛[T2] L2.
+/3 width=5 by cpms_fwd_cpxs, cpxs_reqx_conf_sn/ qed-.
+
+lemma cpms_reqx_conf_dx (h) (n) (G) (L1) (L2):
+                        ∀T1,T2. ⦃G,L2⦄ ⊢ T1 ➡*[n,h] T2 →
+                        L1 ≛[T1] L2 → L1 ≛[T2] L2.
+/3 width=5 by cpms_fwd_cpxs, cpxs_reqx_conf_dx/ qed-.
index 1939101a3f35421b2526241135a29ebfdd25d1eb..37015eb4fd215ab1e5df9dc1c948d11664c94cbc 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/syntax/tweq_tdeq.ma".
+include "static_2/syntax/tweq_teqx.ma".
 include "basic_2/rt_computation/csx_cpxs.ma".
 include "basic_2/rt_computation/cpms_cpxs.ma".
 include "basic_2/rt_computation/cnuw_cnuw.ma".
@@ -31,7 +31,7 @@ elim (cnuw_dec_ex h G L T1)
 | * #n1 #T0 #HT10 #HnT10
   elim (IHT1 … T0) -IHT1
   [ #T2 #n2 * #HT02 #HT2 /4 width=5 by cpms_trans, cpmuwe_intro, ex1_2_intro/
-  | /3 width=1 by tdeq_tweq/
+  | /3 width=1 by teqx_tweq/
   | /2 width=2 by cpms_fwd_cpxs/
   ]
 ]
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre.ma
deleted file mode 100644 (file)
index 6059150..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/notation/relations/predeval_5.ma".
-include "basic_2/rt_computation/cpme.ma".
-include "basic_2/rt_computation/cprs.ma".
-
-(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS ***********)
-
-interpretation "evaluation for context-sensitive parallel r-transition (term)"
-   'PRedEval h G L T1 T2 = (cpme h O G L T1 T2).
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpms.ma
deleted file mode 100644 (file)
index 2dd997c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_computation/cpms_cpms.ma".
-include "basic_2/rt_computation/cpre.ma".
-
-(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS **********)
-
-(* Properties with t-bound rt-computarion on terms **************************)
-
-lemma cpms_cpre_trans (h) (n) (G) (L):
-      ∀T1,T0. ⦃G,L⦄ ⊢T1 ➡*[n,h] T0 →
-      ∀T2. ⦃G,L⦄ ⊢ T0 ➡*[h] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[h,n] 𝐍⦃T2⦄.
-#h #n #G #L #T1 #T0 #HT10 #T2 * #HT02 #HT2
-/3 width=3 by cpms_cprs_trans, cpme_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpre.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_cpre.ma
deleted file mode 100644 (file)
index a855b32..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_computation/cprs_cnr.ma".
-include "basic_2/rt_computation/cprs_cprs.ma".
-include "basic_2/rt_computation/cpre.ma".
-
-(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS *********)
-
-(* Properties with context-sensitive parallel r-computation for terms ******)
-
-lemma cpre_cprs_conf (h) (G) (L) (T):
-      ∀T1. ⦃G,L⦄ ⊢ T ➡*[h] T1 → ∀T2. ⦃G,L⦄ ⊢ T ➡*[h] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[h] 𝐍⦃T2⦄.
-#h #G #L #T0 #T1 #HT01 #T2 * #HT02 #HT2
-elim (cprs_conf … HT01 … HT02) -T0 #T0 #HT10 #HT20
-lapply (cprs_inv_cnr_sn … HT20 HT2) -HT20 #H destruct
-/2 width=1 by cpme_intro/
-qed-.
-
-(* Main properties *********************************************************)
-
-(* Basic_1: was: nf2_pr3_confluence *)
-theorem cpre_mono (h) (G) (L) (T):
-        ∀T1. ⦃G,L⦄ ⊢ T ➡*[h] 𝐍⦃T1⦄ → ∀T2. ⦃G,L⦄ ⊢ T ➡*[h] 𝐍⦃T2⦄ → T1 = T2.
-#h #G #L #T0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2
-elim (cprs_conf … HT01 … HT02) -T0 #T0 #HT10 #HT20
->(cprs_inv_cnr_sn … HT10 HT1) -T1
->(cprs_inv_cnr_sn … HT20 HT2) -T2 //
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpre_csx.ma
deleted file mode 100644 (file)
index 555ff0c..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_transition/cpm_cpx.ma".
-include "basic_2/rt_transition/cnr_tdeq.ma".
-include "basic_2/rt_computation/csx.ma".
-include "basic_2/rt_computation/cpre.ma".
-
-(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS **********)
-
-(* Properties with strong normalization for unbound rt-transition for terms *)
-
-(* Basic_1: was just: nf2_sn3 *)
-lemma cpre_total_csx (h) (G) (L):
-      ∀T1. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ → ∃T2. ⦃G,L⦄ ⊢ T1 ➡*[h] 𝐍⦃T2⦄.
-#h #G #L #T1 #H
-@(csx_ind … H) -T1 #T1 #_ #IHT1
-elim (cnr_dec_tdeq h G L T1) [ /3 width=3 by ex_intro, cpme_intro/ ] *
-#T0 #HT10 #HnT10
-elim (IHT1 … HnT10) -IHT1 -HnT10 [| /2 width=2 by cpm_fwd_cpx/ ]
-#T2 * /4 width=3 by cprs_step_sn, ex_intro, cpme_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre.ma
new file mode 100644 (file)
index 0000000..bd1a283
--- /dev/null
@@ -0,0 +1,23 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/notation/relations/predeval_5.ma".
+include "basic_2/rt_computation/cpmre.ma".
+include "basic_2/rt_computation/cprs.ma".
+
+(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS ***********)
+
+(* Basic_2A1: was: cpre *)
+interpretation "evaluation for context-sensitive parallel r-transition (term)"
+   'PRedEval h G L T1 T2 = (cpmre h O G L T1 T2).
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cpms.ma
new file mode 100644 (file)
index 0000000..02474ff
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_computation/cpms_cpms.ma".
+include "basic_2/rt_computation/cprre.ma".
+
+(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS **********)
+
+(* Properties with t-bound rt-computarion on terms **************************)
+
+lemma cpms_cprre_trans (h) (n) (G) (L):
+      ∀T1,T0. ⦃G,L⦄ ⊢T1 ➡*[n,h] T0 →
+      ∀T2. ⦃G,L⦄ ⊢ T0 ➡*[h] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[h,n] 𝐍⦃T2⦄.
+#h #n #G #L #T1 #T0 #HT10 #T2 * #HT02 #HT2
+/3 width=3 by cpms_cprs_trans, cpmre_intro/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cprre.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cprre.ma
new file mode 100644 (file)
index 0000000..24d9483
--- /dev/null
@@ -0,0 +1,41 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_computation/cprs_cnr.ma".
+include "basic_2/rt_computation/cprs_cprs.ma".
+include "basic_2/rt_computation/cprre.ma".
+
+(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS *********)
+
+(* Properties with context-sensitive parallel r-computation for terms ******)
+
+lemma cprre_cprs_conf (h) (G) (L) (T):
+      ∀T1. ⦃G,L⦄ ⊢ T ➡*[h] T1 → ∀T2. ⦃G,L⦄ ⊢ T ➡*[h] 𝐍⦃T2⦄ → ⦃G,L⦄ ⊢ T1 ➡*[h] 𝐍⦃T2⦄.
+#h #G #L #T0 #T1 #HT01 #T2 * #HT02 #HT2
+elim (cprs_conf … HT01 … HT02) -T0 #T0 #HT10 #HT20
+lapply (cprs_inv_cnr_sn … HT20 HT2) -HT20 #H destruct
+/2 width=1 by cpmre_intro/
+qed-.
+
+(* Main properties *********************************************************)
+
+(* Basic_1: was: nf2_pr3_confluence *)
+(* Basic_2A1: was: cpre_mono *)
+theorem cprre_mono (h) (G) (L) (T):
+        ∀T1. ⦃G,L⦄ ⊢ T ➡*[h] 𝐍⦃T1⦄ → ∀T2. ⦃G,L⦄ ⊢ T ➡*[h] 𝐍⦃T2⦄ → T1 = T2.
+#h #G #L #T0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2
+elim (cprs_conf … HT01 … HT02) -T0 #T0 #HT10 #HT20
+>(cprs_inv_cnr_sn … HT10 HT1) -T1
+>(cprs_inv_cnr_sn … HT20 HT2) -T2 //
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_csx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_csx.ma
new file mode 100644 (file)
index 0000000..fac487c
--- /dev/null
@@ -0,0 +1,34 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_transition/cpm_cpx.ma".
+include "basic_2/rt_transition/cnr_teqx.ma".
+include "basic_2/rt_computation/csx.ma".
+include "basic_2/rt_computation/cprre.ma".
+
+(* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS **********)
+
+(* Properties with strong normalization for unbound rt-transition for terms *)
+
+(* Basic_1: was just: nf2_sn3 *)
+(* Basic_2A1: was: csx_cpre *)
+lemma cprre_total_csx (h) (G) (L):
+      ∀T1. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ → ∃T2. ⦃G,L⦄ ⊢ T1 ➡*[h] 𝐍⦃T2⦄.
+#h #G #L #T1 #H
+@(csx_ind … H) -T1 #T1 #_ #IHT1
+elim (cnr_dec_teqx h G L T1) [ /3 width=3 by ex_intro, cpmre_intro/ ] *
+#T0 #HT10 #HnT10
+elim (IHT1 … HnT10) -IHT1 -HnT10 [| /2 width=2 by cpm_fwd_cpx/ ]
+#T2 * /4 width=3 by cprs_step_sn, ex_intro, cpmre_intro/
+qed-.
index 453c91e452825612c20b170cc3d322cd6f40c1e7..d10463afe8c0f7bee3f626427bb8b513afbe73b5 100644 (file)
@@ -28,5 +28,5 @@ lemma cpxs_cnx (h) (G) (L) (T1):
 lemma cpxs_inv_cnx1 (h) (G) (L):
       ∀T1,T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃T1⦄ → T1 ≛ T2.
 #h #G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
-/5 width=9 by cnx_tdeq_trans, tdeq_trans/
+/5 width=9 by cnx_teqx_trans, teqx_trans/
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma
deleted file mode 100644 (file)
index 1b12ae6..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/fdeq.ma".
-include "basic_2/rt_computation/cpxs_rdeq.ma".
-
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
-
-(* Properties with sort-irrelevant equivalence for closures *****************)
-
-lemma fdeq_cpxs_trans: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T⦄ →
-                       ∀T2. ⦃G2,L2⦄ ⊢ T ⬈*[h] T2 →
-                       ∃∃T0. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] T0 & ⦃G1,L1,T0⦄ ≛ ⦃G2,L2,T2⦄.
-#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
-elim (fdeq_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
-elim (rdeq_cpxs_trans … HT2 … HL12) #T0 #HT0 #HT02
-lapply (cpxs_rdeq_conf_dx … HT2 … HL12) -HL12 #HL12
-elim (tdeq_cpxs_trans … HT1 … HT0) -T #T #HT1 #HT0
-/4 width=5 by fdeq_intro_dx, tdeq_trans, ex2_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_feqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_feqx.ma
new file mode 100644 (file)
index 0000000..23709c9
--- /dev/null
@@ -0,0 +1,31 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/feqx.ma".
+include "basic_2/rt_computation/cpxs_reqx.ma".
+
+(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+
+(* Properties with sort-irrelevant equivalence for closures *****************)
+
+lemma feqx_cpxs_trans: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T⦄ →
+                       ∀T2. ⦃G2,L2⦄ ⊢ T ⬈*[h] T2 →
+                       ∃∃T0. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] T0 & ⦃G1,L1,T0⦄ ≛ ⦃G2,L2,T2⦄.
+#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
+elim (feqx_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
+elim (reqx_cpxs_trans … HT2 … HL12) #T0 #HT0 #HT02
+lapply (cpxs_reqx_conf_dx … HT2 … HL12) -HL12 #HL12
+elim (teqx_cpxs_trans … HT1 … HT0) -T #T #HT1 #HT0
+/4 width=5 by feqx_intro_dx, teqx_trans, ex2_intro/
+qed-.
index eb8e6748ac386f51411fddb8c9dc00ecd1bae6ab..eb71bafca9ad6cdde5cc7eafb25064e126405c52 100644 (file)
@@ -53,70 +53,70 @@ lemma fqus_cpxs_trans: ∀h,b,G1,G2,L1,L2,T2,U2. ⦃G2,L2⦄ ⊢ T2 ⬈*[h] U2 
 #U1 #HTU1 #H2 elim (IHTU2 … H2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/
 qed-.
 
-(* Note: a proof based on fqu_cpx_trans_tdneq might exist *)
+(* Note: a proof based on fqu_cpx_trans_tneqx might exist *)
 (* Basic_2A1: uses: fqu_cpxs_trans_neq *)
-lemma fqu_cpxs_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T2⦄ →
+lemma fqu_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T2⦄ →
                             ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
                             ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ #I #G #L #V1 #V2 #HV12 #_ elim (lifts_total V2 𝐔❴1❵)
   #U2 #HVU2 @(ex3_intro … U2)
   [1,3: /3 width=7 by cpxs_delta, fqu_drop/
-  | #H lapply (tdeq_inv_lref1 … H) -H
+  | #H lapply (teqx_inv_lref1 … H) -H
     #H destruct /2 width=5 by lifts_inv_lref2_uni_lt/
   ]
 | #I #G #L #V1 #T #V2 #HV12 #H0 @(ex3_intro … (②{I}V2.T))
   [1,3: /2 width=4 by fqu_pair_sn, cpxs_pair_sn/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #p #I #G #L #V #T1 #Hb #T2 #HT12 #H0 @(ex3_intro … (ⓑ{p,I}V.T2))
   [1,3: /2 width=4 by fqu_bind_dx, cpxs_bind/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #p #I #G #L #V #T1 #Hb #T2 #HT12 #H0 @(ex3_intro … (ⓑ{p,I}V.T2))
   [1,3: /4 width=4 by lsubr_cpxs_trans, cpxs_bind, lsubr_unit, fqu_clear/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #I #G #L #V #T1 #T2 #HT12 #H0 @(ex3_intro … (ⓕ{I}V.T2))
   [1,3: /2 width=4 by fqu_flat_dx, cpxs_flat/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #I #G #L #T1 #U1 #HTU1 #T2 #HT12 #H0
   elim (cpxs_lifts_sn … HT12 (Ⓣ) … (L.ⓘ{I}) … HTU1) -HT12
-  /4 width=6 by fqu_drop, drops_refl, drops_drop, tdeq_inv_lifts_bi, ex3_intro/
+  /4 width=6 by fqu_drop, drops_refl, drops_drop, teqx_inv_lifts_bi, ex3_intro/
 ]
 qed-.
 
 (* Basic_2A1: uses: fquq_cpxs_trans_neq *)
-lemma fquq_cpxs_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂⸮[b] ⦃G2,L2,T2⦄ →
+lemma fquq_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂⸮[b] ⦃G2,L2,T2⦄ →
                              ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
                              ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂⸮[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12
-[ #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tdneq … H12 … HTU2 H) -T2
+[ #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fquq, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
 ]
 qed-.
 
 (* Basic_2A1: uses: fqup_cpxs_trans_neq *)
-lemma fqup_cpxs_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂+[b] ⦃G2,L2,T2⦄ →
+lemma fqup_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂+[b] ⦃G2,L2,T2⦄ →
                              ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
                              ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂+[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
-[ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tdneq … H12 … HTU2 H) -T2
+[ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fqup, ex3_intro/
 | #G #G1 #L #L1 #T #T1 #H1 #_ #IH12 #U2 #HTU2 #H elim (IH12 … HTU2 H) -T2
-  #U1 #HTU1 #H #H12 elim (fqu_cpxs_trans_tdneq … H1 … HTU1 H) -T1
+  #U1 #HTU1 #H #H12 elim (fqu_cpxs_trans_tneqx … H1 … HTU1 H) -T1
   /3 width=8 by fqup_strap2, ex3_intro/
 ]
 qed-.
 
 (* Basic_2A1: uses: fqus_cpxs_trans_neq *)
-lemma fqus_cpxs_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂*[b] ⦃G2,L2,T2⦄ →
+lemma fqus_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂*[b] ⦃G2,L2,T2⦄ →
                              ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
                              ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂*[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
-[ #H12 elim (fqup_cpxs_trans_tdneq … H12 … HTU2 H) -T2
+[ #H12 elim (fqup_cpxs_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqup_fqus, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
 ]
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma
deleted file mode 100644 (file)
index 1d3dfa5..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_transition/cpx_rdeq.ma".
-include "basic_2/rt_computation/cpxs_tdeq.ma".
-
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
-
-(* Properties with sort-irrelevant equivalence for local environments *******)
-
-(* Basic_2A1: was just: lleq_cpxs_trans *) 
-lemma rdeq_cpxs_trans: ∀h,G,L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈*[h] T1 →
-                       ∀L2. L2 ≛[T0] L0 →
-                       ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈*[h] T & T ≛ T1.
-#h #G #L0 #T0 #T1 #H @(cpxs_ind_dx … H) -T0 /2 width=3 by ex2_intro/
-#T0 #T #HT0 #_ #IH #L2 #HL2
-elim (rdeq_cpx_trans … HL2 … HT0) #U1 #H1 #H2
-elim (IH L2) -IH /2 width=5 by cpx_rdeq_conf_dx/ -L0 #U2 #H3 #H4
-elim (tdeq_cpxs_trans … H2 … H3) -T #U0 #H2 #H3
-/3 width=5 by cpxs_strap2, tdeq_trans, ex2_intro/
-qed-.
-
-(* Basic_2A1: was just: cpxs_lleq_conf *) 
-lemma cpxs_rdeq_conf: ∀h,G,L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈*[h] T1 →
-                      ∀L2. L0 ≛[T0] L2 →
-                      ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈*[h] T & T ≛ T1.
-/3 width=3 by rdeq_cpxs_trans, rdeq_sym/ qed-.
-
-(* Basic_2A1: was just: cpxs_lleq_conf_dx *) 
-lemma cpxs_rdeq_conf_dx: ∀h,G,L2,T1,T2. ⦃G,L2⦄ ⊢ T1 ⬈*[h] T2 →
-                         ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
-#h #G #L2 #T1 #T2 #H @(cpxs_ind … H) -T2 /3 width=6 by cpx_rdeq_conf_dx/
-qed-.
-
-(* Basic_2A1: was just: lleq_conf_sn *) 
-lemma cpxs_rdeq_conf_sn: ∀h,G,L1,T1,T2. ⦃G,L1⦄ ⊢ T1 ⬈*[h] T2 →
-                         ∀L2. L1 ≛[T1] L2 → L1 ≛[T2] L2.
-/4 width=6 by cpxs_rdeq_conf_dx, rdeq_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_reqx.ma
new file mode 100644 (file)
index 0000000..eb1444b
--- /dev/null
@@ -0,0 +1,49 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_transition/cpx_reqx.ma".
+include "basic_2/rt_computation/cpxs_teqx.ma".
+
+(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+
+(* Properties with sort-irrelevant equivalence for local environments *******)
+
+(* Basic_2A1: was just: lleq_cpxs_trans *) 
+lemma reqx_cpxs_trans: ∀h,G,L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈*[h] T1 →
+                       ∀L2. L2 ≛[T0] L0 →
+                       ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈*[h] T & T ≛ T1.
+#h #G #L0 #T0 #T1 #H @(cpxs_ind_dx … H) -T0 /2 width=3 by ex2_intro/
+#T0 #T #HT0 #_ #IH #L2 #HL2
+elim (reqx_cpx_trans … HL2 … HT0) #U1 #H1 #H2
+elim (IH L2) -IH /2 width=5 by cpx_reqx_conf_dx/ -L0 #U2 #H3 #H4
+elim (teqx_cpxs_trans … H2 … H3) -T #U0 #H2 #H3
+/3 width=5 by cpxs_strap2, teqx_trans, ex2_intro/
+qed-.
+
+(* Basic_2A1: was just: cpxs_lleq_conf *) 
+lemma cpxs_reqx_conf: ∀h,G,L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈*[h] T1 →
+                      ∀L2. L0 ≛[T0] L2 →
+                      ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈*[h] T & T ≛ T1.
+/3 width=3 by reqx_cpxs_trans, reqx_sym/ qed-.
+
+(* Basic_2A1: was just: cpxs_lleq_conf_dx *) 
+lemma cpxs_reqx_conf_dx: ∀h,G,L2,T1,T2. ⦃G,L2⦄ ⊢ T1 ⬈*[h] T2 →
+                         ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
+#h #G #L2 #T1 #T2 #H @(cpxs_ind … H) -T2 /3 width=6 by cpx_reqx_conf_dx/
+qed-.
+
+(* Basic_2A1: was just: lleq_conf_sn *) 
+lemma cpxs_reqx_conf_sn: ∀h,G,L1,T1,T2. ⦃G,L1⦄ ⊢ T1 ⬈*[h] T2 →
+                         ∀L2. L1 ≛[T1] L2 → L1 ≛[T2] L2.
+/4 width=6 by cpxs_reqx_conf_dx, reqx_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma
deleted file mode 100644 (file)
index b1d2c94..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_transition/rpx_rdeq.ma".
-include "basic_2/rt_computation/cpxs.ma".
-
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
-
-(* Properties with sort-irrelevant equivalence for terms ********************)
-
-lemma tdeq_cpxs_trans: ∀h,U1,T1. U1 ≛ T1 → ∀G,L,T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 → 
-                       ∃∃U2. ⦃G,L⦄ ⊢ U1 ⬈*[h] U2 & U2 ≛ T2.
-#h #U1 #T1 #HUT1 #G #L #T2 #HT12 @(cpxs_ind … HT12) -T2 /2 width=3 by ex2_intro/
-#T #T2 #_ #HT2 * #U #HU1 #HUT elim (tdeq_cpx_trans … HUT … HT2) -T -T1
-/3 width=3 by ex2_intro, cpxs_strap1/
-qed-.
-
-(* Note: this requires tdeq to be symmetric *)
-(* Nasic_2A1: uses: cpxs_neq_inv_step_sn *)
-lemma cpxs_tdneq_fwd_step_sn: ∀h,G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) →
-                              ∃∃T,T0. ⦃G,L⦄ ⊢ T1 ⬈[h] T & T1 ≛ T → ⊥ & ⦃G,L⦄ ⊢ T ⬈*[h] T0 & T0 ≛ T2.
-#h #G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
-[ #H elim H -H //
-| #T1 #T0 #HT10 #HT02 #IH #Hn12
-  elim (tdeq_dec T1 T0) [ -HT10 -HT02 #H10 | -IH #Hn10 ]
-  [ elim IH -IH /3 width=3 by tdeq_trans/ -Hn12
-    #T3 #T4 #HT03 #Hn03 #HT34 #H42
-    elim (tdeq_cpx_trans … H10 … HT03) -HT03 #T5 #HT15 #H53
-    elim (tdeq_cpxs_trans … H53 … HT34) -HT34 #T6 #HT56 #H64
-    /5 width=8 by tdeq_canc_sn, (* 2x *) tdeq_trans, ex4_2_intro/
-  | /3 width=6 by ex4_2_intro/
-  ]
-]
-qed-.
index 1de400dad02d255ed6d9c63118fd95aa4bc5582d..571a46efea2cbe77768da78427f5113dc385228d 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/syntax/teqo_tdeq.ma".
+include "static_2/syntax/teqo_teqx.ma".
 include "basic_2/rt_computation/cpxs_lsubr.ma".
 include "basic_2/rt_computation/cpxs_cnx.ma".
 include "basic_2/rt_computation/lpxs_cpxs.ma".
@@ -99,4 +99,4 @@ qed-.
 lemma cpxs_fwd_cnx (h) (G) (L):
       ∀T1. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃T1⦄ →
       ∀X2. ⦃G,L⦄ ⊢ T1 ⬈*[h] X2 → T1 ⩳ X2.
-/3 width=5 by cpxs_inv_cnx1, tdeq_teqo/ qed-.
+/3 width=5 by cpxs_inv_cnx1, teqx_teqo/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_teqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_teqx.ma
new file mode 100644 (file)
index 0000000..7af7b41
--- /dev/null
@@ -0,0 +1,45 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_transition/rpx_reqx.ma".
+include "basic_2/rt_computation/cpxs.ma".
+
+(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+
+(* Properties with sort-irrelevant equivalence for terms ********************)
+
+lemma teqx_cpxs_trans: ∀h,U1,T1. U1 ≛ T1 → ∀G,L,T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 → 
+                       ∃∃U2. ⦃G,L⦄ ⊢ U1 ⬈*[h] U2 & U2 ≛ T2.
+#h #U1 #T1 #HUT1 #G #L #T2 #HT12 @(cpxs_ind … HT12) -T2 /2 width=3 by ex2_intro/
+#T #T2 #_ #HT2 * #U #HU1 #HUT elim (teqx_cpx_trans … HUT … HT2) -T -T1
+/3 width=3 by ex2_intro, cpxs_strap1/
+qed-.
+
+(* Note: this requires teqx to be symmetric *)
+(* Nasic_2A1: uses: cpxs_neq_inv_step_sn *)
+lemma cpxs_tneqx_fwd_step_sn: ∀h,G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) →
+                              ∃∃T,T0. ⦃G,L⦄ ⊢ T1 ⬈[h] T & T1 ≛ T → ⊥ & ⦃G,L⦄ ⊢ T ⬈*[h] T0 & T0 ≛ T2.
+#h #G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
+[ #H elim H -H //
+| #T1 #T0 #HT10 #HT02 #IH #Hn12
+  elim (teqx_dec T1 T0) [ -HT10 -HT02 #H10 | -IH #Hn10 ]
+  [ elim IH -IH /3 width=3 by teqx_trans/ -Hn12
+    #T3 #T4 #HT03 #Hn03 #HT34 #H42
+    elim (teqx_cpx_trans … H10 … HT03) -HT03 #T5 #HT15 #H53
+    elim (teqx_cpxs_trans … H53 … HT34) -HT34 #T6 #HT56 #H64
+    /5 width=8 by teqx_canc_sn, (* 2x *) teqx_trans, ex4_2_intro/
+  | /3 width=6 by ex4_2_intro/
+  ]
+]
+qed-.
index 7fe343b8a557d90ada8d869f9266d3d26ccca4ab..31ebb2c771013868994633d252550d2ea7fc482b 100644 (file)
 (**************************************************************************)
 
 include "basic_2/notation/relations/predtystrong_4.ma".
-include "static_2/syntax/tdeq.ma".
+include "static_2/syntax/teqx.ma".
 include "basic_2/rt_transition/cpx.ma".
 
 (* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
 
 definition csx: ∀h. relation3 genv lenv term ≝
-                λh,G,L. SN … (cpx h G L) tdeq.
+                λh,G,L. SN … (cpx h G L) teqx.
 
 interpretation
    "strong normalization for unbound context-sensitive parallel rt-transition (term)"
@@ -52,7 +52,7 @@ fact csx_fwd_pair_sn_aux: ∀h,G,L,U. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃U⦄ →
 #h #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
 @csx_intro #V2 #HLV2 #HV2
 @(IH (②{I}V2.T)) -IH /2 width=3 by cpx_pair_sn/ -HLV2
-#H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+#H elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_head *)
@@ -64,7 +64,7 @@ fact csx_fwd_bind_dx_aux: ∀h,G,L,U. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃U⦄ →
 #h #G #L #U #H elim H -H #U0 #_ #IH #p #I #V #T #H destruct
 @csx_intro #T2 #HLT2 #HT2
 @(IH (ⓑ{p, I}V.T2)) -IH /2 width=3 by cpx_bind/ -HLT2
-#H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+#H elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_bind *)
@@ -76,7 +76,7 @@ fact csx_fwd_flat_dx_aux: ∀h,G,L,U. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃U⦄ →
 #h #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
 @csx_intro #T2 #HLT2 #HT2
 @(IH (ⓕ{I}V.T2)) -IH /2 width=3 by cpx_flat/ -HLT2
-#H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+#H elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_flat *)
index aa206225c6475e422dd4b2e8b1648958ae186fd0..33262e95a3a6837d6cb389ef2dcbaff9178b4105 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_computation/cpxs_tdeq.ma".
+include "basic_2/rt_computation/cpxs_teqx.ma".
 include "basic_2/rt_computation/cpxs_cpxs.ma".
 include "basic_2/rt_computation/csx_csx.ma".
 
@@ -35,7 +35,7 @@ qed-.
 
 (* Eliminators with unbound context-sensitive rt-computation for terms ******)
 
-lemma csx_ind_cpxs_tdeq: ∀h,G,L. ∀Q:predicate term.
+lemma csx_ind_cpxs_teqx: ∀h,G,L. ∀Q:predicate term.
                          (∀T1. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
                                (∀T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
                          ) →
@@ -43,18 +43,18 @@ lemma csx_ind_cpxs_tdeq: ∀h,G,L. ∀Q:predicate term.
                          ∀T0. ⦃G,L⦄ ⊢ T1 ⬈*[h] T0 → ∀T2. T0 ≛ T2 → Q T2.
 #h #G #L #Q #IH #T1 #H @(csx_ind … H) -T1
 #T1 #HT1 #IH1 #T0 #HT10 #T2 #HT02
-@IH -IH /3 width=3 by csx_cpxs_trans, csx_tdeq_trans/ -HT1 #V2 #HTV2 #HnTV2
-lapply (tdeq_tdneq_trans … HT02 … HnTV2) -HnTV2 #H
-elim (tdeq_cpxs_trans … HT02 … HTV2) -T2 #V0 #HTV0 #HV02
-lapply (tdneq_tdeq_canc_dx … H … HV02) -H #HnTV0
-elim (tdeq_dec T1 T0) #H
-[ lapply (tdeq_tdneq_trans … H … HnTV0) -H -HnTV0 #Hn10
+@IH -IH /3 width=3 by csx_cpxs_trans, csx_teqx_trans/ -HT1 #V2 #HTV2 #HnTV2
+lapply (teqx_tneqx_trans … HT02 … HnTV2) -HnTV2 #H
+elim (teqx_cpxs_trans … HT02 … HTV2) -T2 #V0 #HTV0 #HV02
+lapply (tneqx_teqx_canc_dx … H … HV02) -H #HnTV0
+elim (teqx_dec T1 T0) #H
+[ lapply (teqx_tneqx_trans … H … HnTV0) -H -HnTV0 #Hn10
   lapply (cpxs_trans … HT10 … HTV0) -T0 #H10
-  elim (cpxs_tdneq_fwd_step_sn … H10 …  Hn10) -H10 -Hn10
-  /3 width=8 by tdeq_trans/
-| elim (cpxs_tdneq_fwd_step_sn … HT10 … H) -HT10 -H #T #V #HT1 #HnT1 #HTV #HVT0
-  elim (tdeq_cpxs_trans … HVT0 … HTV0) -T0
-  /3 width=8 by cpxs_trans, tdeq_trans/
+  elim (cpxs_tneqx_fwd_step_sn … H10 …  Hn10) -H10 -Hn10
+  /3 width=8 by teqx_trans/
+| elim (cpxs_tneqx_fwd_step_sn … HT10 … H) -HT10 -H #T #V #HT1 #HnT1 #HTV #HVT0
+  elim (teqx_cpxs_trans … HVT0 … HTV0) -T0
+  /3 width=8 by cpxs_trans, teqx_trans/
 ]
 qed-.
 
@@ -65,5 +65,5 @@ lemma csx_ind_cpxs: ∀h,G,L. ∀Q:predicate term.
                     ) →
                     ∀T. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →  Q T.
 #h #G #L #Q #IH #T #HT
-@(csx_ind_cpxs_tdeq … IH … HT) -IH -HT // (**) (* full auto fails *)
+@(csx_ind_cpxs_teqx … IH … HT) -IH -HT // (**) (* full auto fails *)
 qed-.
index 07cace3d31c49e554388f9c7a77226b905e613ae..915866a229682a56311abdc5f0e64fd1726ec096 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_transition/lpx_rdeq.ma".
+include "basic_2/rt_transition/lpx_reqx.ma".
 include "basic_2/rt_computation/csx_drops.ma".
 
 (* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
 
 (* Advanced properties ******************************************************)
 
-lemma csx_tdeq_trans (h) (G):
+lemma csx_teqx_trans (h) (G):
       ∀L,T1. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
       ∀T2. T1 ≛ T2 → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄.
 #h #G #L #T1 #H @(csx_ind … H) -T1 #T #_ #IH #T2 #HT2
-@csx_intro #T1 #HT21 #HnT21 elim (tdeq_cpx_trans … HT2 … HT21) -HT21
-/4 width=5 by tdeq_repl/
+@csx_intro #T1 #HT21 #HnT21 elim (teqx_cpx_trans … HT2 … HT21) -HT21
+/4 width=5 by teqx_repl/
 qed-.
 
 lemma csx_cpx_trans (h) (G):
       ∀L,T1. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
       ∀T2. ⦃G,L⦄ ⊢ T1 ⬈[h] T2 → ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄.
 #h #G #L #T1 #H @(csx_ind … H) -T1 #T1 #HT1 #IHT1 #T2 #HLT12
-elim (tdeq_dec T1 T2) /3 width=4 by csx_tdeq_trans/
+elim (teqx_dec T1 T2) /3 width=4 by csx_teqx_trans/
 qed-.
 
 (* Basic_1: was just: sn3_cast *)
@@ -43,7 +43,7 @@ lemma csx_cast (h) (G):
 #T #HT #IHT @csx_intro
 #X #H1 #H2 elim (cpx_inv_cast1 … H1) -H1
 [ * #W0 #T0 #HLW0 #HLT0 #H destruct
-  elim (tdneq_inv_pair … H2) -H2
+  elim (tneqx_inv_pair … H2) -H2
   [ -W -T #H elim H -H //
   | -HW -IHT /3 width=3 by csx_cpx_trans/
   | -HW -HT -IHW /4 width=3 by csx_cpx_trans, cpx_pair_sn/
index ad0c072fb097cb60e0c0b52991ebd1f609474381..c8b10e80c23635f674291bf1446358e4a571c712 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/relocation/lifts_tdeq.ma".
+include "static_2/relocation/lifts_teqx.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 include "basic_2/rt_computation/csx.ma".
 
@@ -27,7 +27,7 @@ lemma csx_lifts: ∀h,G. d_liftable1 … (csx h G).
 #T1 #_ #IH #b #f #L #HLK #U1 #HTU1
 @csx_intro #U2 #HU12 #HnU12
 elim (cpx_inv_lifts_sn … HU12 … HLK … HTU1) -HU12
-/4 width=7 by tdeq_lifts_bi/
+/4 width=7 by teqx_lifts_bi/
 qed-.
 
 (* Inversion lemmas with generic slicing ************************************)
@@ -39,5 +39,5 @@ lemma csx_inv_lifts: ∀h,G. d_deliftable1 … (csx h G).
 #U1 #_ #IH #b #f #K #HLK #T1 #HTU1
 @csx_intro #T2 #HT12 #HnT12
 elim (cpx_lifts_sn … HT12 … HLK … HTU1) -HT12
-/4 width=7 by tdeq_inv_lifts_bi/
+/4 width=7 by teqx_inv_lifts_bi/
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fdeq.ma
deleted file mode 100644 (file)
index fcb2f9a..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/fdeq.ma".
-include "basic_2/rt_computation/csx_rdeq.ma".
-
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
-
-(* Properties with sort-irrelevant equivalence for closures *****************)
-
-lemma csx_fdeq_conf: ∀h,G1,L1,T1. ⦃G1,L1⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
-                     ∀G2,L2,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G2,L2⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄.
-#h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
-/3 width=3 by csx_rdeq_conf, csx_tdeq_trans/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_feqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_feqx.ma
new file mode 100644 (file)
index 0000000..a3cf919
--- /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 "static_2/static/feqx.ma".
+include "basic_2/rt_computation/csx_reqx.ma".
+
+(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+
+(* Properties with sort-irrelevant equivalence for closures *****************)
+
+lemma csx_feqx_conf: ∀h,G1,L1,T1. ⦃G1,L1⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
+                     ∀G2,L2,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G2,L2⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄.
+#h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
+/3 width=3 by csx_reqx_conf, csx_teqx_trans/
+qed-.
index 6027a70f537b778a0a31c4dc95fa54ed5a1cdf7f..0329b73867328506aed4f15ca45a677444546e7f 100644 (file)
@@ -14,7 +14,7 @@
 
 include "basic_2/rt_transition/fpbq.ma".
 include "basic_2/rt_computation/csx_fqus.ma".
-include "basic_2/rt_computation/csx_fdeq.ma".
+include "basic_2/rt_computation/csx_feqx.ma".
 include "basic_2/rt_computation/csx_lpx.ma".
 
 (* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
@@ -25,5 +25,5 @@ include "basic_2/rt_computation/csx_lpx.ma".
 lemma csx_fpbq_conf: ∀h,G1,L1,T1. ⦃G1,L1⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
                      ∀G2,L2,T2. ⦃G1,L1,T1⦄ ≽[h] ⦃G2,L2,T2⦄ → ⦃G2,L2⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄.
 #h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 *
-/2 width=6 by csx_cpx_trans, csx_fquq_conf, csx_lpx_conf, csx_fdeq_conf/
+/2 width=6 by csx_cpx_trans, csx_fquq_conf, csx_lpx_conf, csx_feqx_conf/
 qed-.
index 716032c859f208b85a488c4782e72033dca7bd39..aff46798de502a6a01712c041c0ac238aedefd59 100644 (file)
@@ -20,7 +20,7 @@ include "basic_2/rt_computation/csx_drops.ma".
 
 (* Main properties with generic computation properties **********************)
 
-theorem csx_gcp: ∀h. gcp (cpx h) tdeq (csx h).
+theorem csx_gcp: ∀h. gcp (cpx h) teqx (csx h).
 #h @mk_gcp
 [ normalize /3 width=13 by cnx_lifts/
 | /2 width=4 by cnx_sort/
index d0644bbf56f09946315bbc2479f9b62bc72b4acb..77a8bcabd02f9eaf0a9b1b014cd77ad9a6ddd9ba 100644 (file)
@@ -20,7 +20,7 @@ include "basic_2/rt_computation/csx_csx_vector.ma".
 
 (* Main properties with generic candidates of reducibility ******************)
 
-theorem csx_gcr (h): gcr (cpx h) tdeq (csx h) (csx h).
+theorem csx_gcr (h): gcr (cpx h) teqx (csx h) (csx h).
 #h @mk_gcr
 [ //
 | #G #L #Vs #Hvs #T #HT #H
index 92e42f1f97b4be71df9b43544caf0b8c1e76c8b4..79d69cf4c7b0f74994ffd1c96a5f91849dacd538 100644 (file)
@@ -36,7 +36,7 @@ lemma csx_abst (h) (G):
 @(csx_ind … HT) -T #T #HT #IHT
 @csx_intro #X #H1 #H2
 elim (cpx_inv_abst1 … H1) -H1 #W0 #T0 #HLW0 #HLT0 #H destruct
-elim (tdneq_inv_pair  … H2) -H2
+elim (tneqx_inv_pair  … H2) -H2
 [ #H elim H -H //
 | -IHT #H lapply (csx_cpx_trans … HLT0) // -HT #HT0
   /4 width=5 by csx_lpx_conf, lpx_pair/
@@ -53,7 +53,7 @@ lemma csx_abbr (h) (G):
 @csx_intro #X #H1 #H2
 elim (cpx_inv_abbr1 … H1) -H1 *
 [ #V1 #T1 #HLV1 #HLT1 #H destruct
-  elim (tdneq_inv_pair … H2) -H2
+  elim (tneqx_inv_pair … H2) -H2
   [ #H elim H -H //
   | /4 width=5 by csx_cpx_trans, csx_lpx_conf, lpx_pair/
   | -IHV /4 width=3 by csx_cpx_trans, cpx_cpxs, cpx_pair_sn/
@@ -83,12 +83,12 @@ elim (cpx_inv_appl1 … HL) -HL *
   elim (cpx_inv_abbr1 … HL) -HL *
   [ #V3 #T3 #HV3 #HLT3 #H0 destruct
     elim (cpx_lifts_sn … HLV10 (Ⓣ) … (L.ⓓV) … HV12) -HLV10 /3 width=1 by drops_refl, drops_drop/ #V4 #HV04 #HV24
-    elim (tdeq_dec (ⓓ{p}V.ⓐV2.T) (ⓓ{p}V3.ⓐV4.T3)) #H0
+    elim (teqx_dec (ⓓ{p}V.ⓐV2.T) (ⓓ{p}V3.ⓐV4.T3)) #H0
     [ -IHVT -HV3 -HV24 -HLT3
-      elim (tdeq_inv_pair … H0) -H0 #_ #HV3 #H0
-      elim (tdeq_inv_pair … H0) -H0 #_ #HV24 #HT3
-      elim (tdneq_inv_pair … H) -H #H elim H -H -G -L
-      /3 width=6 by tdeq_inv_lifts_bi, tdeq_pair/
+      elim (teqx_inv_pair … H0) -H0 #_ #HV3 #H0
+      elim (teqx_inv_pair … H0) -H0 #_ #HV24 #HT3
+      elim (tneqx_inv_pair … H) -H #H elim H -H -G -L
+      /3 width=6 by teqx_inv_lifts_bi, teqx_pair/
     | -V1 @(IHVT … H0 … HV04) -V0 /4 width=1 by cpx_cpxs, cpx_flat, cpx_bind/
     ]
   | #T0 #HT0 #HLT0 #H0 destruct -H -IHVT
index 5e32b0e6d3e007132aefaadd069a729c5b39eb03..6d37e77be80f4579f4dcc11a4f67eb19d6f5de86 100644 (file)
@@ -31,9 +31,9 @@ elim (cpx_inv_appl1 … H1) -H1 *
   @IHT1 -IHT1 [4: // | skip ]
   [ lapply (lsubr_cpx_trans … HLT0 (L.ⓓⓝW.V) ?) -HLT0 -H2
     /3 width=1 by cpx_bind, cpx_flat, lsubr_beta/
-  | #H elim (tdeq_inv_pair … H) -H
-    #_ #H elim (tdeq_inv_pair … H) -H
-    #_ /4 width=1 by tdeq_pair/
+  | #H elim (teqx_inv_pair … H) -H
+    #_ #H elim (teqx_inv_pair … H) -H
+    #_ /4 width=1 by teqx_pair/
   ]
 | -IHT1 -H2 #q #V0 #W0 #W2 #T0 #T2 #HLV0 #HLW02 #HLT02 #H1 #H3 destruct
   lapply (lsubr_cpx_trans … HLT02 (L.ⓓⓝW0.V) ?) -HLT02
@@ -55,7 +55,7 @@ fact csx_fwd_bind_dx_unit_aux (h) (G):
 #h #G #L #U #H elim H -H #U0 #_ #IH #p #I #J #V #T #H destruct
 @csx_intro #T2 #HLT2 #HT2
 @(IH (ⓑ{p, I}V.T2)) -IH /2 width=4 by cpx_bind_unit/ -HLT2
-#H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+#H elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 lemma csx_fwd_bind_dx_unit (h) (G):
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_rdeq.ma
deleted file mode 100644 (file)
index dcd0462..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_transition/cpx_rdeq.ma".
-include "basic_2/rt_computation/csx_csx.ma".
-
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
-
-(* Properties with sort-irrelevant equivalence for local environments *******)
-
-(* Basic_2A1: uses: csx_lleq_conf *)
-lemma csx_rdeq_conf: ∀h,G,L1,T. ⦃G,L1⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →
-                     ∀L2. L1 ≛[T] L2 → ⦃G,L2⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
-#h #G #L1 #T #H
-@(csx_ind … H) -T #T1 #_ #IH #L2 #HL12
-@csx_intro #T2 #HT12 #HnT12
-elim (rdeq_cpx_trans … HL12 … HT12) -HT12
-/5 width=5 by cpx_rdeq_conf_sn, csx_tdeq_trans, tdeq_trans/
-qed-.
-
-(* Basic_2A1: uses: csx_lleq_conf *)
-lemma csx_rdeq_trans: ∀h,L1,L2,T. L1 ≛[T] L2 →
-                      ∀G. ⦃G,L2⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ → ⦃G,L1⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
-/3 width=3 by csx_rdeq_conf, rdeq_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_reqx.ma
new file mode 100644 (file)
index 0000000..7b3cfda
--- /dev/null
@@ -0,0 +1,35 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_transition/cpx_reqx.ma".
+include "basic_2/rt_computation/csx_csx.ma".
+
+(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+
+(* Properties with sort-irrelevant equivalence for local environments *******)
+
+(* Basic_2A1: uses: csx_lleq_conf *)
+lemma csx_reqx_conf: ∀h,G,L1,T. ⦃G,L1⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →
+                     ∀L2. L1 ≛[T] L2 → ⦃G,L2⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
+#h #G #L1 #T #H
+@(csx_ind … H) -T #T1 #_ #IH #L2 #HL12
+@csx_intro #T2 #HT12 #HnT12
+elim (reqx_cpx_trans … HL12 … HT12) -HT12
+/5 width=5 by cpx_reqx_conf_sn, csx_teqx_trans, teqx_trans/
+qed-.
+
+(* Basic_2A1: uses: csx_lleq_conf *)
+lemma csx_reqx_trans: ∀h,L1,L2,T. L1 ≛[T] L2 →
+                      ∀G. ⦃G,L2⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ → ⦃G,L1⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
+/3 width=3 by csx_reqx_conf, reqx_sym/ qed-.
index 50a4607323d820a3c52b8822f047dd305d425920..7253cdb50d10f3c30abdf64738c2b40df937a398 100644 (file)
@@ -27,7 +27,7 @@ lemma csx_appl_simple: ∀h,G,L,V. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ → ∀T1.
 @csx_intro #X #H1 #H2
 elim (cpx_inv_appl1_simple … H1) // -H1
 #V0 #T0 #HLV0 #HLT10 #H destruct
-elim (tdneq_inv_pair … H2) -H2
+elim (tneqx_inv_pair … H2) -H2
 [ #H elim H -H //
 | #HV0 @(csx_cpx_trans … (ⓐV0.T1)) /2 width=1 by cpx_flat/ -HLT10
   @(IHV … HLV0 … HV0) -HV0 /4 width=5 by csx_cpx_trans, cpx_pair_sn/ (**) (* full auto too slow *) 
index c56f1f718e3d75261543a0fce3bfad488b1d9042..70ee928ffdf951c5c0507c856da9989ab0afc452 100644 (file)
@@ -34,7 +34,7 @@ lemma csx_appl_simple_teqo (h) (G) (L):
 @csx_intro #X #HL #H
 elim (cpx_inv_appl1_simple … HL) -HL //
 #V0 #T0 #HLV0 #HLT10 #H0 destruct
-elim (tdneq_inv_pair … H) -H
+elim (tneqx_inv_pair … H) -H
 [ #H elim H -H //
 | -IHT1 #HV0
   @(csx_cpx_trans … (ⓐV0.T1)) /2 width=1 by cpx_flat/ -HLT10
index b14847da03a338bfb3bda7ebad945b551e82f4fd..258ba510785ae758cae25eabc9f40e8b8a273baf 100644 (file)
@@ -52,13 +52,13 @@ lemma fpbg_fpbs_trans: ∀h,G,G2,L,L2,T,T2. ⦃G,L,T⦄ ≥[h] ⦃G2,L2,T2⦄ 
 qed-.
 
 (* Basic_2A1: uses: fpbg_fleq_trans *)
-lemma fpbg_fdeq_trans: ∀h,G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ >[h] ⦃G,L,T⦄ →
+lemma fpbg_feqx_trans: ∀h,G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ >[h] ⦃G,L,T⦄ →
                        ∀G2,L2,T2. ⦃G,L,T⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T2⦄.
-/3 width=5 by fpbg_fpbq_trans, fpbq_fdeq/ qed-.
+/3 width=5 by fpbg_fpbq_trans, fpbq_feqx/ qed-.
 
 (* Properties with t-bound rt-transition for terms **************************)
 
-lemma cpm_tdneq_cpm_fpbg (h) (G) (L):
+lemma cpm_tneqx_cpm_fpbg (h) (G) (L):
                          ∀n1,T1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → (T1 ≛ T → ⊥) →
                          ∀n2,T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 → ⦃G,L,T1⦄ >[h] ⦃G,L,T2⦄.
 /4 width=5 by fpbq_fpbs, cpm_fpbq, cpm_fpb, ex2_3_intro/ qed. 
index 6fef34261e8d68ea25c7da5de9f135fe384b7f17..35828f20c08d6c4bf427a019960496acfc18d940 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_computation/cpxs_tdeq.ma".
+include "basic_2/rt_computation/cpxs_teqx.ma".
 include "basic_2/rt_computation/fpbs_cpxs.ma".
 include "basic_2/rt_computation/fpbg_fpbs.ma".
 
@@ -21,11 +21,11 @@ include "basic_2/rt_computation/fpbg_fpbs.ma".
 (* Properties with unbound context-sensitive parallel rt-computation ********)
 
 (* Basic_2A1: was: cpxs_fpbg *)
-lemma cpxs_tdneq_fpbg (h): ∀G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 →
+lemma cpxs_tneqx_fpbg (h): ∀G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ⬈*[h] T2 →
                            (T1 ≛ T2 → ⊥) → ⦃G,L,T1⦄ >[h] ⦃G,L,T2⦄.
 #h #G #L #T1 #T2 #H #H0
-elim (cpxs_tdneq_fwd_step_sn … H … H0) -H -H0
-/4 width=5 by cpxs_tdeq_fpbs, fpb_cpx, ex2_3_intro/
+elim (cpxs_tneqx_fwd_step_sn … H … H0) -H -H0
+/4 width=5 by cpxs_teqx_fpbs, fpb_cpx, ex2_3_intro/
 qed.
 
 lemma cpxs_fpbg_trans (h): ∀G1,L1,T1,T. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] T →
index e80960d047dc8f3d91cfda9c1e6469d025c31de2..f7e3f5b230458c7dcd878185e5c1429851cb5428 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/static/fdeq_fdeq.ma".
+include "static_2/static/feqx_feqx.ma".
 include "basic_2/rt_transition/fpbq_fpb.ma".
 include "basic_2/rt_computation/fpbs_fqup.ma".
 include "basic_2/rt_computation/fpbg.ma".
@@ -30,11 +30,11 @@ qed-.
 (* Advanced properties with sort-irrelevant equivalence on closures *********)
 
 (* Basic_2A1: uses: fleq_fpbg_trans *)
-lemma fdeq_fpbg_trans: ∀h,G,G2,L,L2,T,T2. ⦃G,L,T⦄ >[h] ⦃G2,L2,T2⦄ →
+lemma feqx_fpbg_trans: ∀h,G,G2,L,L2,T,T2. ⦃G,L,T⦄ >[h] ⦃G2,L2,T2⦄ →
                        ∀G1,L1,T1. ⦃G1,L1,T1⦄ ≛ ⦃G,L,T⦄ → ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T2⦄.
 #h #G #G2 #L #L2 #T #T2 * #G0 #L0 #T0 #H0 #H02 #G1 #L1 #T1 #H1
-elim (fdeq_fpb_trans …  H1 … H0) -G -L -T
-/4 width=9 by fpbs_strap2, fpbq_fdeq, ex2_3_intro/
+elim (feqx_fpb_trans …  H1 … H0) -G -L -T
+/4 width=9 by fpbs_strap2, fpbq_feqx, ex2_3_intro/
 qed-.
 
 (* Properties with parallel proper rst-reduction on closures ****************)
@@ -51,7 +51,7 @@ lemma fpbq_fpbg_trans: ∀h,G1,G,G2,L1,L,L2,T1,T,T2.
                        ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T2⦄.
 #h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2
 elim (fpbq_inv_fpb … H1) -H1
-/2 width=5 by fdeq_fpbg_trans, fpb_fpbg_trans/
+/2 width=5 by feqx_fpbg_trans, fpb_fpbg_trans/
 qed-.
 
 (* Properties with parallel rst-compuutation on closures ********************)
@@ -78,10 +78,10 @@ lemma fpbs_inv_fpbg: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2
 [ /2 width=1 by or_introl/
 | #G #G2 #L #L2 #T #T2 #_ #H2 * #H1
   elim (fpbq_inv_fpb … H2) -H2 #H2
-  [ /3 width=5 by fdeq_trans, or_introl/
-  | elim (fdeq_fpb_trans … H1 … H2) -G -L -T
-    /4 width=5 by ex2_3_intro, or_intror, fdeq_fpbs/
-  | /3 width=5 by fpbg_fdeq_trans, or_intror/
+  [ /3 width=5 by feqx_trans, or_introl/
+  | elim (feqx_fpb_trans … H1 … H2) -G -L -T
+    /4 width=5 by ex2_3_intro, or_intror, feqx_fpbs/
+  | /3 width=5 by fpbg_feqx_trans, or_intror/
   | /4 width=5 by fpbg_fpbq_trans, fpb_fpbq, or_intror/
   ]
 ]
@@ -93,8 +93,8 @@ lemma fpbs_fpb_trans: ∀h,F1,F2,K1,K2,T1,T2. ⦃F1,K1,T1⦄ ≥[h] ⦃F2,K2,T2
                       ∀G2,L2,U2. ⦃F2,K2,T2⦄ ≻[h] ⦃G2,L2,U2⦄ →
                       ∃∃G1,L1,U1. ⦃F1,K1,T1⦄ ≻[h] ⦃G1,L1,U1⦄ & ⦃G1,L1,U1⦄ ≥[h] ⦃G2,L2,U2⦄.
 #h #F1 #F2 #K1 #K2 #T1 #T2 #H elim (fpbs_inv_fpbg … H) -H
-[ #H12 #G2 #L2 #U2 #H2 elim (fdeq_fpb_trans … H12 … H2) -F2 -K2 -T2
-  /3 width=5 by fdeq_fpbs, ex2_3_intro/
+[ #H12 #G2 #L2 #U2 #H2 elim (feqx_fpb_trans … H12 … H2) -F2 -K2 -T2
+  /3 width=5 by feqx_fpbs, ex2_3_intro/
 | * #H1 #H2 #H3 #H4 #H5 #H6 #H7 #H8 #H9
   @(ex2_3_intro … H4) -H4 /3 width=5 by fpbs_strap1, fpb_fpbq/
 ]
index 746aa695379d1a84b61276a50fb48f9a893b6f06..c2fde98d7193f721986986d7fac9fcc3a230e07c 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_computation/fpbg.ma".
 
 (* Advanced properties with sort-irrelevant equivalence for terms ***********)
 
-lemma fpbg_tdeq_div: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T⦄ →
+lemma fpbg_teqx_div: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T⦄ →
                      ∀T2. T2 ≛ T → ⦃G1,L1,T1⦄ >[h] ⦃G2,L2,T2⦄.
-/4 width=5 by fpbg_fdeq_trans, tdeq_fdeq, tdeq_sym/ qed-.
+/4 width=5 by fpbg_feqx_trans, teqx_feqx, teqx_sym/ qed-.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
index 0921a5e123e09f5bed0f2ccb710e942fc92f4cb9..654110c10a39272bdd51d1027e5e1d78cadfdfff 100644 (file)
@@ -20,9 +20,9 @@ include "basic_2/rt_computation/fpbg.ma".
 (* Properties with unbound rt-computation on full local environments ********)
 
 (* Basic_2A1: uses: lpxs_fpbg *)
-lemma lpxs_rdneq_fpbg: ∀h,G,L1,L2,T. ⦃G,L1⦄ ⊢ ⬈*[h] L2 →
+lemma lpxs_rneqx_fpbg: ∀h,G,L1,L2,T. ⦃G,L1⦄ ⊢ ⬈*[h] L2 →
                        (L1 ≛[T] L2 → ⊥) → ⦃G,L1,T⦄ >[h] ⦃G,L2,T⦄.
 #h #G #L1 #L2 #T #H #H0
-elim (lpxs_rdneq_inv_step_sn … H … H0) -H -H0
-/4 width=7 by fpb_lpx, lpxs_fdeq_fpbs, fdeq_intro_sn, ex2_3_intro/
+elim (lpxs_rneqx_inv_step_sn … H … H0) -H -H0
+/4 width=7 by fpb_lpx, lpxs_feqx_fpbs, feqx_intro_sn, ex2_3_intro/
 qed.
index 9d6f5c2801c0cd12f1ec64ad7e491630bb4739c1..19584074fcd97867efbbc21355f73ca1af241dc0 100644 (file)
@@ -54,22 +54,22 @@ lemma fpbs_strap2: ∀h,G1,G,G2,L1,L,L2,T1,T,T2. ⦃G1,L1,T1⦄ ≽[h] ⦃G,L,T
 /2 width=5 by tri_TC_strap/ qed-.
 
 (* Basic_2A1: uses: lleq_fpbs fleq_fpbs *)
-lemma fdeq_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
-/3 width=1 by fpbq_fpbs, fpbq_fdeq/ qed.
+lemma feqx_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
+/3 width=1 by fpbq_fpbs, fpbq_feqx/ qed.
 
 (* Basic_2A1: uses: fpbs_lleq_trans *)
-lemma fpbs_fdeq_trans: ∀h,G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ ≥[h] ⦃G,L,T⦄ →
+lemma fpbs_feqx_trans: ∀h,G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ ≥[h] ⦃G,L,T⦄ →
                        ∀G2,L2,T2. ⦃G,L,T⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
-/3 width=9 by fpbs_strap1, fpbq_fdeq/ qed-.
+/3 width=9 by fpbs_strap1, fpbq_feqx/ qed-.
 
 (* Basic_2A1: uses: lleq_fpbs_trans *)
-lemma fdeq_fpbs_trans: ∀h,G,G2,L,L2,T,T2. ⦃G,L,T⦄ ≥[h] ⦃G2,L2,T2⦄ →
+lemma feqx_fpbs_trans: ∀h,G,G2,L,L2,T,T2. ⦃G,L,T⦄ ≥[h] ⦃G2,L2,T2⦄ →
                        ∀G1,L1,T1. ⦃G1,L1,T1⦄ ≛ ⦃G,L,T⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
-/3 width=5 by fpbs_strap2, fpbq_fdeq/ qed-.
+/3 width=5 by fpbs_strap2, fpbq_feqx/ qed-.
 
-lemma tdeq_rdeq_lpx_fpbs: ∀h,T1,T2. T1 ≛ T2 → ∀L1,L0. L1 ≛[T2] L0 →
+lemma teqx_reqx_lpx_fpbs: ∀h,T1,T2. T1 ≛ T2 → ∀L1,L0. L1 ≛[T2] L0 →
                           ∀G,L2. ⦃G,L0⦄ ⊢ ⬈[h] L2 → ⦃G,L1,T1⦄ ≥[h] ⦃G,L2,T2⦄.
-/4 width=5 by fdeq_fpbs, fpbs_strap1, fpbq_lpx, fdeq_intro_dx/ qed.
+/4 width=5 by feqx_fpbs, fpbs_strap1, fpbq_lpx, feqx_intro_dx/ qed.
 
 (* Basic_2A1: removed theorems 3:
               fpb_fpbsa_trans fpbs_fpbsa fpbsa_inv_fpbs
index 5dd4e537859d5b530c56b76a397522a0ac2f530e..4d41c9b62b4d74634b5c05503725128b3ff4cbc8 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_transition/cpx_fdeq.ma".
+include "basic_2/rt_transition/cpx_feqx.ma".
 include "basic_2/rt_computation/lpxs_cpxs.ma".
 include "basic_2/rt_computation/fpbs_lpxs.ma".
 
@@ -21,19 +21,19 @@ include "basic_2/rt_computation/fpbs_lpxs.ma".
 (* Properties with unbound context-sensitive parallel rt-transition *********)
 
 (* Basic_2A1: uses: fpbs_cpx_trans_neq *)
-lemma fpbs_cpx_tdneq_trans: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄ →
+lemma fpbs_cpx_tneqx_trans: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄ →
                             ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
                             ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ≥[h] ⦃G2,L2,U2⦄.
 #h #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 #HnTU2
 elim (fpbs_inv_star … H) -H #G0 #L0 #L3 #T0 #T3 #HT10 #H10 #HL03 #H32
-elim (fdeq_cpx_trans … H32 … HTU2) -HTU2 #T4 #HT34 #H42
-lapply (fdeq_tdneq_repl_dx … H32 … H42 … HnTU2) -T2 #HnT34
+elim (feqx_cpx_trans … H32 … HTU2) -HTU2 #T4 #HT34 #H42
+lapply (feqx_tneqx_repl_dx … H32 … H42 … HnTU2) -T2 #HnT34
 lapply (lpxs_cpx_trans … HT34 … HL03) -HT34 #HT34
-elim (fqus_cpxs_trans_tdneq … H10 … HT34 HnT34) -T3 #T2 #HT02 #HnT02 #H24
-elim (tdeq_dec T1 T0) [ #H10 | -HnT02 #HnT10 ]
+elim (fqus_cpxs_trans_tneqx … H10 … HT34 HnT34) -T3 #T2 #HT02 #HnT02 #H24
+elim (teqx_dec T1 T0) [ #H10 | -HnT02 #HnT10 ]
 [ lapply (cpxs_trans … HT10 … HT02) -HT10 -HT02 #HT12
-  elim (cpxs_tdneq_fwd_step_sn … HT12) [2: /3 width=3 by tdeq_canc_sn/ ] -T0 -HT12
-| elim (cpxs_tdneq_fwd_step_sn … HT10 … HnT10) -HT10 -HnT10
+  elim (cpxs_tneqx_fwd_step_sn … HT12) [2: /3 width=3 by teqx_canc_sn/ ] -T0 -HT12
+| elim (cpxs_tneqx_fwd_step_sn … HT10 … HnT10) -HT10 -HnT10
 ]
-/4 width=16 by fpbs_intro_star, cpxs_tdeq_fpbs_trans, ex3_intro/
+/4 width=16 by fpbs_intro_star, cpxs_teqx_fpbs_trans, ex3_intro/
 qed-.
index ec1d680a817ab4e0885d70996a825db685531cce..a0534a0e326ecddee29768424520ca708503336d 100644 (file)
@@ -36,14 +36,14 @@ lemma cpxs_fpbs_trans: ∀h,G1,G2,L1,L2,T,T2. ⦃G1,L1,T⦄ ≥[h] ⦃G2,L2,T2
 /3 width=5 by fpbs_strap2, fpbq_cpx/
 qed-.
 
-lemma cpxs_tdeq_fpbs_trans: ∀h,G1,L1,T1,T. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] T →
+lemma cpxs_teqx_fpbs_trans: ∀h,G1,L1,T1,T. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] T →
                             ∀T0. T ≛ T0 →
                             ∀G2,L2,T2. ⦃G1,L1,T0⦄ ≥[h] ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
-/3 width=3 by cpxs_fpbs_trans, tdeq_fpbs_trans/ qed-.
+/3 width=3 by cpxs_fpbs_trans, teqx_fpbs_trans/ qed-.
 
-lemma cpxs_tdeq_fpbs: ∀h,G,L,T1,T. ⦃G,L⦄ ⊢ T1 ⬈*[h] T →
+lemma cpxs_teqx_fpbs: ∀h,G,L,T1,T. ⦃G,L⦄ ⊢ T1 ⬈*[h] T →
                       ∀T2. T ≛ T2 → ⦃G,L,T1⦄ ≥[h] ⦃G,L,T2⦄.
-/4 width=3 by cpxs_fpbs_trans, fdeq_fpbs, tdeq_fdeq/ qed.
+/4 width=3 by cpxs_fpbs_trans, feqx_fpbs, teqx_feqx/ qed.
 
 (* Properties with star-iterated structural successor for closures **********)
 
index 4a970e58b3d769478556301c9b4521a63fb2a9a7..25f0a3ffb55292315731b2c32120f1a64175f8be 100644 (file)
 (**************************************************************************)
 
 include "static_2/s_computation/fqus_fqup.ma".
-include "static_2/static/fdeq_fqup.ma".
+include "static_2/static/feqx_fqup.ma".
 include "basic_2/rt_computation/fpbs_fqus.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
 
 (* Advanced properties ******************************************************)
 
-lemma tdeq_fpbs_trans: ∀h,T1,T. T1 ≛ T →
+lemma teqx_fpbs_trans: ∀h,T1,T. T1 ≛ T →
                        ∀G1,G2,L1,L2,T2. ⦃G1,L1,T⦄ ≥[h] ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
-/3 width=5 by fdeq_fpbs_trans, tdeq_fdeq/ qed-.
+/3 width=5 by feqx_fpbs_trans, teqx_feqx/ qed-.
 
-lemma fpbs_tdeq_trans: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T⦄ →
+lemma fpbs_teqx_trans: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T⦄ →
                        ∀T2. T ≛ T2 →  ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
-/3 width=5 by fpbs_fdeq_trans, tdeq_fdeq/ qed-.
+/3 width=5 by fpbs_feqx_trans, teqx_feqx/ qed-.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
index d3b96eb96795631c9fe2352629abeae1c13eeb9f..3ab294cf9735b8bd3d44884b0f445e615577c247 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/static/fdeq_fqus.ma".
-include "static_2/static/fdeq_fdeq.ma".
+include "static_2/static/feqx_fqus.ma".
+include "static_2/static/feqx_feqx.ma".
 include "basic_2/rt_computation/cpxs_fqus.ma".
-include "basic_2/rt_computation/cpxs_fdeq.ma".
-include "basic_2/rt_computation/lpxs_fdeq.ma".
+include "basic_2/rt_computation/cpxs_feqx.ma".
+include "basic_2/rt_computation/lpxs_feqx.ma".
 include "basic_2/rt_computation/fpbs_cpxs.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
@@ -41,9 +41,9 @@ lemma lpxs_fpbs_trans: ∀h,G1,G2,L,L2,T1,T2. ⦃G1,L,T1⦄ ≥[h] ⦃G2,L2,T2
 qed-.
 
 (* Basic_2A1: uses: lpxs_lleq_fpbs *)
-lemma lpxs_fdeq_fpbs: ∀h,G1,L1,L,T1. ⦃G1,L1⦄ ⊢ ⬈*[h] L →
+lemma lpxs_feqx_fpbs: ∀h,G1,L1,L,T1. ⦃G1,L1⦄ ⊢ ⬈*[h] L →
                       ∀G2,L2,T2. ⦃G1,L,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
-/3 width=3 by lpxs_fpbs_trans, fdeq_fpbs/ qed.
+/3 width=3 by lpxs_fpbs_trans, feqx_fpbs/ qed.
 
 lemma fpbs_lpx_trans: ∀h,G1,G2,L1,L,T1,T2. ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L,T2⦄ →
                       ∀L2. ⦃G2,L⦄ ⊢ ⬈[h] L2 → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
@@ -62,14 +62,14 @@ lemma cpxs_fqus_lpxs_fpbs: ∀h,G1,L1,T1,T. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] T →
                            ∀L2.⦃G2,L⦄ ⊢ ⬈*[h] L2 → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄.
 /3 width=5 by cpxs_fqus_fpbs, fpbs_lpxs_trans/ qed.
 
-lemma fpbs_cpxs_tdeq_fqup_lpx_trans: ∀h,G1,G3,L1,L3,T1,T3. ⦃G1,L1,T1⦄ ≥ [h] ⦃G3,L3,T3⦄ →
+lemma fpbs_cpxs_teqx_fqup_lpx_trans: ∀h,G1,G3,L1,L3,T1,T3. ⦃G1,L1,T1⦄ ≥ [h] ⦃G3,L3,T3⦄ →
                                      ∀T4. ⦃G3,L3⦄ ⊢ T3 ⬈*[h] T4 → ∀T5. T4 ≛ T5 →
                                      ∀G2,L4,T2. ⦃G3,L3,T5⦄ ⬂+ ⦃G2,L4,T2⦄ →
                                      ∀L2. ⦃G2,L4⦄ ⊢ ⬈[h] L2 → ⦃G1,L1,T1⦄ ≥ [h] ⦃G2,L2,T2⦄.
 #h #G1 #G3 #L1 #L3 #T1 #T3 #H13 #T4 #HT34 #T5 #HT45 #G2 #L4 #T2 #H34 #L2 #HL42  
 @(fpbs_lpx_trans … HL42) -L2 (**) (* full auto too slow *)
 @(fpbs_fqup_trans … H34) -G2 -L4 -T2
-/3 width=3 by fpbs_cpxs_trans, fpbs_tdeq_trans/
+/3 width=3 by fpbs_cpxs_trans, fpbs_teqx_trans/
 qed-.
 
 (* Advanced properties ******************************************************)
@@ -79,7 +79,7 @@ lemma fpbs_intro_star: ∀h,G1,L1,T1,T. ⦃G1,L1⦄ ⊢ T1 ⬈*[h] T →
                        ∀G,L,T0. ⦃G1,L1,T⦄ ⬂* ⦃G,L,T0⦄ →
                        ∀L0. ⦃G,L⦄ ⊢ ⬈*[h] L0 →
                        ∀G2,L2,T2. ⦃G,L0,T0⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2⦄ .
-/3 width=5 by cpxs_fqus_lpxs_fpbs, fpbs_strap1, fpbq_fdeq/ qed.
+/3 width=5 by cpxs_fqus_lpxs_fpbs, fpbs_strap1, fpbq_feqx/ qed.
 
 (* Advanced inversion lemmas *************************************************)
 
@@ -100,10 +100,10 @@ lemma fpbs_inv_star: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≥[h] ⦃G2,L2,T2
     elim (lpx_fqus_trans … H34 … HL10) -L0
     /3 width=9 by lpxs_step_sn, cpxs_trans, ex4_5_intro/
   | #G0 #L0 #T0 #H10 #_ * #G3 #L3 #L4 #T3 #T4 #HT03 #H34 #HL34 #H42
-    elim (fdeq_cpxs_trans … H10 … HT03) -T0 #T0 #HT10 #H03
-    elim (fdeq_fqus_trans … H03 … H34) -G0 -L0 -T3 #G0 #L0 #T3 #H03 #H34
-    elim (fdeq_lpxs_trans … H34 … HL34) -L3 #L3 #HL03 #H34
-    /3 width=13 by fdeq_trans, ex4_5_intro/
+    elim (feqx_cpxs_trans … H10 … HT03) -T0 #T0 #HT10 #H03
+    elim (feqx_fqus_trans … H03 … H34) -G0 -L0 -T3 #G0 #L0 #T3 #H03 #H34
+    elim (feqx_lpxs_trans … H34 … HL34) -L3 #L3 #HL03 #H34
+    /3 width=13 by feqx_trans, ex4_5_intro/
   ]
 ]
 qed-.
index de36632c3bc8c77fe54a1861beee440ae471f858..5b383e05d131faf75e85fd897e49f5d0762a65da 100644 (file)
@@ -39,18 +39,18 @@ generalize in match IHu; -IHu generalize in match H10; -H10
 #G2 #L2 #T2 * -G2 -L2 -T2 [ -IHd -IHc | -IHu -IHd |  ]
 [ /4 width=5 by fpbs_fqup_trans, fqu_fqup/
 | #T2 #HT02 #HnT02
-  elim (fpbs_cpx_tdneq_trans … H10 … HT02 HnT02) -T0
+  elim (fpbs_cpx_tneqx_trans … H10 … HT02 HnT02) -T0
   /3 width=4 by/
 | #L2 #HL02 #HnL02 @(IHd … HL02 HnL02) -IHd -HnL02 [ -IHu -IHc | ]
   [ /3 width=3 by fpbs_lpxs_trans, lpx_lpxs/
   | #G3 #L3 #T3 #H03 #_
     elim (lpx_fqup_trans … H03 … HL02) -L2 #L4 #T4 #HT04 #H43 #HL43
-    elim (tdeq_dec T0 T4) [ -IHc -HT04 #HT04 | -IHu #HnT04 ]
-    [ elim (tdeq_fqup_trans … H43 … HT04) -T4 #L2 #T4 #H04 #HT43 #HL24
-      /4 width=7 by fsb_fpbs_trans, tdeq_rdeq_lpx_fpbs, fpbs_fqup_trans/
-    | elim (cpxs_tdneq_fwd_step_sn … HT04 HnT04) -HT04 -HnT04 #T2 #T5 #HT02 #HnT02 #HT25 #HT54
-      elim (fpbs_cpx_tdneq_trans … H10 … HT02 HnT02) -T0 #T0 #HT10 #HnT10 #H02
-      /3 width=14 by fpbs_cpxs_tdeq_fqup_lpx_trans/
+    elim (teqx_dec T0 T4) [ -IHc -HT04 #HT04 | -IHu #HnT04 ]
+    [ elim (teqx_fqup_trans … H43 … HT04) -T4 #L2 #T4 #H04 #HT43 #HL24
+      /4 width=7 by fsb_fpbs_trans, teqx_reqx_lpx_fpbs, fpbs_fqup_trans/
+    | elim (cpxs_tneqx_fwd_step_sn … HT04 HnT04) -HT04 -HnT04 #T2 #T5 #HT02 #HnT02 #HT25 #HT54
+      elim (fpbs_cpx_tneqx_trans … H10 … HT02 HnT02) -T0 #T0 #HT10 #HnT10 #H02
+      /3 width=14 by fpbs_cpxs_teqx_fqup_lpx_trans/
     ]
   ]
 ]
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fdeq.ma
deleted file mode 100644 (file)
index a24b46f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_transition/fpb_fdeq.ma".
-include "basic_2/rt_computation/fsb.ma".
-
-(* STRONGLY NORMALIZING CLOSURES FOR PARALLEL RST-TRANSITION ****************)
-
-(* Properties with sort-irrelevant equivalence for closures *****************)
-
-lemma fsb_fdeq_trans: ∀h,G1,L1,T1. ≥[h] 𝐒⦃G1,L1,T1⦄ →
-                      ∀G2,L2,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ≥[h] 𝐒⦃G2,L2,T2⦄.
-#h #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1 
-#G1 #L1 #T1 #_ #IH #G2 #L2 #T2 #H12
-@fsb_intro #G #L #T #H2
-elim (fdeq_fpb_trans … H12 … H2) -G2 -L2 -T2
-/2 width=5 by/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_feqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_feqx.ma
new file mode 100644 (file)
index 0000000..b55d190
--- /dev/null
@@ -0,0 +1,29 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_transition/fpb_feqx.ma".
+include "basic_2/rt_computation/fsb.ma".
+
+(* STRONGLY NORMALIZING CLOSURES FOR PARALLEL RST-TRANSITION ****************)
+
+(* Properties with sort-irrelevant equivalence for closures *****************)
+
+lemma fsb_feqx_trans: ∀h,G1,L1,T1. ≥[h] 𝐒⦃G1,L1,T1⦄ →
+                      ∀G2,L2,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ≥[h] 𝐒⦃G2,L2,T2⦄.
+#h #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1 
+#G1 #L1 #T1 #_ #IH #G2 #L2 #T2 #H12
+@fsb_intro #G #L #T #H2
+elim (feqx_fpb_trans … H12 … H2) -G2 -L2 -T2
+/2 width=5 by/
+qed-.
index 0ebebad3aaef9fddce10d502768f9d37a032215d..1d8e0eb7d608fe1af0bca3a4d9e5f4b1e034a56c 100644 (file)
@@ -13,7 +13,7 @@
 (**************************************************************************)
 
 include "basic_2/rt_computation/fpbg_fpbs.ma".
-include "basic_2/rt_computation/fsb_fdeq.ma".
+include "basic_2/rt_computation/fsb_feqx.ma".
 
 (* STRONGLY NORMALIZING CLOSURES FOR PARALLEL RST-TRANSITION ****************)
 
@@ -24,7 +24,7 @@ lemma fsb_fpbs_trans: ∀h,G1,L1,T1. ≥[h] 𝐒⦃G1,L1,T1⦄ →
 #h #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
 #G1 #L1 #T1 #H1 #IH #G2 #L2 #T2 #H12
 elim (fpbs_inv_fpbg … H12) -H12
-[ -IH /2 width=5 by fsb_fdeq_trans/
+[ -IH /2 width=5 by fsb_feqx_trans/
 | -H1 * /2 width=5 by/
 ]
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma
deleted file mode 100644 (file)
index e21438d..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/fdeq.ma".
-include "basic_2/rt_computation/lpxs_rdeq.ma".
-
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
-
-(* Properties with sort-irrelevant equivalence on closures ******************)
-
-lemma fdeq_lpxs_trans (h): ∀G1,G2,L1,L0,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L0,T2⦄ →
-                           ∀L2. ⦃G2,L0⦄ ⊢⬈*[h] L2 →
-                           ∃∃L. ⦃G1,L1⦄ ⊢⬈*[h] L & ⦃G1,L,T1⦄ ≛ ⦃G2,L2,T2⦄.
-#h #G1 #G2 #L1 #L0 #T1 #T2 #H1 #L2 #HL02
-elim (fdeq_inv_gen_dx … H1) -H1 #HG #HL10 #HT12 destruct
-elim (rdeq_lpxs_trans … HL02 … HL10) -L0 #L0 #HL10 #HL02
-/3 width=3 by fdeq_intro_dx, ex2_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_feqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_feqx.ma
new file mode 100644 (file)
index 0000000..e6fc7f0
--- /dev/null
@@ -0,0 +1,29 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/feqx.ma".
+include "basic_2/rt_computation/lpxs_reqx.ma".
+
+(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+
+(* Properties with sort-irrelevant equivalence on closures ******************)
+
+lemma feqx_lpxs_trans (h): ∀G1,G2,L1,L0,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L0,T2⦄ →
+                           ∀L2. ⦃G2,L0⦄ ⊢⬈*[h] L2 →
+                           ∃∃L. ⦃G1,L1⦄ ⊢⬈*[h] L & ⦃G1,L,T1⦄ ≛ ⦃G2,L2,T2⦄.
+#h #G1 #G2 #L1 #L0 #T1 #T2 #H1 #L2 #HL02
+elim (feqx_inv_gen_dx … H1) -H1 #HG #HL10 #HT12 destruct
+elim (reqx_lpxs_trans … HL02 … HL10) -L0 #L0 #HL10 #HL02
+/3 width=3 by feqx_intro_dx, ex2_intro/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma
deleted file mode 100644 (file)
index dd0a02c..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "basic_2/rt_transition/lpx_rdeq.ma".
-include "basic_2/rt_computation/lpxs_lpx.ma".
-
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
-
-(* Properties with sort-irrelevant equivalence on referred entries **********)
-
-(* Basic_2A1: uses: lleq_lpxs_trans *)
-lemma rdeq_lpxs_trans (h) (G) (T:term):
-                      ∀L2,K2. ⦃G,L2⦄ ⊢ ⬈*[h] K2 →
-                      ∀L1. L1 ≛[T] L2 →
-                      ∃∃K1. ⦃G,L1⦄ ⊢ ⬈*[h] K1 & K1 ≛[T] K2.
-#h #G #T #L2 #K2 #H @(lpxs_ind_sn … H) -L2 /2 width=3 by ex2_intro/
-#L #L2 #HL2 #_ #IH #L1 #HT
-elim (rdeq_lpx_trans … HL2 … HT) -L #L #HL1 #HT
-elim (IH … HT) -L2 #K #HLK #HT
-/3 width=3 by lpxs_step_sn, ex2_intro/
-qed-.
-
-(* Basic_2A1: uses: lpxs_nlleq_inv_step_sn *)
-lemma lpxs_rdneq_inv_step_sn (h) (G) (T:term):
-                             ∀L1,L2. ⦃G,L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) →
-                             ∃∃L,L0. ⦃G,L1⦄ ⊢ ⬈[h] L & L1 ≛[T] L → ⊥ &
-                                     ⦃G,L⦄ ⊢ ⬈*[h] L0 & L0 ≛[T] L2.
-#h #G #T #L1 #L2 #H @(lpxs_ind_sn … H) -L1
-[ #H elim H -H //
-| #L1 #L #H1 #H2 #IH2 #H12 elim (rdeq_dec L1 L T) #H
-  [ -H1 -H2 elim IH2 -IH2 /3 width=3 by rdeq_trans/ -H12
-    #L0 #L3 #H1 #H2 #H3 #H4 lapply (rdeq_rdneq_trans … H … H2) -H2
-    #H2 elim (rdeq_lpx_trans … H1 … H) -L
-    #L #H1 #H lapply (rdneq_rdeq_div … H … H2) -H2
-    #H2 elim (rdeq_lpxs_trans … H3 … H) -L0
-    /3 width=8 by rdeq_trans, ex4_2_intro/
-  | -H12 -IH2 /3 width=6 by ex4_2_intro/
-  ]
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_reqx.ma
new file mode 100644 (file)
index 0000000..16c9304
--- /dev/null
@@ -0,0 +1,51 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "basic_2/rt_transition/lpx_reqx.ma".
+include "basic_2/rt_computation/lpxs_lpx.ma".
+
+(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+
+(* Properties with sort-irrelevant equivalence on referred entries **********)
+
+(* Basic_2A1: uses: lleq_lpxs_trans *)
+lemma reqx_lpxs_trans (h) (G) (T:term):
+                      ∀L2,K2. ⦃G,L2⦄ ⊢ ⬈*[h] K2 →
+                      ∀L1. L1 ≛[T] L2 →
+                      ∃∃K1. ⦃G,L1⦄ ⊢ ⬈*[h] K1 & K1 ≛[T] K2.
+#h #G #T #L2 #K2 #H @(lpxs_ind_sn … H) -L2 /2 width=3 by ex2_intro/
+#L #L2 #HL2 #_ #IH #L1 #HT
+elim (reqx_lpx_trans … HL2 … HT) -L #L #HL1 #HT
+elim (IH … HT) -L2 #K #HLK #HT
+/3 width=3 by lpxs_step_sn, ex2_intro/
+qed-.
+
+(* Basic_2A1: uses: lpxs_nlleq_inv_step_sn *)
+lemma lpxs_rneqx_inv_step_sn (h) (G) (T:term):
+                             ∀L1,L2. ⦃G,L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) →
+                             ∃∃L,L0. ⦃G,L1⦄ ⊢ ⬈[h] L & L1 ≛[T] L → ⊥ &
+                                     ⦃G,L⦄ ⊢ ⬈*[h] L0 & L0 ≛[T] L2.
+#h #G #T #L1 #L2 #H @(lpxs_ind_sn … H) -L1
+[ #H elim H -H //
+| #L1 #L #H1 #H2 #IH2 #H12 elim (reqx_dec L1 L T) #H
+  [ -H1 -H2 elim IH2 -IH2 /3 width=3 by reqx_trans/ -H12
+    #L0 #L3 #H1 #H2 #H3 #H4 lapply (reqx_rneqx_trans … H … H2) -H2
+    #H2 elim (reqx_lpx_trans … H1 … H) -L
+    #L #H1 #H lapply (rneqx_reqx_div … H … H2) -H2
+    #H2 elim (reqx_lpxs_trans … H3 … H) -L0
+    /3 width=8 by reqx_trans, ex4_2_intro/
+  | -H12 -IH2 /3 width=6 by ex4_2_intro/
+  ]
+]
+qed-.
index 43e4b046135cdf4e7933b071c21df500d536b6fd..06500ddc957c4e009eaaf67a08f519164eb90708 100644 (file)
 (**************************************************************************)
 
 include "basic_2/notation/relations/predtysnstrong_4.ma".
-include "static_2/static/rdeq.ma".
+include "static_2/static/reqx.ma".
 include "basic_2/rt_transition/lpx.ma".
 
 (* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
 
 definition rsx (h) (G) (T): predicate lenv ≝
-           SN … (lpx h G) (rdeq T).
+           SN … (lpx h G) (reqx T).
 
 interpretation
    "strong normalization for unbound context-sensitive parallel rt-transition on referred entries (local environment)"
@@ -56,7 +56,7 @@ lemma rsx_fwd_pair_sn (h) (G):
 #h #G #I #L #V #T #H
 @(rsx_ind … H) -L #L1 #_ #IHL1
 @rsx_intro #L2 #HL12 #HnL12
-/4 width=3 by rdeq_fwd_pair_sn/
+/4 width=3 by reqx_fwd_pair_sn/
 qed-.
 
 (* Basic_2A1: uses: lsx_fwd_flat_dx *)
@@ -66,7 +66,7 @@ lemma rsx_fwd_flat_dx (h) (G):
 #h #G #I #L #V #T #H 
 @(rsx_ind … H) -L #L1 #_ #IHL1
 @rsx_intro #L2 #HL12 #HnL12
-/4 width=3 by rdeq_fwd_flat_dx/
+/4 width=3 by reqx_fwd_flat_dx/
 qed-.
 
 fact rsx_fwd_pair_aux (h) (G):
@@ -74,7 +74,7 @@ fact rsx_fwd_pair_aux (h) (G):
      ∀I,K,V. L = K.ⓑ{I}V → G ⊢ ⬈*[h,V] 𝐒⦃K⦄.
 #h #G #L #H
 @(rsx_ind … H) -L #L1 #_ #IH #I #K1 #V #H destruct
-/5 width=5 by lpx_pair, rsx_intro, rdeq_fwd_zero_pair/
+/5 width=5 by lpx_pair, rsx_intro, reqx_fwd_zero_pair/
 qed-.
 
 lemma rsx_fwd_pair (h) (G):
index a4c10c8e99b76f1f5f81394a1980da4ea4b6c84f..8e7c7793a2dacdf8c2e99fe16331415642af8564 100644 (file)
@@ -28,7 +28,7 @@ fact rsx_fwd_lref_pair_csx_aux (h) (G):
 @csx_intro #V2 #HV12 #HnV12
 @(IH … I) -IH [1,4: // | -HnV12 | -G #H ]
 [ /2 width=1 by lpx_pair/
-| elim (rdeq_inv_zero_pair_sn … H) -H #Y #X #_ #H1 #H2 destruct -I
+| elim (reqx_inv_zero_pair_sn … H) -H #Y #X #_ #H1 #H2 destruct -I
   /2 width=1 by/
 ]
 qed-.
@@ -85,8 +85,8 @@ lemma rsx_lref_pair_lpxs (h) (G):
 @(rsx_ind … H) -K2 #K0 #HK0 #IHK0 #HK10 #I
 @rsx_intro #Y #HY #HnY
 elim (lpx_inv_pair_sn … HY) -HY #K2 #V2 #HK02 #HV02 #H destruct
-elim (tdeq_dec V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnY ]
-[ /5 width=5 by rsx_rdeq_trans, lpxs_step_dx, rdeq_pair/
+elim (teqx_dec V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnY ]
+[ /5 width=5 by rsx_reqx_trans, lpxs_step_dx, reqx_pair/
 | @(IHV0 … HnV02) -IHV0 -HnV02
   [ /2 width=3 by lpxs_cpx_trans/
   | /3 width=3 by rsx_lpx_trans, rsx_cpx_trans/
index 15c7d4dfb45b2e01df3999ccee5d1fe195e39963..7abac34cd89a9d55f6d60820b4b953878024f853 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/static/rdeq_drops.ma".
+include "static_2/static/reqx_drops.ma".
 include "basic_2/rt_transition/lpx_drops.ma".
 include "basic_2/rt_computation/rsx_length.ma".
 include "basic_2/rt_computation/rsx_fqup.ma".
@@ -27,7 +27,7 @@ lemma rsx_lifts (h) (G): d_liftable1_isuni … (λL,T. G ⊢ ⬈*[h,T] 𝐒⦃L
 #h #G #K #T #H @(rsx_ind … H) -K
 #K1 #_ #IH #b #f #L1 #HLK1 #Hf #U #HTU @rsx_intro
 #L2 #HL12 #HnL12 elim (lpx_drops_conf … HLK1 … HL12) 
-/5 width=9 by rdeq_lifts_bi, lpx_fwd_length/
+/5 width=9 by reqx_lifts_bi, lpx_fwd_length/
 qed-.
 
 (* Inversion lemmas on relocation *******************************************)
@@ -37,7 +37,7 @@ lemma rsx_inv_lifts (h) (G): d_deliftable1_isuni … (λL,T. G ⊢ ⬈*[h,T] 
 #h #G #L #U #H @(rsx_ind … H) -L
 #L1 #_ #IH #b #f #K1 #HLK1 #Hf #T #HTU @rsx_intro
 #K2 #HK12 #HnK12 elim (drops_lpx_trans … HLK1 … HK12) -HK12
-/4 width=10 by rdeq_inv_lifts_bi/
+/4 width=10 by reqx_inv_lifts_bi/
 qed-.
 
 (* Advanced properties ******************************************************)
index b41e150feb62b90220434212ee30883aa7c8d0e7..bd56111e13cfa38bbffcd707aacbe1591216233c 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/static/rdeq_fqup.ma".
+include "static_2/static/reqx_fqup.ma".
 include "basic_2/rt_computation/rsx.ma".
 
 (* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
@@ -38,7 +38,7 @@ lemma rsx_fwd_bind_dx_void (h) (G):
 @(rsx_ind … H) -L #L1 #_ #IH
 @rsx_intro #Y #H #HT
 elim (lpx_inv_unit_sn … H) -H #L2 #HL12 #H destruct
-/4 width=4 by rdeq_fwd_bind_dx_void/
+/4 width=4 by reqx_fwd_bind_dx_void/
 qed-.
 
 (* Advanced inversion lemmas ************************************************)
index ae3d769155e83f54cbc15437953b4767b7796866..1954e6b6be3ad9da06194886cb0fa442e57c12bd 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/static/rdeq_length.ma".
+include "static_2/static/reqx_length.ma".
 include "basic_2/rt_transition/lpx_length.ma".
 include "basic_2/rt_computation/rsx.ma".
 
@@ -23,18 +23,18 @@ include "basic_2/rt_computation/rsx.ma".
 (* Basic_2A1: uses: lsx_sort *)
 lemma rsx_sort (h) (G): ∀L,s. G ⊢ ⬈*[h,⋆s] 𝐒⦃L⦄.
 #h #G #L1 #s @rsx_intro #L2 #H #Hs
-elim Hs -Hs /3 width=3 by lpx_fwd_length, rdeq_sort_length/
+elim Hs -Hs /3 width=3 by lpx_fwd_length, reqx_sort_length/
 qed.
 
 (* Basic_2A1: uses: lsx_gref *)
 lemma rsx_gref (h) (G): ∀L,l. G ⊢ ⬈*[h,§l] 𝐒⦃L⦄.
 #h #G #L1 #s @rsx_intro #L2 #H #Hs
-elim Hs -Hs /3 width=3 by lpx_fwd_length, rdeq_gref_length/
+elim Hs -Hs /3 width=3 by lpx_fwd_length, reqx_gref_length/
 qed.
 
 lemma rsx_unit (h) (G): ∀I,L. G ⊢ ⬈*[h,#0] 𝐒⦃L.ⓤ{I}⦄.
 #h #G #I #L1 @rsx_intro
 #Y #HY #HnY elim HnY -HnY
 elim (lpx_inv_unit_sn … HY) -HY #L2 #HL12 #H destruct
-/3 width=3 by lpx_fwd_length, rdeq_unit_length/
+/3 width=3 by lpx_fwd_length, reqx_unit_length/
 qed.
index 9598d49d0c41c47d62dcaed5dab34005edcb25dc..bdb9c7de38e6a4f8155406f31c8c8910a4c727a5 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_computation/lpxs_rdeq.ma".
+include "basic_2/rt_computation/lpxs_reqx.ma".
 include "basic_2/rt_computation/lpxs_lpxs.ma".
 include "basic_2/rt_computation/rsx_rsx.ma".
 
@@ -36,7 +36,7 @@ qed-.
 
 (* Eliminators with unbound rt-computation for full local environments ******)
 
-lemma rsx_ind_lpxs_rdeq (h) (G) (T) (Q:predicate lenv):
+lemma rsx_ind_lpxs_reqx (h) (G) (T) (Q:predicate lenv):
       (∀L1. G ⊢ ⬈*[h,T] 𝐒⦃L1⦄ →
             (∀L2. ⦃G,L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
             Q L1
@@ -45,18 +45,18 @@ lemma rsx_ind_lpxs_rdeq (h) (G) (T) (Q:predicate lenv):
       ∀L0. ⦃G,L1⦄ ⊢ ⬈*[h] L0 → ∀L2. L0 ≛[T] L2 → Q L2.
 #h #G #T #Q #IH #L1 #H @(rsx_ind … H) -L1
 #L1 #HL1 #IH1 #L0 #HL10 #L2 #HL02
-@IH -IH /3 width=3 by rsx_lpxs_trans, rsx_rdeq_trans/ -HL1 #K2 #HLK2 #HnLK2
-lapply (rdeq_rdneq_trans … HL02 … HnLK2) -HnLK2 #H
-elim (rdeq_lpxs_trans … HLK2 … HL02) -L2 #K0 #HLK0 #HK02
-lapply (rdneq_rdeq_canc_dx … H … HK02) -H #HnLK0
-elim (rdeq_dec L1 L0 T) #H
-[ lapply (rdeq_rdneq_trans … H … HnLK0) -H -HnLK0 #Hn10
+@IH -IH /3 width=3 by rsx_lpxs_trans, rsx_reqx_trans/ -HL1 #K2 #HLK2 #HnLK2
+lapply (reqx_rneqx_trans … HL02 … HnLK2) -HnLK2 #H
+elim (reqx_lpxs_trans … HLK2 … HL02) -L2 #K0 #HLK0 #HK02
+lapply (rneqx_reqx_canc_dx … H … HK02) -H #HnLK0
+elim (reqx_dec L1 L0 T) #H
+[ lapply (reqx_rneqx_trans … H … HnLK0) -H -HnLK0 #Hn10
   lapply (lpxs_trans … HL10 … HLK0) -L0 #H10
-  elim (lpxs_rdneq_inv_step_sn … H10 …  Hn10) -H10 -Hn10
-  /3 width=8 by rdeq_trans/
-| elim (lpxs_rdneq_inv_step_sn … HL10 … H) -HL10 -H #L #K #HL1 #HnL1 #HLK #HKL0
-  elim (rdeq_lpxs_trans … HLK0 … HKL0) -L0
-  /3 width=8 by lpxs_trans, rdeq_trans/
+  elim (lpxs_rneqx_inv_step_sn … H10 …  Hn10) -H10 -Hn10
+  /3 width=8 by reqx_trans/
+| elim (lpxs_rneqx_inv_step_sn … HL10 … H) -HL10 -H #L #K #HL1 #HnL1 #HLK #HKL0
+  elim (reqx_lpxs_trans … HLK0 … HKL0) -L0
+  /3 width=8 by lpxs_trans, reqx_trans/
 ]
 qed-.
 
@@ -68,7 +68,7 @@ lemma rsx_ind_lpxs (h) (G) (T) (Q:predicate lenv):
       ) →
       ∀L. G ⊢ ⬈*[h,T] 𝐒⦃L⦄  → Q L.
 #h #G #T #Q #IH #L #HL
-@(rsx_ind_lpxs_rdeq … IH … HL) -IH -HL // (**) (* full auto fails *)
+@(rsx_ind_lpxs_reqx … IH … HL) -IH -HL // (**) (* full auto fails *)
 qed-.
 
 (* Advanced properties ******************************************************)
@@ -83,10 +83,10 @@ fact rsx_bind_lpxs_aux (h) (G):
 #Y #HY #IHY #L2 #H #HL12 destruct
 @rsx_intro_lpxs #L0 #HL20
 lapply (lpxs_trans … HL12 … HL20) #HL10 #H
-elim (rdneq_inv_bind … H) -H [ -IHY | -HY -IHL1 -HL12 ]
-[ #HnV elim (rdeq_dec L1 L2 V)
+elim (rneqx_inv_bind … H) -H [ -IHY | -HY -IHL1 -HL12 ]
+[ #HnV elim (reqx_dec L1 L2 V)
   [ #HV @(IHL1 … HL10) -IHL1 -HL12 -HL10
-    /3 width=4 by rsx_lpxs_trans, lpxs_bind_refl_dx, rdeq_canc_sn/ (**) (* full auto too slow *)
+    /3 width=4 by rsx_lpxs_trans, lpxs_bind_refl_dx, reqx_canc_sn/ (**) (* full auto too slow *)
   | -HnV -HL10 /4 width=4 by rsx_lpxs_trans, lpxs_bind_refl_dx/
   ]
 | /3 width=4 by lpxs_bind_refl_dx/
@@ -109,10 +109,10 @@ lemma rsx_flat_lpxs (h) (G):
 #L1 #HL1 #IHL1 #L2 #T #H @(rsx_ind_lpxs … H) -L2
 #L2 #HL2 #IHL2 #HL12 @rsx_intro_lpxs
 #L0 #HL20 lapply (lpxs_trans … HL12 … HL20)
-#HL10 #H elim (rdneq_inv_flat … H) -H [ -HL1 -IHL2 | -HL2 -IHL1 ]
-[ #HnV elim (rdeq_dec L1 L2 V)
+#HL10 #H elim (rneqx_inv_flat … H) -H [ -HL1 -IHL2 | -HL2 -IHL1 ]
+[ #HnV elim (reqx_dec L1 L2 V)
   [ #HV @(IHL1 … HL10) -IHL1 -HL12 -HL10
-    /3 width=5 by rsx_lpxs_trans, rdeq_canc_sn/ (**) (* full auto too slow: 47s *)
+    /3 width=5 by rsx_lpxs_trans, reqx_canc_sn/ (**) (* full auto too slow: 47s *)
   | -HnV -HL10 /3 width=4 by rsx_lpxs_trans/
   ]
 | /3 width=3 by/
@@ -135,10 +135,10 @@ fact rsx_bind_lpxs_void_aux (h) (G):
 #Y #HY #IHY #L2 #H #HL12 destruct
 @rsx_intro_lpxs #L0 #HL20
 lapply (lpxs_trans … HL12 … HL20) #HL10 #H
-elim (rdneq_inv_bind_void … H) -H [ -IHY | -HY -IHL1 -HL12 ]
-[ #HnV elim (rdeq_dec L1 L2 V)
+elim (rneqx_inv_bind_void … H) -H [ -IHY | -HY -IHL1 -HL12 ]
+[ #HnV elim (reqx_dec L1 L2 V)
   [ #HV @(IHL1 … HL10) -IHL1 -HL12 -HL10
-    /3 width=6 by rsx_lpxs_trans, lpxs_bind_refl_dx, rdeq_canc_sn/ (**) (* full auto too slow *)
+    /3 width=6 by rsx_lpxs_trans, lpxs_bind_refl_dx, reqx_canc_sn/ (**) (* full auto too slow *)
   | -HnV -HL10 /4 width=4 by rsx_lpxs_trans, lpxs_bind_refl_dx/
   ]
 | /3 width=4 by lpxs_bind_refl_dx/
index f801c96b7b0387af70a115668160b80448324a6c..0c31405a8982fe15d411d3b264c91fc835e435c3 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_transition/lpx_rdeq.ma".
+include "basic_2/rt_transition/lpx_reqx.ma".
 include "basic_2/rt_computation/rsx.ma".
 
 (* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
@@ -20,13 +20,13 @@ include "basic_2/rt_computation/rsx.ma".
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_lleq_trans *)
-lemma rsx_rdeq_trans (h) (G):
+lemma rsx_reqx_trans (h) (G):
       ∀L1,T. G ⊢ ⬈*[h,T] 𝐒⦃L1⦄ →
       ∀L2. L1 ≛[T] L2 → G ⊢ ⬈*[h,T] 𝐒⦃L2⦄.
 #h #G #L1 #T #H @(rsx_ind … H) -L1
 #L1 #_ #IHL1 #L2 #HL12 @rsx_intro
-#L #HL2 #HnL2 elim (rdeq_lpx_trans … HL2 … HL12) -HL2
-/4 width=5 by rdeq_repl/
+#L #HL2 #HnL2 elim (reqx_lpx_trans … HL2 … HL12) -HL2
+/4 width=5 by reqx_repl/
 qed-.
 
 (* Basic_2A1: uses: lsx_lpx_trans *)
@@ -34,5 +34,5 @@ lemma rsx_lpx_trans (h) (G):
       ∀L1,T. G ⊢ ⬈*[h,T] 𝐒⦃L1⦄ →
       ∀L2. ⦃G,L1⦄ ⊢ ⬈[h] L2 → G ⊢ ⬈*[h,T] 𝐒⦃L2⦄.
 #h #G #L1 #T #H @(rsx_ind … H) -L1 #L1 #HL1 #IHL1 #L2 #HL12
-elim (rdeq_dec L1 L2 T) /3 width=4 by rsx_rdeq_trans/
+elim (reqx_dec L1 L2 T) /3 width=4 by rsx_reqx_trans/
 qed-.
index f37dc4184719f9c3e5dd485ab3bc78a2fd3c3f13..76203c5189455b5e8f6ee708193e8faccd485aea 100644 (file)
@@ -12,8 +12,8 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_computation/cpre_csx.ma".
-include "basic_2/rt_computation/cpre_cpre.ma".
+include "basic_2/rt_computation/cprre_csx.ma".
+include "basic_2/rt_computation/cprre_cprre.ma".
 include "basic_2/rt_equivalence/cpcs_cprs.ma".
 
 (* CONTEXT-SENSITIVE PARALLEL R-EQUIVALENCE FOR TERMS ***********************)
@@ -25,16 +25,16 @@ lemma csx_cpcs_dec (h) (G) (L):
       ∀T1. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ → ∀T2. ⦃G,L⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄ →
       Decidable … (⦃G,L⦄ ⊢ T1 ⬌*[h] T2).
 #h #G #L #T1 #HT1 #T2 #HT2
-elim (cpre_total_csx … HT1) -HT1 #U1 #HTU1
-elim (cpre_total_csx … HT2) -HT2 #U2 #HTU2
+elim (cprre_total_csx … HT1) -HT1 #U1 #HTU1
+elim (cprre_total_csx … HT2) -HT2 #U2 #HTU2
 elim (eq_term_dec U1 U2) [ #H destruct | #HnU12 ]
 [ cases HTU1 -HTU1 #HTU1 #_
   cases HTU2 -HTU2 #HTU2 #_
   /3 width=3 by cprs_div, or_introl/
 | @or_intror #H
   elim (cpcs_inv_cprs … H) -H #T0 #HT10 #HT20
-  lapply (cpre_cprs_conf … HT10 … HTU1) -T1 #H1
-  lapply (cpre_cprs_conf … HT20 … HTU2) -T2 #H2
-  /3 width=6 by cpre_mono/
+  lapply (cprre_cprs_conf … HT10 … HTU1) -T1 #H1
+  lapply (cprre_cprs_conf … HT20 … HTU2) -T2 #H2
+  /3 width=6 by cprre_mono/
 ]
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_tdeq.ma
deleted file mode 100644 (file)
index 00d42e1..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/relocation/lifts_tdeq.ma".
-include "basic_2/rt_transition/cpr_drops_basic.ma".
-include "basic_2/rt_transition/cnr_simple.ma".
-include "basic_2/rt_transition/cnr_drops.ma".
-
-(* NORMAL TERMS FOR CONTEXT-SENSITIVE R-TRANSITION **************************)
-
-(* Properties with context-free sort-irrelevant equivalence for terms *******)
-
-(* Basic_1: was: nf2_dec *)
-(* Basic_2A1: uses: cnr_dec *)
-lemma cnr_dec_tdeq (h) (G) (L):
-      ∀T1. ∨∨ ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃T1⦄
-            | ∃∃T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 & (T1 ≛ T2 → ⊥).
-#h #G #L #T1
-@(fqup_wf_ind_eq (Ⓣ) … G L T1) -G -L -T1 #G0 #L0 #T0 #IH #G #L * *
-[ #s #HG #HL #HT destruct -IH
-  /3 width=4 by cnr_sort, or_introl/
-| #i #HG #HL #HT destruct -IH
-  elim (drops_F_uni L i)
-  [ /3 width=6 by cnr_lref_atom, or_introl/
-  | * * [ #I | * #V ] #K #HLK
-    [ /3 width=7 by cnr_lref_unit, or_introl/
-    | elim (lifts_total V 𝐔❴↑i❵) #W #HVW
-      @or_intror @(ex2_intro … W) [ /2 width=6 by cpm_delta_drops/ ] #H
-      lapply (tdeq_inv_lref1 … H) -H #H destruct
-      /2 width=5 by lifts_inv_lref2_uni_lt/
-    | /3 width=7 by cnr_lref_abst, or_introl/
-    ]
-  ]
-| #l #HG #HL #HT destruct -IH
-  /3 width=4 by cnr_gref, or_introl/
-| #p * [ cases p ] #V1 #T1 #HG #HL #HT destruct
-  [ elim (cpr_subst h G (L.ⓓV1) T1 0 L V1) [| /2 width=1 by drops_refl/ ] #T2 #X2 #HT12 #HXT2 -IH
-    elim (tdeq_dec T1 T2) [ -HT12 #HT12 | #HnT12 ]
-    [ elim (tdeq_inv_lifts_dx … HT12 … HXT2) -T2 #X1 #HXT1 #_ -X2
-      @or_intror @(ex2_intro … X1) [ /2 width=3 by cpm_zeta/ ] #H
-      /2 width=7 by tdeq_lifts_inv_pair_sn/
-    | @or_intror @(ex2_intro … (+ⓓV1.T2)) [ /2 width=1 by cpm_bind/ ] #H
-      elim (tdeq_inv_pair … H) -H /2 width=1 by/
-    ]
-  | elim (IH G L V1) [ elim (IH G (L.ⓓV1) T1) [| * | // ] | * | // ] -IH
-    [ #HT1 #HV1 /3 width=6 by cnr_abbr_neg, or_introl/
-    | #T2 #HT12 #HnT12 #_
-      @or_intror @(ex2_intro … (-ⓓV1.T2)) [ /2 width=1 by cpm_bind/ ] #H
-      elim (tdeq_inv_pair … H) -H /2 width=1 by/
-    | #V2 #HV12 #HnV12
-      @or_intror @(ex2_intro … (-ⓓV2.T1)) [ /2 width=1 by cpr_pair_sn/ ] #H
-      elim (tdeq_inv_pair … H) -H /2 width=1 by/
-    ]
-  | elim (IH G L V1) [ elim (IH G (L.ⓛV1) T1) [| * | // ] | * | // ] -IH
-    [ #HT1 #HV1 /3 width=6 by cnr_abst, or_introl/
-    | #T2 #HT12 #HnT12 #_
-      @or_intror @(ex2_intro … (ⓛ{p}V1.T2)) [ /2 width=1 by cpm_bind/ ] #H
-      elim (tdeq_inv_pair … H) -H /2 width=1 by/
-    | #V2 #HV12 #HnV12
-      @or_intror @(ex2_intro … (ⓛ{p}V2.T1)) [ /2 width=1 by cpr_pair_sn/ ] #H
-      elim (tdeq_inv_pair … H) -H /2 width=1 by/
-    ]
-  ]
-| * #V1 #T1 #HG #HL #HT destruct [| -IH ]
-  [ elim (IH G L V1) [ elim (IH G L T1) [| * | // ] | * | // ] -IH
-    [ #HT1 #HV1
-      elim (simple_dec_ex T1) [| * #p * #W1 #U1 #H destruct ]
-      [ /3 width=6 by cnr_appl_simple, or_introl/
-      | elim (lifts_total V1 𝐔❴1❵) #X1 #HVX1
-        @or_intror @(ex2_intro … (ⓓ{p}W1.ⓐX1.U1)) [ /2 width=3 by cpm_theta/ ] #H
-        elim (tdeq_inv_pair … H) -H #H destruct
-      | @or_intror @(ex2_intro … (ⓓ{p}ⓝW1.V1.U1)) [ /2 width=1 by cpm_beta/ ] #H
-        elim (tdeq_inv_pair … H) -H #H destruct
-      ]
-    | #T2 #HT12 #HnT12 #_
-      @or_intror @(ex2_intro … (ⓐV1.T2)) [ /2 width=1 by cpm_appl/ ] #H
-      elim (tdeq_inv_pair … H) -H /2 width=1 by/
-    | #V2 #HV12 #HnV12
-      @or_intror @(ex2_intro … (ⓐV2.T1)) [ /2 width=1 by cpr_pair_sn/ ] #H
-      elim (tdeq_inv_pair … H) -H /2 width=1 by/
-    ]
-  | @or_intror @(ex2_intro … T1) [ /2 width=1 by cpm_eps/ ] #H
-    /2 width=4 by tdeq_inv_pair_xy_y/
-  ]
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_teqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_teqx.ma
new file mode 100644 (file)
index 0000000..f0e91e7
--- /dev/null
@@ -0,0 +1,97 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/relocation/lifts_teqx.ma".
+include "basic_2/rt_transition/cpr_drops_basic.ma".
+include "basic_2/rt_transition/cnr_simple.ma".
+include "basic_2/rt_transition/cnr_drops.ma".
+
+(* NORMAL TERMS FOR CONTEXT-SENSITIVE R-TRANSITION **************************)
+
+(* Properties with context-free sort-irrelevant equivalence for terms *******)
+
+(* Basic_1: was: nf2_dec *)
+(* Basic_2A1: uses: cnr_dec *)
+lemma cnr_dec_teqx (h) (G) (L):
+      ∀T1. ∨∨ ⦃G,L⦄ ⊢ ➡[h] 𝐍⦃T1⦄
+            | ∃∃T2. ⦃G,L⦄ ⊢ T1 ➡[h] T2 & (T1 ≛ T2 → ⊥).
+#h #G #L #T1
+@(fqup_wf_ind_eq (Ⓣ) … G L T1) -G -L -T1 #G0 #L0 #T0 #IH #G #L * *
+[ #s #HG #HL #HT destruct -IH
+  /3 width=4 by cnr_sort, or_introl/
+| #i #HG #HL #HT destruct -IH
+  elim (drops_F_uni L i)
+  [ /3 width=6 by cnr_lref_atom, or_introl/
+  | * * [ #I | * #V ] #K #HLK
+    [ /3 width=7 by cnr_lref_unit, or_introl/
+    | elim (lifts_total V 𝐔❴↑i❵) #W #HVW
+      @or_intror @(ex2_intro … W) [ /2 width=6 by cpm_delta_drops/ ] #H
+      lapply (teqx_inv_lref1 … H) -H #H destruct
+      /2 width=5 by lifts_inv_lref2_uni_lt/
+    | /3 width=7 by cnr_lref_abst, or_introl/
+    ]
+  ]
+| #l #HG #HL #HT destruct -IH
+  /3 width=4 by cnr_gref, or_introl/
+| #p * [ cases p ] #V1 #T1 #HG #HL #HT destruct
+  [ elim (cpr_subst h G (L.ⓓV1) T1 0 L V1) [| /2 width=1 by drops_refl/ ] #T2 #X2 #HT12 #HXT2 -IH
+    elim (teqx_dec T1 T2) [ -HT12 #HT12 | #HnT12 ]
+    [ elim (teqx_inv_lifts_dx … HT12 … HXT2) -T2 #X1 #HXT1 #_ -X2
+      @or_intror @(ex2_intro … X1) [ /2 width=3 by cpm_zeta/ ] #H
+      /2 width=7 by teqx_lifts_inv_pair_sn/
+    | @or_intror @(ex2_intro … (+ⓓV1.T2)) [ /2 width=1 by cpm_bind/ ] #H
+      elim (teqx_inv_pair … H) -H /2 width=1 by/
+    ]
+  | elim (IH G L V1) [ elim (IH G (L.ⓓV1) T1) [| * | // ] | * | // ] -IH
+    [ #HT1 #HV1 /3 width=6 by cnr_abbr_neg, or_introl/
+    | #T2 #HT12 #HnT12 #_
+      @or_intror @(ex2_intro … (-ⓓV1.T2)) [ /2 width=1 by cpm_bind/ ] #H
+      elim (teqx_inv_pair … H) -H /2 width=1 by/
+    | #V2 #HV12 #HnV12
+      @or_intror @(ex2_intro … (-ⓓV2.T1)) [ /2 width=1 by cpr_pair_sn/ ] #H
+      elim (teqx_inv_pair … H) -H /2 width=1 by/
+    ]
+  | elim (IH G L V1) [ elim (IH G (L.ⓛV1) T1) [| * | // ] | * | // ] -IH
+    [ #HT1 #HV1 /3 width=6 by cnr_abst, or_introl/
+    | #T2 #HT12 #HnT12 #_
+      @or_intror @(ex2_intro … (ⓛ{p}V1.T2)) [ /2 width=1 by cpm_bind/ ] #H
+      elim (teqx_inv_pair … H) -H /2 width=1 by/
+    | #V2 #HV12 #HnV12
+      @or_intror @(ex2_intro … (ⓛ{p}V2.T1)) [ /2 width=1 by cpr_pair_sn/ ] #H
+      elim (teqx_inv_pair … H) -H /2 width=1 by/
+    ]
+  ]
+| * #V1 #T1 #HG #HL #HT destruct [| -IH ]
+  [ elim (IH G L V1) [ elim (IH G L T1) [| * | // ] | * | // ] -IH
+    [ #HT1 #HV1
+      elim (simple_dec_ex T1) [| * #p * #W1 #U1 #H destruct ]
+      [ /3 width=6 by cnr_appl_simple, or_introl/
+      | elim (lifts_total V1 𝐔❴1❵) #X1 #HVX1
+        @or_intror @(ex2_intro … (ⓓ{p}W1.ⓐX1.U1)) [ /2 width=3 by cpm_theta/ ] #H
+        elim (teqx_inv_pair … H) -H #H destruct
+      | @or_intror @(ex2_intro … (ⓓ{p}ⓝW1.V1.U1)) [ /2 width=1 by cpm_beta/ ] #H
+        elim (teqx_inv_pair … H) -H #H destruct
+      ]
+    | #T2 #HT12 #HnT12 #_
+      @or_intror @(ex2_intro … (ⓐV1.T2)) [ /2 width=1 by cpm_appl/ ] #H
+      elim (teqx_inv_pair … H) -H /2 width=1 by/
+    | #V2 #HV12 #HnV12
+      @or_intror @(ex2_intro … (ⓐV2.T1)) [ /2 width=1 by cpr_pair_sn/ ] #H
+      elim (teqx_inv_pair … H) -H /2 width=1 by/
+    ]
+  | @or_intror @(ex2_intro … T1) [ /2 width=1 by cpm_eps/ ] #H
+    /2 width=4 by teqx_inv_pair_xy_y/
+  ]
+]
+qed-.
index a79e8d74e25bb945fc5dbc152cbd7eb05d4a96fe..70681cf76ee0a57c0304e03a5ad0cc2e171d574d 100644 (file)
 (**************************************************************************)
 
 include "basic_2/notation/relations/predtynormal_4.ma".
-include "static_2/syntax/tdeq.ma".
+include "static_2/syntax/teqx.ma".
 include "basic_2/rt_transition/cpx.ma".
 
 (* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
 
 definition cnx: ∀h. relation3 genv lenv term ≝
-                λh,G,L. NF … (cpx h G L) tdeq.
+                λh,G,L. NF … (cpx h G L) teqx.
 
 interpretation
    "normality for unbound context-sensitive parallel rt-transition (term)"
@@ -33,7 +33,7 @@ lemma cnx_inv_abst: ∀h,p,G,L,V,T. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃ⓛ{p}V.T⦄ →
 [ #V2 #HV2 lapply (HVT1 (ⓛ{p}V2.T1) ?) -HVT1 /2 width=2 by cpx_pair_sn/ -HV2
 | #T2 #HT2 lapply (HVT1 (ⓛ{p}V1.T2) ?) -HVT1 /2 width=2 by cpx_bind/ -HT2
 ]
-#H elim (tdeq_inv_pair … H) -H //
+#H elim (teqx_inv_pair … H) -H //
 qed-.
 
 (* Basic_2A1: was: cnx_inv_abbr *)
@@ -43,25 +43,25 @@ lemma cnx_inv_abbr_neg: ∀h,G,L,V,T. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃-ⓓV.T⦄ →
 [ #V2 #HV2 lapply (HVT1 (-ⓓV2.T1) ?) -HVT1 /2 width=2 by cpx_pair_sn/ -HV2 
 | #T2 #HT2 lapply (HVT1 (-ⓓV1.T2) ?) -HVT1 /2 width=2 by cpx_bind/ -HT2
 ]
-#H elim (tdeq_inv_pair … H) -H //
+#H elim (teqx_inv_pair … H) -H //
 qed-.
 
 (* Basic_2A1: was: cnx_inv_eps *)
 lemma cnx_inv_cast: ∀h,G,L,V,T. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃ⓝV.T⦄ → ⊥.
 #h #G #L #V #T #H lapply (H T ?) -H
-/2 width=6 by cpx_eps, tdeq_inv_pair_xy_y/
+/2 width=6 by cpx_eps, teqx_inv_pair_xy_y/
 qed-.
 
 (* Basic properties *********************************************************)
 
 lemma cnx_sort: ∀h,G,L,s. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃⋆s⦄.
 #h #G #L #s #X #H elim (cpx_inv_sort1 … H) -H
-/2 width=1 by tdeq_sort/
+/2 width=1 by teqx_sort/
 qed.
 
 lemma cnx_abst: ∀h,p,G,L,W,T. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃W⦄ → ⦃G,L.ⓛW⦄ ⊢ ⬈[h] 𝐍⦃T⦄ →
                 ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃ⓛ{p}W.T⦄.
 #h #p #G #L #W #T #HW #HT #X #H
 elim (cpx_inv_abst1 … H) -H #W0 #T0 #HW0 #HT0 #H destruct
-@tdeq_pair [ @HW | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
+@teqx_pair [ @HW | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
 qed.
index 6f7976b64e2ec96fc4f0397d147f3c49d6c7bb80..4f07b3e5e3cce58c1186aeb8dd42c130d13c61dc 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/relocation/lifts_tdeq.ma".
+include "static_2/relocation/lifts_teqx.ma".
 include "basic_2/rt_transition/cpx_drops_basic.ma".
 include "basic_2/rt_transition/cnx.ma".
 
@@ -23,11 +23,11 @@ include "basic_2/rt_transition/cnx.ma".
 lemma cnx_inv_abbr_pos (h) (G) (L): ∀V,T.  ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃+ⓓV.T⦄ → ⊥.
 #h #G #L #V #U1 #H
 elim (cpx_subst h G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
-elim (tdeq_dec U1 U2) #HnU12 [ -HU12 | -HTU2 ]
-[ elim (tdeq_inv_lifts_dx … HnU12 … HTU2) -U2 #T1 #HTU1 #_ -T2
+elim (teqx_dec U1 U2) #HnU12 [ -HU12 | -HTU2 ]
+[ elim (teqx_inv_lifts_dx … HnU12 … HTU2) -U2 #T1 #HTU1 #_ -T2
   lapply (H T1 ?) -H [ /2 width=3 by cpx_zeta/ ] #H
-  /2 width=9 by tdeq_lifts_inv_pair_sn/
+  /2 width=9 by teqx_lifts_inv_pair_sn/
 | lapply (H (+ⓓV.U2) ?) -H [ /2 width=1 by cpx_bind/ ] -HU12 #H
-  elim (tdeq_inv_pair … H) -H #_ #_ /2 width=1 by/
+  elim (teqx_inv_pair … H) -H #_ #_ /2 width=1 by/
 ]
 qed-.
index abbc125a0cad2bd4dd7adcc797def8759a0b8ebe..43fccb612f5249d9f64e19d6bf03e426dbfbd5f5 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_transition/rpx_rdeq.ma".
+include "basic_2/rt_transition/rpx_reqx.ma".
 include "basic_2/rt_transition/cnx.ma".
 
 (* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
 
 (* Advanced properties ******************************************************)
 
-lemma cnx_tdeq_trans: ∀h,G,L,T1. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃T1⦄ →
+lemma cnx_teqx_trans: ∀h,G,L,T1. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃T1⦄ →
                       ∀T2. T1 ≛ T2 → ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃T2⦄.
 #h #G #L #T1 #HT1 #T2 #HT12 #T #HT2
-elim (tdeq_cpx_trans … HT12 … HT2) -HT2 #T0 #HT10 #HT0
-lapply (HT1 … HT10) -HT1 -HT10 /2 width=5 by tdeq_repl/ (**) (* full auto fails *)
+elim (teqx_cpx_trans … HT12 … HT2) -HT2 #T0 #HT10 #HT0
+lapply (HT1 … HT10) -HT1 -HT10 /2 width=5 by teqx_repl/ (**) (* full auto fails *)
 qed-.
index 70cffc7bd0a097257d8444b005b1385dbd44a8d6..977d278f9e98671a15e25e4c97bfdf815b6100a4 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/relocation/lifts_tdeq.ma".
+include "static_2/relocation/lifts_teqx.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 include "basic_2/rt_transition/cnx.ma".
 
@@ -34,7 +34,7 @@ qed.
 lemma cnx_lifts: ∀h,G. d_liftable1 … (cnx h G).
 #h #G #K #T #HT #b #f #L #HLK #U #HTU #U0 #H
 elim (cpx_inv_lifts_sn … H … HLK … HTU) -b -L #T0 #HTU0 #HT0
-lapply (HT … HT0) -G -K /2 width=6 by tdeq_lifts_bi/
+lapply (HT … HT0) -G -K /2 width=6 by teqx_lifts_bi/
 qed-.
 
 (* Inversion lemmas with generic slicing ************************************)
@@ -44,7 +44,7 @@ lemma cnx_inv_lref_pair: ∀h,I,G,L,K,V,i. ⇩*[i] L ≘ K.ⓑ{I}V → ⦃G,L⦄
 #h #I #G #L #K #V #i #HLK #H
 elim (lifts_total V (𝐔❴↑i❵)) #W #HVW
 lapply (H W ?) -H /2 width=7 by cpx_delta_drops/ -HLK
-#H lapply (tdeq_inv_lref1 … H) -H #H destruct
+#H lapply (teqx_inv_lref1 … H) -H #H destruct
 /2 width=5 by lifts_inv_lref2_uni_lt/
 qed-.
 
@@ -52,5 +52,5 @@ qed-.
 lemma cnx_inv_lifts: ∀h,G. d_deliftable1 … (cnx h G).
 #h #G #L #U #HU #b #f #K #HLK #T #HTU #T0 #H
 elim (cpx_lifts_sn … H … HLK … HTU) -b -K #U0 #HTU0 #HU0
-lapply (HU … HU0) -G -L /2 width=6 by tdeq_inv_lifts_bi/
+lapply (HU … HU0) -G -L /2 width=6 by teqx_inv_lifts_bi/
 qed-.
index 322930c7fd6825008ea2aaf9fe1fcc4001406350..4263b28cbc993271c2aeea714ad2b6cb8d561c54 100644 (file)
@@ -23,16 +23,16 @@ lemma cnx_inv_appl: ∀h,G,L,V,T. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃ⓐV.T⦄ →
                     ∧∧ ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃V⦄ & ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃T⦄ & 𝐒⦃T⦄.
 #h #G #L #V1 #T1 #HVT1 @and3_intro
 [ #V2 #HV2 lapply (HVT1 (ⓐV2.T1) ?) -HVT1 /2 width=1 by cpx_pair_sn/ -HV2
-  #H elim (tdeq_inv_pair … H) -H //
+  #H elim (teqx_inv_pair … H) -H //
 | #T2 #HT2 lapply (HVT1 (ⓐV1.T2) ?) -HVT1 /2 width=1 by cpx_flat/ -HT2
-  #H elim (tdeq_inv_pair … H) -H //
+  #H elim (teqx_inv_pair … H) -H //
 | generalize in match HVT1; -HVT1 elim T1 -T1 * //
   #p * #W1 #U1 #_ #_ #H
   [ elim (lifts_total V1 (𝐔❴1❵)) #V2 #HV12
     lapply (H (ⓓ{p}W1.ⓐV2.U1) ?) -H /2 width=3 by cpx_theta/ -HV12
-    #H elim (tdeq_inv_pair … H) -H #H destruct
+    #H elim (teqx_inv_pair … H) -H #H destruct
   | lapply (H (ⓓ{p}ⓝW1.V1.U1) ?) -H /2 width=1 by cpx_beta/
-    #H elim (tdeq_inv_pair … H) -H #H destruct
+    #H elim (teqx_inv_pair … H) -H #H destruct
   ]
 ]
 qed-.
@@ -43,5 +43,5 @@ lemma cnx_appl_simple: ∀h,G,L,V,T. ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃V⦄ → ⦃G,L
                        ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃ⓐV.T⦄.
 #h #G #L #V #T #HV #HT #HS #X #H elim (cpx_inv_appl1_simple … H) -H //
 #V0 #T0 #HV0 #HT0 #H destruct
-@tdeq_pair [ @HV | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
+@teqx_pair [ @HV | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
 qed.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_tdeq.ma
deleted file mode 100644 (file)
index 7f05e3b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/syntax/tdeq.ma".
-include "basic_2/rt_transition/cpm_drops.ma".
-
-(* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
-
-(* Inversion lemmas with sort-irrelevant equivalence for terms **************)
-
-lemma cpm_tdeq_inv_lref_sn (n) (h) (G) (L) (i):
-                           ∀X.  ⦃G,L⦄ ⊢ #i ➡[n,h] X → #i ≛ X →
-                           ∧∧ X = #i & n = 0.
-#n #h #G #L #i #X #H1 #H2
-lapply (tdeq_inv_lref1 … H2) -H2 #H destruct
-elim (cpm_inv_lref1_drops … H1) -H1 // * [| #m ]
-#K #V1 #V2 #_ #_ #H -V1
-elim (lifts_inv_lref2_uni_lt … H) -H //
-qed-.
-
-lemma cpm_tdeq_inv_atom_sn (n) (h) (I) (G) (L):
-                           ∀X. ⦃G,L⦄ ⊢ ⓪{I} ➡[n,h] X → ⓪{I} ≛ X →
-                           ∨∨ ∧∧ X = ⓪{I} & n = 0
-                            | ∃∃s. X = ⋆(⫯[h]s) & I = Sort s & n = 1.
-#n #h * #s #G #L #X #H1 #H2
-[ elim (cpm_inv_sort1 … H1) -H1
-  cases n -n [| #n ] #H #Hn destruct -H2
-  [ /3 width=1 by or_introl, conj/
-  | <(le_n_O_to_eq n) [| /2 width=3 by le_S_S_to_le/ ] -n
-    /3 width=3 by ex3_intro, or_intror/
-  ]
-| elim (cpm_tdeq_inv_lref_sn … H1 H2) -H1 -H2 /3 width=1 by or_introl, conj/
-| elim (cpm_inv_gref1 … H1) -H1 -H2 /3 width=1 by or_introl, conj/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_teqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_teqx.ma
new file mode 100644 (file)
index 0000000..fec97df
--- /dev/null
@@ -0,0 +1,46 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/teqx.ma".
+include "basic_2/rt_transition/cpm_drops.ma".
+
+(* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+
+(* Inversion lemmas with sort-irrelevant equivalence for terms **************)
+
+lemma cpm_teqx_inv_lref_sn (n) (h) (G) (L) (i):
+                           ∀X.  ⦃G,L⦄ ⊢ #i ➡[n,h] X → #i ≛ X →
+                           ∧∧ X = #i & n = 0.
+#n #h #G #L #i #X #H1 #H2
+lapply (teqx_inv_lref1 … H2) -H2 #H destruct
+elim (cpm_inv_lref1_drops … H1) -H1 // * [| #m ]
+#K #V1 #V2 #_ #_ #H -V1
+elim (lifts_inv_lref2_uni_lt … H) -H //
+qed-.
+
+lemma cpm_teqx_inv_atom_sn (n) (h) (I) (G) (L):
+                           ∀X. ⦃G,L⦄ ⊢ ⓪{I} ➡[n,h] X → ⓪{I} ≛ X →
+                           ∨∨ ∧∧ X = ⓪{I} & n = 0
+                            | ∃∃s. X = ⋆(⫯[h]s) & I = Sort s & n = 1.
+#n #h * #s #G #L #X #H1 #H2
+[ elim (cpm_inv_sort1 … H1) -H1
+  cases n -n [| #n ] #H #Hn destruct -H2
+  [ /3 width=1 by or_introl, conj/
+  | <(le_n_O_to_eq n) [| /2 width=3 by le_S_S_to_le/ ] -n
+    /3 width=3 by ex3_intro, or_intror/
+  ]
+| elim (cpm_teqx_inv_lref_sn … H1 H2) -H1 -H2 /3 width=1 by or_introl, conj/
+| elim (cpm_inv_gref1 … H1) -H1 -H2 /3 width=1 by or_introl, conj/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_tdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_tdeq.ma
deleted file mode 100644 (file)
index 910c7ab..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/relocation/lifts_tdeq.ma".
-include "basic_2/rt_transition/cpr_drops_basic.ma".
-
-(* CONTEXT-SENSITIVE PARALLEL R-TRANSITION FOR TERMS ************************)
-
-(* Properties with context-free sort-irrelevant equivalence *****************)
-
-lemma cpr_abbr_pos_tdneq (h) (G) (L) (V) (T1):
-      ∃∃T2. ⦃G,L⦄ ⊢ +ⓓV.T1 ➡[h] T2 & (+ⓓV.T1 ≛ T2 → ⊥).
-#h #G #L #V #U1
-elim (cpr_subst h G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
-elim (tdeq_dec U1 U2) [ -HU12 #HU12 | -HTU2 #HnU12 ]
-[ elim (tdeq_inv_lifts_dx … HU12 … HTU2) -U2 #T1 #HTU1 #_ -T2
-  /3 width=9 by cpm_zeta, tdeq_lifts_inv_pair_sn, ex2_intro/
-| @(ex2_intro … (+ⓓV.U2)) [ /2 width=1 by cpm_bind/ ] -HU12 #H
-  elim (tdeq_inv_pair … H) -H #_ #_ /2 width=1 by/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_teqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_teqx.ma
new file mode 100644 (file)
index 0000000..49a9882
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/relocation/lifts_teqx.ma".
+include "basic_2/rt_transition/cpr_drops_basic.ma".
+
+(* CONTEXT-SENSITIVE PARALLEL R-TRANSITION FOR TERMS ************************)
+
+(* Properties with context-free sort-irrelevant equivalence *****************)
+
+lemma cpr_abbr_pos_tneqx (h) (G) (L) (V) (T1):
+      ∃∃T2. ⦃G,L⦄ ⊢ +ⓓV.T1 ➡[h] T2 & (+ⓓV.T1 ≛ T2 → ⊥).
+#h #G #L #V #U1
+elim (cpr_subst h G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
+elim (teqx_dec U1 U2) [ -HU12 #HU12 | -HTU2 #HnU12 ]
+[ elim (teqx_inv_lifts_dx … HU12 … HTU2) -U2 #T1 #HTU1 #_ -T2
+  /3 width=9 by cpm_zeta, teqx_lifts_inv_pair_sn, ex2_intro/
+| @(ex2_intro … (+ⓓV.U2)) [ /2 width=1 by cpm_bind/ ] -HU12 #H
+  elim (teqx_inv_pair … H) -H #_ #_ /2 width=1 by/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma
deleted file mode 100644 (file)
index f8224c2..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/fdeq.ma".
-include "basic_2/rt_transition/cpx_rdeq.ma".
-include "basic_2/rt_transition/rpx_rdeq.ma".
-
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
-
-(* Properties with sort-irrelevant equivalence for closures *****************)
-
-lemma fdeq_cpx_trans: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T⦄ →
-                      ∀T2. ⦃G2,L2⦄ ⊢ T ⬈[h] T2 →
-                      ∃∃T0. ⦃G1,L1⦄ ⊢ T1 ⬈[h] T0 & ⦃G1,L1,T0⦄ ≛ ⦃G2,L2,T2⦄.
-#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
-elim (fdeq_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
-elim (rdeq_cpx_trans … HL12 … HT2) #T0 #HT0 #HT02
-lapply (cpx_rdeq_conf_dx … HT2 … HL12) -HL12 #HL12
-elim (tdeq_cpx_trans … HT1 … HT0) -T #T #HT1 #HT0
-/4 width=5 by fdeq_intro_dx, tdeq_trans, ex2_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_feqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_feqx.ma
new file mode 100644 (file)
index 0000000..3d19c0b
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/feqx.ma".
+include "basic_2/rt_transition/cpx_reqx.ma".
+include "basic_2/rt_transition/rpx_reqx.ma".
+
+(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+
+(* Properties with sort-irrelevant equivalence for closures *****************)
+
+lemma feqx_cpx_trans: ∀h,G1,G2,L1,L2,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T⦄ →
+                      ∀T2. ⦃G2,L2⦄ ⊢ T ⬈[h] T2 →
+                      ∃∃T0. ⦃G1,L1⦄ ⊢ T1 ⬈[h] T0 & ⦃G1,L1,T0⦄ ≛ ⦃G2,L2,T2⦄.
+#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
+elim (feqx_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
+elim (reqx_cpx_trans … HL12 … HT2) #T0 #HT0 #HT02
+lapply (cpx_reqx_conf_dx … HT2 … HL12) -HL12 #HL12
+elim (teqx_cpx_trans … HT1 … HT0) -T #T #HT1 #HT0
+/4 width=5 by feqx_intro_dx, teqx_trans, ex2_intro/
+qed-.
index 7cddd25cd47b817021f6d1ed5a548fe5e134ddde..6c1d31e771457cb2537f876cb8f19e89c9e3f5ce 100644 (file)
@@ -14,7 +14,7 @@
 
 (* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
 
-include "static_2/relocation/lifts_tdeq.ma".
+include "static_2/relocation/lifts_teqx.ma".
 include "static_2/s_computation/fqus_fqup.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 include "basic_2/rt_transition/cpx_lsubr.ma".
@@ -66,65 +66,65 @@ lemma fqus_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂*[b] ⦃G2,L2,
 ]
 qed-.
 
-lemma fqu_cpx_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T2⦄ →
+lemma fqu_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T2⦄ →
                            ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
                            ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ #I #G #L #V1 #V2 #HV12 #_ elim (lifts_total V2 𝐔❴1❵)
   #U2 #HVU2 @(ex3_intro … U2)
   [1,3: /3 width=7 by cpx_delta, fqu_drop/
-  | #H lapply (tdeq_inv_lref1 … H) -H
+  | #H lapply (teqx_inv_lref1 … H) -H
     #H destruct /2 width=5 by lifts_inv_lref2_uni_lt/
   ]
 | #I #G #L #V1 #T #V2 #HV12 #H0 @(ex3_intro … (②{I}V2.T))
   [1,3: /2 width=4 by fqu_pair_sn, cpx_pair_sn/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #p #I #G #L #V #T1 #Hb #T2 #HT12 #H0 @(ex3_intro … (ⓑ{p,I}V.T2))
   [1,3: /2 width=4 by fqu_bind_dx, cpx_bind/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #p #I #G #L #V #T1 #Hb #T2 #HT12 #H0 @(ex3_intro … (ⓑ{p,I}V.T2))
   [1,3: /4 width=4 by lsubr_cpx_trans, cpx_bind, lsubr_unit, fqu_clear/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #I #G #L #V #T1 #T2 #HT12 #H0 @(ex3_intro … (ⓕ{I}V.T2))
   [1,3: /2 width=4 by fqu_flat_dx, cpx_flat/
-  | #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
+  | #H elim (teqx_inv_pair … H) -H /2 width=1 by/
   ]
 | #I #G #L #T1 #U1 #HTU1 #T2 #HT12 #H0
   elim (cpx_lifts_sn … HT12 (Ⓣ) … (L.ⓘ{I}) … HTU1) -HT12
-  /4 width=6 by fqu_drop, drops_refl, drops_drop, tdeq_inv_lifts_bi, ex3_intro/
+  /4 width=6 by fqu_drop, drops_refl, drops_drop, teqx_inv_lifts_bi, ex3_intro/
 ]
 qed-.
 
-lemma fquq_cpx_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂⸮[b] ⦃G2,L2,T2⦄ →
+lemma fquq_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂⸮[b] ⦃G2,L2,T2⦄ →
                             ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
                             ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂⸮[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12 
-[ #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tdneq … H12 … HTU2 H) -T2
+[ #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fquq, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
 ]
 qed-.
 
-lemma fqup_cpx_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂+[b] ⦃G2,L2,T2⦄ →
+lemma fqup_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂+[b] ⦃G2,L2,T2⦄ →
                             ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
                             ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂+[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
-[ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tdneq … H12 … HTU2 H) -T2
+[ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fqup, ex3_intro/
 | #G #G1 #L #L1 #T #T1 #H1 #_ #IH12 #U2 #HTU2 #H elim (IH12 … HTU2 H) -T2
-  #U1 #HTU1 #H #H12 elim (fqu_cpx_trans_tdneq … H1 … HTU1 H) -T1
+  #U1 #HTU1 #H #H12 elim (fqu_cpx_trans_tneqx … H1 … HTU1 H) -T1
   /3 width=8 by fqup_strap2, ex3_intro/
 ]
 qed-.
 
-lemma fqus_cpx_trans_tdneq: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂*[b] ⦃G2,L2,T2⦄ →
+lemma fqus_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂*[b] ⦃G2,L2,T2⦄ →
                             ∀U2. ⦃G2,L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
                             ∃∃U1. ⦃G1,L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ⦃G1,L1,U1⦄ ⬂*[b] ⦃G2,L2,U2⦄.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
-[ #H12 elim (fqup_cpx_trans_tdneq … H12 … HTU2 H) -T2
+[ #H12 elim (fqup_cpx_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqup_fqus, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
 ]
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma
deleted file mode 100644 (file)
index 8e84ffa..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_rdeq.ma".
-include "basic_2/rt_transition/rpx_fsle.ma".
-
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
-
-(* Properties with sort-irrelevant equivalence for local environments *******)
-
-(* Basic_2A1: was just: cpx_lleq_conf_sn *)
-lemma cpx_rdeq_conf_sn: ∀h,G. s_r_confluent1 … (cpx h G) rdeq.
-/3 width=6 by cpx_rex_conf/ qed-.
-
-(* Basic_2A1: was just: cpx_lleq_conf_dx *)
-lemma cpx_rdeq_conf_dx: ∀h,G,L2,T1,T2. ⦃G,L2⦄ ⊢ T1 ⬈[h] T2 →
-                        ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
-/4 width=5 by cpx_rdeq_conf_sn, rdeq_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_reqx.ma
new file mode 100644 (file)
index 0000000..0882313
--- /dev/null
@@ -0,0 +1,29 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_reqx.ma".
+include "basic_2/rt_transition/rpx_fsle.ma".
+
+(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+
+(* Properties with sort-irrelevant equivalence for local environments *******)
+
+(* Basic_2A1: was just: cpx_lleq_conf_sn *)
+lemma cpx_reqx_conf_sn: ∀h,G. s_r_confluent1 … (cpx h G) reqx.
+/3 width=6 by cpx_rex_conf/ qed-.
+
+(* Basic_2A1: was just: cpx_lleq_conf_dx *)
+lemma cpx_reqx_conf_dx: ∀h,G,L2,T1,T2. ⦃G,L2⦄ ⊢ T1 ⬈[h] T2 →
+                        ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
+/4 width=5 by cpx_reqx_conf_sn, reqx_sym/ qed-.
index 8c07020568502c8e748d6c942bd837df29e6cbf5..57a4c6964d4a5e7a662c19af82abf17af4285965 100644 (file)
@@ -14,7 +14,7 @@
 
 include "basic_2/notation/relations/predsubtyproper_7.ma".
 include "static_2/s_transition/fqu.ma".
-include "static_2/static/rdeq.ma".
+include "static_2/static/reqx.ma".
 include "basic_2/rt_transition/lpr_lpx.ma".
 
 (* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma
deleted file mode 100644 (file)
index a082446..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/s_transition/fqu_tdeq.ma".
-include "static_2/static/fdeq.ma".
-include "basic_2/rt_transition/fpb_rdeq.ma".
-
-(* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
-
-(* Properties with degree-based equivalence for closures ********************)
-
-(* Basic_2A1: uses: fleq_fpb_trans *)
-lemma fdeq_fpb_trans: ∀h,F1,F2,K1,K2,T1,T2. ⦃F1,K1,T1⦄ ≛ ⦃F2,K2,T2⦄ →
-                      ∀G2,L2,U2. ⦃F2,K2,T2⦄ ≻[h] ⦃G2,L2,U2⦄ →
-                      ∃∃G1,L1,U1. ⦃F1,K1,T1⦄ ≻[h] ⦃G1,L1,U1⦄ & ⦃G1,L1,U1⦄ ≛ ⦃G2,L2,U2⦄.
-#h #F1 #F2 #K1 #K2 #T1 #T2 * -F2 -K2 -T2
-#K2 #T2 #HK12 #HT12 #G2 #L2 #U2 #H12
-elim (tdeq_fpb_trans … HT12 … H12) -T2 #K0 #T0 #H #HT0 #HK0
-elim (rdeq_fpb_trans … HK12 … H) -K2 #L0 #U0 #H #HUT0 #HLK0
-@(ex2_3_intro … H) -H (**) (* full auto too slow *)
-/4 width=3 by fdeq_intro_dx, rdeq_trans, tdeq_rdeq_conf, tdeq_trans/
-qed-.
-
-(* Inversion lemmas with degree-based equivalence for closures **************)
-
-(* Basic_2A1: uses: fpb_inv_fleq *)
-lemma fpb_inv_fdeq: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≻[h] ⦃G2,L2,T2⦄ →
-                    ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⊥.
-#h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
-[ #G2 #L2 #T2 #H12 #H elim (fdeq_inv_gen_sn … H) -H
-  /3 width=11 by rdeq_fwd_length, fqu_inv_tdeq/
-| #T2 #_ #HnT #H elim (fdeq_inv_gen_sn … H) -H /2 width=1 by/
-| #L2 #_ #HnL #H elim (fdeq_inv_gen_sn … H) -H /2 width=1 by/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqx.ma
new file mode 100644 (file)
index 0000000..0dac369
--- /dev/null
@@ -0,0 +1,46 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/s_transition/fqu_teqx.ma".
+include "static_2/static/feqx.ma".
+include "basic_2/rt_transition/fpb_reqx.ma".
+
+(* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
+
+(* Properties with degree-based equivalence for closures ********************)
+
+(* Basic_2A1: uses: fleq_fpb_trans *)
+lemma feqx_fpb_trans: ∀h,F1,F2,K1,K2,T1,T2. ⦃F1,K1,T1⦄ ≛ ⦃F2,K2,T2⦄ →
+                      ∀G2,L2,U2. ⦃F2,K2,T2⦄ ≻[h] ⦃G2,L2,U2⦄ →
+                      ∃∃G1,L1,U1. ⦃F1,K1,T1⦄ ≻[h] ⦃G1,L1,U1⦄ & ⦃G1,L1,U1⦄ ≛ ⦃G2,L2,U2⦄.
+#h #F1 #F2 #K1 #K2 #T1 #T2 * -F2 -K2 -T2
+#K2 #T2 #HK12 #HT12 #G2 #L2 #U2 #H12
+elim (teqx_fpb_trans … HT12 … H12) -T2 #K0 #T0 #H #HT0 #HK0
+elim (reqx_fpb_trans … HK12 … H) -K2 #L0 #U0 #H #HUT0 #HLK0
+@(ex2_3_intro … H) -H (**) (* full auto too slow *)
+/4 width=3 by feqx_intro_dx, reqx_trans, teqx_reqx_conf, teqx_trans/
+qed-.
+
+(* Inversion lemmas with degree-based equivalence for closures **************)
+
+(* Basic_2A1: uses: fpb_inv_fleq *)
+lemma fpb_inv_feqx: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≻[h] ⦃G2,L2,T2⦄ →
+                    ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⊥.
+#h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+[ #G2 #L2 #T2 #H12 #H elim (feqx_inv_gen_sn … H) -H
+  /3 width=11 by reqx_fwd_length, fqu_inv_teqx/
+| #T2 #_ #HnT #H elim (feqx_inv_gen_sn … H) -H /2 width=1 by/
+| #L2 #_ #HnL #H elim (feqx_inv_gen_sn … H) -H /2 width=1 by/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.ma
deleted file mode 100644 (file)
index b09005f..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_fqus.ma".
-include "basic_2/rt_transition/cpx_rdeq.ma".
-include "basic_2/rt_transition/lpx_rdeq.ma".
-include "basic_2/rt_transition/fpb.ma".
-
-(* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
-
-(* Properties with sort-irrelevant equivalence for local environments *******)
-
-lemma tdeq_fpb_trans: ∀h,U2,U1. U2 ≛ U1 →
-                      ∀G1,G2,L1,L2,T1. ⦃G1,L1,U1⦄ ≻[h] ⦃G2,L2,T1⦄ → 
-                      ∃∃L,T2. ⦃G1,L1,U2⦄ ≻[h] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
-#h #U2 #U1 #HU21 #G1 #G2 #L1 #L2 #T1 * -G2 -L2 -T1
-[ #G2 #L2 #T1 #H
-  elim (tdeq_fqu_trans … H … HU21) -H
-  /3 width=5 by fpb_fqu, ex3_2_intro/
-| #T1 #HUT1 #HnUT1
-  elim (tdeq_cpx_trans … HU21 … HUT1) -HUT1
-  /6 width=5 by fpb_cpx, tdeq_canc_sn, tdeq_trans, ex3_2_intro/
-| /6 width=5 by fpb_lpx, rpx_tdeq_div, tdeq_rdeq_conf, ex3_2_intro/
-]
-qed-.
-
-(* Basic_2A1: was just: lleq_fpb_trans *)
-lemma rdeq_fpb_trans: ∀h,F,K1,K2,T. K1 ≛[T] K2 →
-                      ∀G,L2,U. ⦃F,K2,T⦄ ≻[h] ⦃G,L2,U⦄ →
-                      ∃∃L1,U0. ⦃F,K1,T⦄ ≻[h] ⦃G,L1,U0⦄ & U0 ≛ U & L1 ≛[U] L2.
-#h #F #K1 #K2 #T #HT #G #L2 #U * -G -L2 -U
-[ #G #L2 #U #H2 elim (rdeq_fqu_trans … H2 … HT) -K2
-  /3 width=5 by fpb_fqu, ex3_2_intro/
-| #U #HTU #HnTU elim (rdeq_cpx_trans … HT … HTU) -HTU
-  /5 width=11 by fpb_cpx, cpx_rdeq_conf_sn, tdeq_trans, tdeq_rdeq_conf, ex3_2_intro/ (**) (* time: 36s on dev *)
-| #L2 #HKL2 #HnKL2 elim (rdeq_lpx_trans … HKL2 … HT) -HKL2
-  /6 width=5 by fpb_lpx, (* 2x *) rdeq_canc_sn, ex3_2_intro/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_reqx.ma
new file mode 100644 (file)
index 0000000..de16827
--- /dev/null
@@ -0,0 +1,50 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_fqus.ma".
+include "basic_2/rt_transition/cpx_reqx.ma".
+include "basic_2/rt_transition/lpx_reqx.ma".
+include "basic_2/rt_transition/fpb.ma".
+
+(* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
+
+(* Properties with sort-irrelevant equivalence for local environments *******)
+
+lemma teqx_fpb_trans: ∀h,U2,U1. U2 ≛ U1 →
+                      ∀G1,G2,L1,L2,T1. ⦃G1,L1,U1⦄ ≻[h] ⦃G2,L2,T1⦄ → 
+                      ∃∃L,T2. ⦃G1,L1,U2⦄ ≻[h] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#h #U2 #U1 #HU21 #G1 #G2 #L1 #L2 #T1 * -G2 -L2 -T1
+[ #G2 #L2 #T1 #H
+  elim (teqx_fqu_trans … H … HU21) -H
+  /3 width=5 by fpb_fqu, ex3_2_intro/
+| #T1 #HUT1 #HnUT1
+  elim (teqx_cpx_trans … HU21 … HUT1) -HUT1
+  /6 width=5 by fpb_cpx, teqx_canc_sn, teqx_trans, ex3_2_intro/
+| /6 width=5 by fpb_lpx, rpx_teqx_div, teqx_reqx_conf, ex3_2_intro/
+]
+qed-.
+
+(* Basic_2A1: was just: lleq_fpb_trans *)
+lemma reqx_fpb_trans: ∀h,F,K1,K2,T. K1 ≛[T] K2 →
+                      ∀G,L2,U. ⦃F,K2,T⦄ ≻[h] ⦃G,L2,U⦄ →
+                      ∃∃L1,U0. ⦃F,K1,T⦄ ≻[h] ⦃G,L1,U0⦄ & U0 ≛ U & L1 ≛[U] L2.
+#h #F #K1 #K2 #T #HT #G #L2 #U * -G -L2 -U
+[ #G #L2 #U #H2 elim (reqx_fqu_trans … H2 … HT) -K2
+  /3 width=5 by fpb_fqu, ex3_2_intro/
+| #U #HTU #HnTU elim (reqx_cpx_trans … HT … HTU) -HTU
+  /5 width=11 by fpb_cpx, cpx_reqx_conf_sn, teqx_trans, teqx_reqx_conf, ex3_2_intro/ (**) (* time: 36s on dev *)
+| #L2 #HKL2 #HnKL2 elim (reqx_lpx_trans … HKL2 … HT) -HKL2
+  /6 width=5 by fpb_lpx, (* 2x *) reqx_canc_sn, ex3_2_intro/
+]
+qed-.
index 690e8ff3238c68381c1ae9269c18e9040f22623c..e875cac283b9cb0ece3b8c387ff4884132358d59 100644 (file)
@@ -13,7 +13,7 @@
 (**************************************************************************)
 
 include "basic_2/notation/relations/predsubty_7.ma".
-include "static_2/static/fdeq.ma".
+include "static_2/static/feqx.ma".
 include "static_2/s_transition/fquq.ma".
 include "basic_2/rt_transition/lpr_lpx.ma".
 
@@ -24,7 +24,7 @@ inductive fpbq (h) (G1) (L1) (T1): relation3 genv lenv term ≝
 | fpbq_fquq: ∀G2,L2,T2. ⦃G1,L1,T1⦄ ⬂⸮ ⦃G2,L2,T2⦄ → fpbq h G1 L1 T1 G2 L2 T2
 | fpbq_cpx : ∀T2. ⦃G1,L1⦄ ⊢ T1 ⬈[h] T2 → fpbq h G1 L1 T1 G1 L1 T2
 | fpbq_lpx : ∀L2. ⦃G1,L1⦄ ⊢ ⬈[h] L2 → fpbq h G1 L1 T1 G1 L2 T1
-| fpbq_fdeq: ∀G2,L2,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → fpbq h G1 L1 T1 G2 L2 T2
+| fpbq_feqx: ∀G2,L2,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → fpbq h G1 L1 T1 G2 L2 T2
 .
 
 interpretation
index a29292aaeb7914b007f170f79cbc999ed0736cd2..ead3fc1bfde8501cc3624a99b1adff9b30ef91eb 100644 (file)
@@ -13,7 +13,7 @@
 (**************************************************************************)
 
 include "static_2/static/aaa_fqus.ma".
-include "static_2/static/aaa_fdeq.ma".
+include "static_2/static/aaa_feqx.ma".
 include "basic_2/rt_transition/lpx_aaa.ma".
 include "basic_2/rt_transition/fpbq.ma".
 
@@ -24,5 +24,5 @@ include "basic_2/rt_transition/fpbq.ma".
 lemma fpbq_aaa_conf: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≽[h] ⦃G2,L2,T2⦄ →
                      ∀A1. ⦃G1,L1⦄ ⊢ T1 ⁝ A1 → ∃A2. ⦃G2,L2⦄ ⊢ T2 ⁝ A2.
 #h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
-/3 width=8 by lpx_aaa_conf, cpx_aaa_conf, aaa_fdeq_conf, aaa_fquq_conf, ex_intro/
+/3 width=8 by lpx_aaa_conf, cpx_aaa_conf, aaa_feqx_conf, aaa_fquq_conf, ex_intro/
 qed-.
index 21143003b145dcf83da393acf52f7cc0678d9f86..af02bdefaa42b19ded0c2555515d9ce815d6f8c1 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_transition/fpb_fdeq.ma".
+include "basic_2/rt_transition/fpb_feqx.ma".
 include "basic_2/rt_transition/fpbq.ma".
 
 (* PARALLEL RST-TRANSITION FOR CLOSURES *************************************)
@@ -26,9 +26,9 @@ lemma fpb_fpbq: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≻[h] ⦃G2,L2,T2⦄ →
 qed.
 
 (* Basic_2A1: fpb_fpbq_alt *)
-lemma fpb_fpbq_ffdneq: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≻[h] ⦃G2,L2,T2⦄ →
+lemma fpb_fpbq_fneqx: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≻[h] ⦃G2,L2,T2⦄ →
                        ∧∧ ⦃G1,L1,T1⦄ ≽[h] ⦃G2,L2,T2⦄ & (⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⊥).
-/3 width=10 by fpb_fpbq, fpb_inv_fdeq, conj/ qed-.
+/3 width=10 by fpb_fpbq, fpb_inv_feqx, conj/ qed-.
 
 (* Inversrion lemmas with proper parallel rst-transition for closures *******)
 
@@ -38,17 +38,17 @@ lemma fpbq_inv_fpb: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≽[h] ⦃G2,L2,T2⦄
                      | ⦃G1,L1,T1⦄ ≻[h] ⦃G2,L2,T2⦄.
 #h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
 [ #G2 #L2 #T2 * [2: * #H1 #H2 #H3 destruct ]
-  /3 width=1 by fpb_fqu, fdeq_intro_sn, or_intror, or_introl/
-| #T2 #H elim (tdeq_dec T1 T2)
-  /4 width=1 by fpb_cpx, fdeq_intro_sn, or_intror, or_introl/
-| #L2 elim (rdeq_dec L1 L2 T1)
-  /4 width=1 by fpb_lpx, fdeq_intro_sn, or_intror, or_introl/
+  /3 width=1 by fpb_fqu, feqx_intro_sn, or_intror, or_introl/
+| #T2 #H elim (teqx_dec T1 T2)
+  /4 width=1 by fpb_cpx, feqx_intro_sn, or_intror, or_introl/
+| #L2 elim (reqx_dec L1 L2 T1)
+  /4 width=1 by fpb_lpx, feqx_intro_sn, or_intror, or_introl/
 | /2 width=1 by or_introl/
 ]
 qed-.
 
 (* Basic_2A1: fpbq_inv_fpb_alt *)
-lemma fpbq_ffdneq_inv_fpb: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≽[h] ⦃G2,L2,T2⦄ →
+lemma fpbq_fneqx_inv_fpb: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≽[h] ⦃G2,L2,T2⦄ →
                            (⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⊥) → ⦃G1,L1,T1⦄ ≻[h] ⦃G2,L2,T2⦄.
 #h #G1 #G2 #L1 #L2 #T1 #T2 #H #H0
 elim (fpbq_inv_fpb … H) -H // #H elim H0 -H0 //
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_rdeq.ma
deleted file mode 100644 (file)
index 8055506..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_req.ma".
-include "basic_2/rt_transition/rpx_rdeq.ma".
-include "basic_2/rt_transition/rpx_lpx.ma".
-
-(* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
-
-(* Properties with sort-irrelevant equivalence for local environments *******)
-
-(* Basic_2A1: uses: lleq_lpx_trans *)
-lemma rdeq_lpx_trans (h) (G): ∀L2,K2. ⦃G,L2⦄ ⊢ ⬈[h] K2 →
-                              ∀L1. ∀T:term. L1 ≛[T] L2 →
-                              ∃∃K1. ⦃G,L1⦄ ⊢ ⬈[h] K1 & K1 ≛[T] K2.
-#h #G #L2 #K2 #HLK2 #L1 #T #HL12
-lapply (lpx_rpx … T HLK2) -HLK2 #HLK2
-elim (rdeq_rpx_trans … HLK2 … HL12) -L2 #K #H #HK2
-elim (rpx_inv_lpx_req … H) -H #K1 #HLK1 #HK1
-/3 width=5 by req_rdeq_trans, ex2_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma
new file mode 100644 (file)
index 0000000..ad623b0
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_req.ma".
+include "basic_2/rt_transition/rpx_reqx.ma".
+include "basic_2/rt_transition/rpx_lpx.ma".
+
+(* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
+
+(* Properties with sort-irrelevant equivalence for local environments *******)
+
+(* Basic_2A1: uses: lleq_lpx_trans *)
+lemma reqx_lpx_trans (h) (G): ∀L2,K2. ⦃G,L2⦄ ⊢ ⬈[h] K2 →
+                              ∀L1. ∀T:term. L1 ≛[T] L2 →
+                              ∃∃K1. ⦃G,L1⦄ ⊢ ⬈[h] K1 & K1 ≛[T] K2.
+#h #G #L2 #K2 #HLK2 #L1 #T #HL12
+lapply (lpx_rpx … T HLK2) -HLK2 #HLK2
+elim (reqx_rpx_trans … HLK2 … HL12) -L2 #K #H #HK2
+elim (rpx_inv_lpx_req … H) -H #K1 #HLK1 #HK1
+/3 width=5 by req_reqx_trans, ex2_intro/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.ma
deleted file mode 100644 (file)
index b8117c0..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_drops.ma".
-include "static_2/static/rdeq_fqup.ma".
-include "static_2/static/rdeq_rdeq.ma".
-include "basic_2/rt_transition/rpx_fsle.ma".
-
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
-
-(* Properties with sort-irrelevant equivalence for local environments *******)
-
-lemma rpx_pair_sn_split: ∀h,G,L1,L2,V. ⦃G,L1⦄ ⊢ ⬈[h,V] L2 → ∀I,T.
-                         ∃∃L. ⦃G,L1⦄ ⊢ ⬈[h,②{I}V.T] L & L ≛[V] L2.
-/3 width=5 by rpx_fsge_comp, rex_pair_sn_split/ qed-.
-
-lemma rpx_flat_dx_split: ∀h,G,L1,L2,T. ⦃G,L1⦄ ⊢ ⬈[h,T] L2 → ∀I,V.
-                         ∃∃L. ⦃G,L1⦄ ⊢ ⬈[h,ⓕ{I}V.T] L & L ≛[T] L2.
-/3 width=5 by rpx_fsge_comp, rex_flat_dx_split/ qed-.
-
-lemma rpx_bind_dx_split: ∀h,I,G,L1,L2,V1,T. ⦃G,L1.ⓑ{I}V1⦄ ⊢ ⬈[h,T] L2 → ∀p.
-                         ∃∃L,V. ⦃G,L1⦄ ⊢ ⬈[h,ⓑ{p,I}V1.T] L & L.ⓑ{I}V ≛[T] L2 & ⦃G,L1⦄ ⊢ V1 ⬈[h] V.
-/3 width=5 by rpx_fsge_comp, rex_bind_dx_split/ qed-.
-
-lemma rpx_bind_dx_split_void: ∀h,G,K1,L2,T. ⦃G,K1.ⓧ⦄ ⊢ ⬈[h,T] L2 → ∀p,I,V.
-                              ∃∃K2. ⦃G,K1⦄ ⊢ ⬈[h,ⓑ{p,I}V.T] K2 & K2.ⓧ ≛[T] L2.
-/3 width=5 by rpx_fsge_comp, rex_bind_dx_split_void/ qed-.
-
-lemma rpx_tdeq_conf: ∀h,G. s_r_confluent1 … cdeq (rpx h G).
-/2 width=5 by tdeq_rex_conf/ qed-.
-
-lemma rpx_tdeq_div: ∀h,T1,T2. T1 ≛ T2 →
-                    ∀G,L1,L2. ⦃G,L1⦄ ⊢ ⬈[h,T2] L2 → ⦃G,L1⦄ ⊢ ⬈[h,T1] L2.
-/2 width=5 by tdeq_rex_div/ qed-.
-
-lemma cpx_tdeq_conf_rex: ∀h,G. R_confluent2_rex … (cpx h G) cdeq (cpx h G) cdeq.
-#h #G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/
-[ #G #L0 #s0 #X0 #H0 #L1 #HL01 #L2 #HL02
-  elim (tdeq_inv_sort1 … H0) -H0 #s1 #H destruct
-  /3 width=3 by tdeq_sort, ex2_intro/
-| #I #G #K0 #V0 #V1 #W1 #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2
-  >(tdeq_inv_lref1 … H0) -H0
-  elim (rpx_inv_zero_pair_sn … H1) -H1 #K1 #X1 #HK01 #HX1 #H destruct
-  elim (rdeq_inv_zero_pair_sn … H2) -H2 #K2 #X2 #HK02 #HX2 #H destruct
-  elim (IH X2 … HK01 … HK02) // -K0 -V0 #V #HV1 #HV2
-  elim (tdeq_lifts_sn … HV1 … HVW1) -V1 /3 width=5 by cpx_delta, ex2_intro/
-| #I0 #G #K0 #V1 #W1 #i #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2
-  >(tdeq_inv_lref1 … H0) -H0
-  elim (rpx_inv_lref_bind_sn … H1) -H1 #I1 #K1 #HK01 #H destruct
-  elim (rdeq_inv_lref_bind_sn … H2) -H2 #I2 #K2 #HK02 #H destruct
-  elim (IH … HK01 … HK02) [|*: //] -K0 #V #HV1 #HV2
-  elim (tdeq_lifts_sn … HV1 … HVW1) -V1 /3 width=5 by cpx_lref, ex2_intro/
-| #p #I #G #L0 #V0 #V1 #T0 #T1 #_ #_ #IHV #IHT #X0 #H0 #L1 #H1 #L2 #H2
-  elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #HT02 #H destruct
-  elim (rpx_inv_bind … H1) -H1 #HL01 #H1
-  elim (rdeq_inv_bind … H2) -H2 #HL02 #H2
-  lapply (rdeq_bind_repl_dx … H2 (BPair I V2) ?) -H2 /2 width=1 by ext2_pair/ #H2
-  elim (IHV … HV02 … HL01 … HL02) -IHV -HV02 -HL01 -HL02
-  elim (IHT … HT02 … H1 … H2) -L0 -T0
-  /3 width=5 by cpx_bind, tdeq_pair, ex2_intro/
-| #I #G #L0 #V0 #V1 #T0 #T1 #_ #_ #IHV #IHT #X0 #H0 #L1 #H1 #L2 #H2
-  elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #HT02 #H destruct
-  elim (rpx_inv_flat … H1) -H1 #HL01 #H1
-  elim (rdeq_inv_flat … H2) -H2 #HL02 #H2
-  elim (IHV … HV02 … HL01 … HL02) -IHV -HV02 -HL01 -HL02
-  elim (IHT … HT02 … H1 … H2) -L0 -V0 -T0
-  /3 width=5 by cpx_flat, tdeq_pair, ex2_intro/
-| #G #L0 #V0 #U0 #T0 #T1 #HTU0 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2
-  elim (tdeq_inv_pair1 … H0) -H0 #V2 #U2 #HV02 #HU02 #H destruct
-  elim (rpx_inv_bind … H1) -H1 #HL01 #H1
-  elim (rdeq_inv_bind … H2) -H2 #HL02 #H2
-  lapply (rpx_inv_lifts_bi … H1 (Ⓣ) … HTU0) -H1 [6:|*: /3 width=2 by drops_refl, drops_drop/ ] #H1
-  lapply (rdeq_inv_lifts_bi … H2 (Ⓣ) … HTU0) -H2 [6:|*: /3 width=2 by drops_refl, drops_drop/ ] #H2
-  elim (tdeq_inv_lifts_sn … HU02 … HTU0) -U0 #T2 #HTU2 #HT02
-  elim (IH … HT02 … H1 … H2) -L0 -T0 #T #HT1
-  /3 width=5 by cpx_zeta, ex2_intro/
-| #G #L0 #V0 #T0 #T1 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2
-  elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #_ #HT02 #H destruct
-  elim (rpx_inv_flat … H1) -H1 #HL01 #H1
-  elim (rdeq_inv_flat … H2) -H2 #HL02 #H2
-  elim (IH … HT02 … H1 … H2) -L0 -V0 -T0
-  /3 width=3 by cpx_eps, ex2_intro/
-| #G #L0 #V0 #T0 #T1 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2
-  elim (tdeq_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #_ #H destruct
-  elim (rpx_inv_flat … H1) -H1 #HL01 #H1
-  elim (rdeq_inv_flat … H2) -H2 #HL02 #H2
-  elim (IH … HV02 … HL01 … HL02) -L0 -V0 -T1
-  /3 width=3 by cpx_ee, ex2_intro/
-| #p #G #L0 #V0 #V1 #W0 #W1 #T0 #T1 #_ #_ #_ #IHV #IHW #IHT #X0 #H0 #L1 #H1 #L2 #H2
-  elim (tdeq_inv_pair1 … H0) -H0 #V2 #X #HV02 #H0 #H destruct
-  elim (tdeq_inv_pair1 … H0) -H0 #W2 #T2 #HW02 #HT02 #H destruct
-  elim (rpx_inv_flat … H1) -H1 #H1LV0 #H1
-  elim (rpx_inv_bind … H1) -H1 #H1LW0 #H1LT0
-  elim (rdeq_inv_flat … H2) -H2 #H2LV0 #H2
-  elim (rdeq_inv_bind … H2) -H2 #H2LW0 #H2LT0
-  lapply (rdeq_bind_repl_dx … H2LT0 (BPair Abst W2) ?) -H2LT0 /2 width=1 by ext2_pair/ #H2LT0
-  elim (IHV … HV02 … H1LV0 … H2LV0) -IHV -HV02 -H1LV0 -H2LV0
-  elim (IHW … HW02 … H1LW0 … H2LW0) -IHW -HW02 -H1LW0 -H2LW0
-  elim (IHT … HT02 … H1LT0 … H2LT0) -L0 -V0 -T0
-  /4 width=7 by cpx_beta, tdeq_pair, ex2_intro/ (* note: 2 tdeq_pair *)
-| #p #G #L0 #V0 #V1 #U1 #W0 #W1 #T0 #T1 #_ #_ #_ #IHV #IHW #IHT #HVU1 #X0 #H0 #L1 #H1 #L2 #H2
-  elim (tdeq_inv_pair1 … H0) -H0 #V2 #X #HV02 #H0 #H destruct
-  elim (tdeq_inv_pair1 … H0) -H0 #W2 #T2 #HW02 #HT02 #H destruct
-  elim (rpx_inv_flat … H1) -H1 #H1LV0 #H1
-  elim (rpx_inv_bind … H1) -H1 #H1LW0 #H1LT0
-  elim (rdeq_inv_flat … H2) -H2 #H2LV0 #H2
-  elim (rdeq_inv_bind … H2) -H2 #H2LW0 #H2LT0
-  lapply (rdeq_bind_repl_dx … H2LT0 (BPair Abbr W2) ?) -H2LT0 /2 width=1 by ext2_pair/ #H2LT0
-  elim (IHV … HV02 … H1LV0 … H2LV0) -IHV -HV02 -H1LV0 -H2LV0 #V #HV1
-  elim (IHW … HW02 … H1LW0 … H2LW0) -IHW -HW02 -H1LW0 -H2LW0
-  elim (IHT … HT02 … H1LT0 … H2LT0) -L0 -V0 -T0
-  elim (tdeq_lifts_sn … HV1 … HVU1) -V1
-  /4 width=9 by cpx_theta, tdeq_pair, ex2_intro/ (* note: 2 tdeq_pair *)
-]
-qed-.
-
-lemma cpx_tdeq_conf: ∀h,G,L. ∀T0:term. ∀T1. ⦃G,L⦄ ⊢ T0 ⬈[h] T1 →
-                     ∀T2. T0 ≛ T2 →
-                     ∃∃T. T1 ≛ T & ⦃G,L⦄ ⊢ T2 ⬈[h] T.
-#h #G #L #T0 #T1 #HT01 #T2 #HT02
-elim (cpx_tdeq_conf_rex … HT01 … HT02 L … L) -HT01 -HT02
-/2 width=3 by rex_refl, ex2_intro/
-qed-.
-
-lemma tdeq_cpx_trans: ∀h,G,L,T2. ∀T0:term. T2 ≛ T0 →
-                      ∀T1. ⦃G,L⦄ ⊢ T0 ⬈[h] T1 → 
-                      ∃∃T. ⦃G,L⦄ ⊢ T2 ⬈[h] T & T ≛ T1.
-#h #G #L #T2 #T0 #HT20 #T1 #HT01
-elim (cpx_tdeq_conf … HT01 T2) -HT01 /3 width=3 by tdeq_sym, ex2_intro/
-qed-.
-
-(* Basic_2A1: uses: cpx_lleq_conf *)
-lemma cpx_rdeq_conf: ∀h,G,L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈[h] T1 →
-                     ∀L2. L0 ≛[T0] L2 →
-                     ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈[h] T & T1 ≛ T.
-#h #G #L0 #T0 #T1 #HT01 #L2 #HL02
-elim (cpx_tdeq_conf_rex … HT01 T0 … L0 … HL02) -HT01 -HL02
-/2 width=3 by rex_refl, ex2_intro/
-qed-.
-
-(* Basic_2A1: uses: lleq_cpx_trans *)
-lemma rdeq_cpx_trans: ∀h,G,L2,L0,T0. L2 ≛[T0] L0 →
-                      ∀T1. ⦃G,L0⦄ ⊢ T0 ⬈[h] T1 →
-                      ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈[h] T & T ≛ T1.
-#h #G #L2 #L0 #T0 #HL20 #T1 #HT01
-elim (cpx_rdeq_conf … HT01 L2) -HT01
-/3 width=3 by rdeq_sym, tdeq_sym, ex2_intro/
-qed-.
-
-lemma rpx_rdeq_conf: ∀h,G,T. confluent2 … (rpx h G T) (rdeq T).
-/3 width=6 by rpx_fsge_comp, rdeq_fsge_comp, cpx_tdeq_conf_rex, rex_conf/ qed-.
-
-lemma rdeq_rpx_trans: ∀h,G,T,L2,K2. ⦃G,L2⦄ ⊢ ⬈[h,T] K2 →
-                      ∀L1. L1 ≛[T] L2 →
-                      ∃∃K1. ⦃G,L1⦄ ⊢ ⬈[h,T] K1 & K1 ≛[T] K2.
-#h #G #T #L2 #K2 #HLK2 #L1 #HL12
-elim (rpx_rdeq_conf … HLK2 L1)
-/3 width=3 by rdeq_sym, ex2_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_reqx.ma
new file mode 100644 (file)
index 0000000..b0b50cf
--- /dev/null
@@ -0,0 +1,170 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_drops.ma".
+include "static_2/static/reqx_fqup.ma".
+include "static_2/static/reqx_reqx.ma".
+include "basic_2/rt_transition/rpx_fsle.ma".
+
+(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+
+(* Properties with sort-irrelevant equivalence for local environments *******)
+
+lemma rpx_pair_sn_split: ∀h,G,L1,L2,V. ⦃G,L1⦄ ⊢ ⬈[h,V] L2 → ∀I,T.
+                         ∃∃L. ⦃G,L1⦄ ⊢ ⬈[h,②{I}V.T] L & L ≛[V] L2.
+/3 width=5 by rpx_fsge_comp, rex_pair_sn_split/ qed-.
+
+lemma rpx_flat_dx_split: ∀h,G,L1,L2,T. ⦃G,L1⦄ ⊢ ⬈[h,T] L2 → ∀I,V.
+                         ∃∃L. ⦃G,L1⦄ ⊢ ⬈[h,ⓕ{I}V.T] L & L ≛[T] L2.
+/3 width=5 by rpx_fsge_comp, rex_flat_dx_split/ qed-.
+
+lemma rpx_bind_dx_split: ∀h,I,G,L1,L2,V1,T. ⦃G,L1.ⓑ{I}V1⦄ ⊢ ⬈[h,T] L2 → ∀p.
+                         ∃∃L,V. ⦃G,L1⦄ ⊢ ⬈[h,ⓑ{p,I}V1.T] L & L.ⓑ{I}V ≛[T] L2 & ⦃G,L1⦄ ⊢ V1 ⬈[h] V.
+/3 width=5 by rpx_fsge_comp, rex_bind_dx_split/ qed-.
+
+lemma rpx_bind_dx_split_void: ∀h,G,K1,L2,T. ⦃G,K1.ⓧ⦄ ⊢ ⬈[h,T] L2 → ∀p,I,V.
+                              ∃∃K2. ⦃G,K1⦄ ⊢ ⬈[h,ⓑ{p,I}V.T] K2 & K2.ⓧ ≛[T] L2.
+/3 width=5 by rpx_fsge_comp, rex_bind_dx_split_void/ qed-.
+
+lemma rpx_teqx_conf: ∀h,G. s_r_confluent1 … cdeq (rpx h G).
+/2 width=5 by teqx_rex_conf/ qed-.
+
+lemma rpx_teqx_div: ∀h,T1,T2. T1 ≛ T2 →
+                    ∀G,L1,L2. ⦃G,L1⦄ ⊢ ⬈[h,T2] L2 → ⦃G,L1⦄ ⊢ ⬈[h,T1] L2.
+/2 width=5 by teqx_rex_div/ qed-.
+
+lemma cpx_teqx_conf_rex: ∀h,G. R_confluent2_rex … (cpx h G) cdeq (cpx h G) cdeq.
+#h #G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/
+[ #G #L0 #s0 #X0 #H0 #L1 #HL01 #L2 #HL02
+  elim (teqx_inv_sort1 … H0) -H0 #s1 #H destruct
+  /3 width=3 by teqx_sort, ex2_intro/
+| #I #G #K0 #V0 #V1 #W1 #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2
+  >(teqx_inv_lref1 … H0) -H0
+  elim (rpx_inv_zero_pair_sn … H1) -H1 #K1 #X1 #HK01 #HX1 #H destruct
+  elim (reqx_inv_zero_pair_sn … H2) -H2 #K2 #X2 #HK02 #HX2 #H destruct
+  elim (IH X2 … HK01 … HK02) // -K0 -V0 #V #HV1 #HV2
+  elim (teqx_lifts_sn … HV1 … HVW1) -V1 /3 width=5 by cpx_delta, ex2_intro/
+| #I0 #G #K0 #V1 #W1 #i #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2
+  >(teqx_inv_lref1 … H0) -H0
+  elim (rpx_inv_lref_bind_sn … H1) -H1 #I1 #K1 #HK01 #H destruct
+  elim (reqx_inv_lref_bind_sn … H2) -H2 #I2 #K2 #HK02 #H destruct
+  elim (IH … HK01 … HK02) [|*: //] -K0 #V #HV1 #HV2
+  elim (teqx_lifts_sn … HV1 … HVW1) -V1 /3 width=5 by cpx_lref, ex2_intro/
+| #p #I #G #L0 #V0 #V1 #T0 #T1 #_ #_ #IHV #IHT #X0 #H0 #L1 #H1 #L2 #H2
+  elim (teqx_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #HT02 #H destruct
+  elim (rpx_inv_bind … H1) -H1 #HL01 #H1
+  elim (reqx_inv_bind … H2) -H2 #HL02 #H2
+  lapply (reqx_bind_repl_dx … H2 (BPair I V2) ?) -H2 /2 width=1 by ext2_pair/ #H2
+  elim (IHV … HV02 … HL01 … HL02) -IHV -HV02 -HL01 -HL02
+  elim (IHT … HT02 … H1 … H2) -L0 -T0
+  /3 width=5 by cpx_bind, teqx_pair, ex2_intro/
+| #I #G #L0 #V0 #V1 #T0 #T1 #_ #_ #IHV #IHT #X0 #H0 #L1 #H1 #L2 #H2
+  elim (teqx_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #HT02 #H destruct
+  elim (rpx_inv_flat … H1) -H1 #HL01 #H1
+  elim (reqx_inv_flat … H2) -H2 #HL02 #H2
+  elim (IHV … HV02 … HL01 … HL02) -IHV -HV02 -HL01 -HL02
+  elim (IHT … HT02 … H1 … H2) -L0 -V0 -T0
+  /3 width=5 by cpx_flat, teqx_pair, ex2_intro/
+| #G #L0 #V0 #U0 #T0 #T1 #HTU0 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2
+  elim (teqx_inv_pair1 … H0) -H0 #V2 #U2 #HV02 #HU02 #H destruct
+  elim (rpx_inv_bind … H1) -H1 #HL01 #H1
+  elim (reqx_inv_bind … H2) -H2 #HL02 #H2
+  lapply (rpx_inv_lifts_bi … H1 (Ⓣ) … HTU0) -H1 [6:|*: /3 width=2 by drops_refl, drops_drop/ ] #H1
+  lapply (reqx_inv_lifts_bi … H2 (Ⓣ) … HTU0) -H2 [6:|*: /3 width=2 by drops_refl, drops_drop/ ] #H2
+  elim (teqx_inv_lifts_sn … HU02 … HTU0) -U0 #T2 #HTU2 #HT02
+  elim (IH … HT02 … H1 … H2) -L0 -T0 #T #HT1
+  /3 width=5 by cpx_zeta, ex2_intro/
+| #G #L0 #V0 #T0 #T1 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2
+  elim (teqx_inv_pair1 … H0) -H0 #V2 #T2 #_ #HT02 #H destruct
+  elim (rpx_inv_flat … H1) -H1 #HL01 #H1
+  elim (reqx_inv_flat … H2) -H2 #HL02 #H2
+  elim (IH … HT02 … H1 … H2) -L0 -V0 -T0
+  /3 width=3 by cpx_eps, ex2_intro/
+| #G #L0 #V0 #T0 #T1 #_ #IH #X0 #H0 #L1 #H1 #L2 #H2
+  elim (teqx_inv_pair1 … H0) -H0 #V2 #T2 #HV02 #_ #H destruct
+  elim (rpx_inv_flat … H1) -H1 #HL01 #H1
+  elim (reqx_inv_flat … H2) -H2 #HL02 #H2
+  elim (IH … HV02 … HL01 … HL02) -L0 -V0 -T1
+  /3 width=3 by cpx_ee, ex2_intro/
+| #p #G #L0 #V0 #V1 #W0 #W1 #T0 #T1 #_ #_ #_ #IHV #IHW #IHT #X0 #H0 #L1 #H1 #L2 #H2
+  elim (teqx_inv_pair1 … H0) -H0 #V2 #X #HV02 #H0 #H destruct
+  elim (teqx_inv_pair1 … H0) -H0 #W2 #T2 #HW02 #HT02 #H destruct
+  elim (rpx_inv_flat … H1) -H1 #H1LV0 #H1
+  elim (rpx_inv_bind … H1) -H1 #H1LW0 #H1LT0
+  elim (reqx_inv_flat … H2) -H2 #H2LV0 #H2
+  elim (reqx_inv_bind … H2) -H2 #H2LW0 #H2LT0
+  lapply (reqx_bind_repl_dx … H2LT0 (BPair Abst W2) ?) -H2LT0 /2 width=1 by ext2_pair/ #H2LT0
+  elim (IHV … HV02 … H1LV0 … H2LV0) -IHV -HV02 -H1LV0 -H2LV0
+  elim (IHW … HW02 … H1LW0 … H2LW0) -IHW -HW02 -H1LW0 -H2LW0
+  elim (IHT … HT02 … H1LT0 … H2LT0) -L0 -V0 -T0
+  /4 width=7 by cpx_beta, teqx_pair, ex2_intro/ (* note: 2 teqx_pair *)
+| #p #G #L0 #V0 #V1 #U1 #W0 #W1 #T0 #T1 #_ #_ #_ #IHV #IHW #IHT #HVU1 #X0 #H0 #L1 #H1 #L2 #H2
+  elim (teqx_inv_pair1 … H0) -H0 #V2 #X #HV02 #H0 #H destruct
+  elim (teqx_inv_pair1 … H0) -H0 #W2 #T2 #HW02 #HT02 #H destruct
+  elim (rpx_inv_flat … H1) -H1 #H1LV0 #H1
+  elim (rpx_inv_bind … H1) -H1 #H1LW0 #H1LT0
+  elim (reqx_inv_flat … H2) -H2 #H2LV0 #H2
+  elim (reqx_inv_bind … H2) -H2 #H2LW0 #H2LT0
+  lapply (reqx_bind_repl_dx … H2LT0 (BPair Abbr W2) ?) -H2LT0 /2 width=1 by ext2_pair/ #H2LT0
+  elim (IHV … HV02 … H1LV0 … H2LV0) -IHV -HV02 -H1LV0 -H2LV0 #V #HV1
+  elim (IHW … HW02 … H1LW0 … H2LW0) -IHW -HW02 -H1LW0 -H2LW0
+  elim (IHT … HT02 … H1LT0 … H2LT0) -L0 -V0 -T0
+  elim (teqx_lifts_sn … HV1 … HVU1) -V1
+  /4 width=9 by cpx_theta, teqx_pair, ex2_intro/ (* note: 2 teqx_pair *)
+]
+qed-.
+
+lemma cpx_teqx_conf: ∀h,G,L. ∀T0:term. ∀T1. ⦃G,L⦄ ⊢ T0 ⬈[h] T1 →
+                     ∀T2. T0 ≛ T2 →
+                     ∃∃T. T1 ≛ T & ⦃G,L⦄ ⊢ T2 ⬈[h] T.
+#h #G #L #T0 #T1 #HT01 #T2 #HT02
+elim (cpx_teqx_conf_rex … HT01 … HT02 L … L) -HT01 -HT02
+/2 width=3 by rex_refl, ex2_intro/
+qed-.
+
+lemma teqx_cpx_trans: ∀h,G,L,T2. ∀T0:term. T2 ≛ T0 →
+                      ∀T1. ⦃G,L⦄ ⊢ T0 ⬈[h] T1 → 
+                      ∃∃T. ⦃G,L⦄ ⊢ T2 ⬈[h] T & T ≛ T1.
+#h #G #L #T2 #T0 #HT20 #T1 #HT01
+elim (cpx_teqx_conf … HT01 T2) -HT01 /3 width=3 by teqx_sym, ex2_intro/
+qed-.
+
+(* Basic_2A1: uses: cpx_lleq_conf *)
+lemma cpx_reqx_conf: ∀h,G,L0,T0,T1. ⦃G,L0⦄ ⊢ T0 ⬈[h] T1 →
+                     ∀L2. L0 ≛[T0] L2 →
+                     ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈[h] T & T1 ≛ T.
+#h #G #L0 #T0 #T1 #HT01 #L2 #HL02
+elim (cpx_teqx_conf_rex … HT01 T0 … L0 … HL02) -HT01 -HL02
+/2 width=3 by rex_refl, ex2_intro/
+qed-.
+
+(* Basic_2A1: uses: lleq_cpx_trans *)
+lemma reqx_cpx_trans: ∀h,G,L2,L0,T0. L2 ≛[T0] L0 →
+                      ∀T1. ⦃G,L0⦄ ⊢ T0 ⬈[h] T1 →
+                      ∃∃T. ⦃G,L2⦄ ⊢ T0 ⬈[h] T & T ≛ T1.
+#h #G #L2 #L0 #T0 #HL20 #T1 #HT01
+elim (cpx_reqx_conf … HT01 L2) -HT01
+/3 width=3 by reqx_sym, teqx_sym, ex2_intro/
+qed-.
+
+lemma rpx_reqx_conf: ∀h,G,T. confluent2 … (rpx h G T) (reqx T).
+/3 width=6 by rpx_fsge_comp, reqx_fsge_comp, cpx_teqx_conf_rex, rex_conf/ qed-.
+
+lemma reqx_rpx_trans: ∀h,G,T,L2,K2. ⦃G,L2⦄ ⊢ ⬈[h,T] K2 →
+                      ∀L1. L1 ≛[T] L2 →
+                      ∃∃K1. ⦃G,L1⦄ ⊢ ⬈[h,T] K1 & K1 ≛[T] K2.
+#h #G #T #L2 #K2 #HLK2 #L1 #HL12
+elim (rpx_reqx_conf … HLK2 L1)
+/3 width=3 by reqx_sym, ex2_intro/
+qed-.
index 7773fd7b97badbe8c169bd79610b2ae69a5e1475..7636e65e897c376cba85330cf64c698611e1f170 100644 (file)
@@ -25,7 +25,7 @@ table {
         ]
         [ { "context-sensitive native validity" * } {
              [ [ "restricted refinement for lenvs" ] "lsubv ( ? ⊢ ? ⫃![?,?] ? )" "lsubv_drops" + "lsubv_lsubr" + "lsubv_lsuba" + "lsubv_cpms" + "lsubv_cpcs" + "lsubv_cnv" + "lsubv_lsubv" * ]
-             [ [ "for terms" ] "cnv" + "( ⦃?,?⦄ ⊢ ? ![?,?] )" "cnv_acle" + "cnv_drops" + "cnv_fqus" + "cnv_aaa" + "cnv_fsb" + "cnv_cpm_trans" + "cnv_cpm_conf" + "cnv_cpm_tdeq" + "cnv_cpm_tdeq_trans" + "cnv_cpm_tdeq_conf" + "cnv_cpms_tdeq" + "cnv_cpms_conf" + "cnv_cpms_tdeq_conf" + "cnv_cpme" + "cnv_cpmuwe" + "cnv_cpmuwe_cpme" + "cnv_cpts" + "cnv_cpes" + "cnv_cpcs" + "cnv_preserve_sub" + "cnv_preserve" + "cnv_preserve_cpes" + "cnv_preserve_cpcs" + "cnv_eval" * ]
+             [ [ "for terms" ] "cnv" + "( ⦃?,?⦄ ⊢ ? ![?,?] )" "cnv_acle" + "cnv_drops" + "cnv_fqus" + "cnv_aaa" + "cnv_fsb" + "cnv_cpm_trans" + "cnv_cpm_conf" + "cnv_cpm_teqx" + "cnv_cpm_teqx_trans" + "cnv_cpm_teqx_conf" + "cnv_cpms_teqx" + "cnv_cpms_conf" + "cnv_cpms_teqx_conf" + "cnv_cpmre" + "cnv_cpmuwe" + "cnv_cpmuwe_cpmre" + "cnv_cpts" + "cnv_cpes" + "cnv_cpcs" + "cnv_preserve_sub" + "cnv_preserve" + "cnv_preserve_cpes" + "cnv_preserve_cpcs" + "cnv_eval" * ]
           }
         ]
      }
@@ -65,7 +65,7 @@ table {
           }
         ]
         [ { "context-sensitive parallel r-computation" * } {
-             [ [ "evaluation for terms" ] "cpre ( ⦃?,?⦄ ⊢ ? ➡*[?] 𝐍⦃?⦄ )" "cpre_csx" + "cpre_cpms" + "cpre_cpre" * ]
+             [ [ "evaluation for terms" ] "cprre ( ⦃?,?⦄ ⊢ ? ➡*[?] 𝐍⦃?⦄ )" "cprre_csx" + "cprre_cpms" + "cprre_cprre" * ]
              [ [ "for lenvs on all entries" ] "lprs ( ⦃?,?⦄ ⊢ ➡*[?] ? )" "lprs_tc" + "lprs_ctc" + "lprs_length" + "lprs_drops" + "lprs_aaa" + "lprs_lpr" + "lprs_lpxs" + "lprs_cpms" + "lprs_cprs" + "lprs_lprs" * ]
              [ [ "for binders" ] "cprs_ext" + "( ⦃?,?⦄ ⊢ ? ➡*[?] ?)" * ]
              [ [ "for terms" ] "cprs" + "( ⦃?,?⦄ ⊢ ? ➡*[?] ?)" "cprs_ctc" + "cprs_tweq" + "cprs_drops" + "cprs_cpr" + "cprs_lpr" + "cprs_cnr" + "cprs_cprs" * ]
@@ -74,12 +74,12 @@ table {
         [ { "t-bound context-sensitive parallel rt-computation" * } {
              [ [ "t-unbound whd evaluation for terms" ] "cpmuwe ( ⦃?,?⦄ ⊢ ? ⬌*𝐍𝐖*[?,?] ? )" "cpmuwe_csx" + "cpmuwe_cpmuwe" * ]
              [ [ "t-unbound whd normal form for terms" ] "cnuw ( ⦃?,?⦄ ⊢ ⬌𝐍𝐖*[?] ? )" "cnuw_drops" + "cnuw_simple" + "cnuw_cnuw" * ]
-             [ [ "t-bpund evaluation for terms" ] "cpme ( ⦃?,?⦄ ⊢ ? ➡*[?,?] 𝐍⦃?⦄ )" "cpme_aaa" * ]
-             [ [ "for terms" ] "cpms" + "( ⦃?,?⦄ ⊢ ? ➡*[?,?] ? )" "cpms_drops" + "cpms_lsubr" + "cpms_rdeq" + "cpms_aaa" + "cpms_lpr" + "cpms_cpxs" + "cpms_fpbs" + "cpms_fpbg" + "cpms_cpms" * ]
+             [ [ "t-bpund evaluation for terms" ] "cpmre ( ⦃?,?⦄ ⊢ ? ➡*[?,?] 𝐍⦃?⦄ )" "cpmre_aaa" * ]
+             [ [ "for terms" ] "cpms" + "( ⦃?,?⦄ ⊢ ? ➡*[?,?] ? )" "cpms_drops" + "cpms_lsubr" + "cpms_reqx" + "cpms_aaa" + "cpms_lpr" + "cpms_cpxs" + "cpms_fpbs" + "cpms_fpbg" + "cpms_cpms" * ]
           }
         ]
         [ { "unbound context-sensitive parallel rst-computation" * } {
-             [ [ "strongly normalizing for closures" ] "fsb" + "( ≥[?] 𝐒⦃?,?,?⦄ )" "fsb_fdeq" + "fsb_aaa" + "fsb_csx" + "fsb_fpbg" * ]
+             [ [ "strongly normalizing for closures" ] "fsb" + "( ≥[?] 𝐒⦃?,?,?⦄ )" "fsb_feqx" + "fsb_aaa" + "fsb_csx" + "fsb_fpbg" * ]
              [ [ "proper for closures" ] "fpbg" + "( ⦃?,?,?⦄ >[?] ⦃?,?,?⦄ )" "fpbg_fqup" + "fpbg_cpxs" + "fpbg_lpxs" + "fpbg_fpbs" + "fpbg_fpbg" * ]
              [ [ "for closures" ] "fpbs" + "( ⦃?,?,?⦄ ≥[?] ⦃?,?,?⦄ )" "fpbs_fqup" + "fpbs_fqus" + "fpbs_aaa" + "fpbs_cpx" + "fpbs_fpb" + "fpbs_cpxs" + "fpbs_lpxs" + "fpbs_csx" + "fpbs_fpbs" * ]
           }
@@ -88,10 +88,10 @@ table {
              [ [ "compatibility for lenvs" ] "jsx" + "( ? ⊢ ? ⊒[?] ? )" "jsx_drops" + "jsx_lsubr" + "jsx_csx" + "jsx_rsx" + "jsx_jsx" * ]
              [ [ "strongly normalizing for lenvs on referred entries" ] "rsx" + "( ? ⊢ ⬈*[?,?] 𝐒⦃?⦄ )" "rsx_length" + "rsx_drops" + "rsx_fqup" + "rsx_cpxs" + "rsx_csx" + "rsx_rsx" * ]
              [ [ "strongly normalizing for term vectors" ] "csx_vector" + "( ⦃?,?⦄ ⊢ ⬈*[?] 𝐒⦃?⦄ )" "csx_cnx_vector" + "csx_csx_vector" * ]
-             [ [ "strongly normalizing for terms" ] "csx" + "( ⦃?,?⦄ ⊢ ⬈*[?] 𝐒⦃?⦄ )" "csx_simple" + "csx_simple_teqo" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_rdeq" + "csx_fdeq" + "csx_aaa" + "csx_gcp" + "csx_gcr" + "csx_lpx" + "csx_cnx" + "csx_fpbq" + "csx_cpxs" + "csx_lpxs" + "csx_csx" * ]
-             [ [ "for lenvs on all entries" ] "lpxs" + "( ⦃?,?⦄ ⊢ ⬈*[?] ? )" "lpxs_length" + "lpxs_drops" + "lpxs_rdeq" + "lpxs_fdeq" + "lpxs_aaa" + "lpxs_lpx" + "lpxs_cpxs" + "lpxs_lpxs" * ]
+             [ [ "strongly normalizing for terms" ] "csx" + "( ⦃?,?⦄ ⊢ ⬈*[?] 𝐒⦃?⦄ )" "csx_simple" + "csx_simple_teqo" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_reqx" + "csx_feqx" + "csx_aaa" + "csx_gcp" + "csx_gcr" + "csx_lpx" + "csx_cnx" + "csx_fpbq" + "csx_cpxs" + "csx_lpxs" + "csx_csx" * ]
+             [ [ "for lenvs on all entries" ] "lpxs" + "( ⦃?,?⦄ ⊢ ⬈*[?] ? )" "lpxs_length" + "lpxs_drops" + "lpxs_reqx" + "lpxs_feqx" + "lpxs_aaa" + "lpxs_lpx" + "lpxs_cpxs" + "lpxs_lpxs" * ]
              [ [ "for binders" ] "cpxs_ext" + "( ⦃?,?⦄ ⊢ ? ⬈*[?] ? )" * ]
-             [ [ "for terms" ] "cpxs" + "( ⦃?,?⦄ ⊢ ? ⬈*[?] ? )" "cpxs_tdeq" + "cpxs_teqo" + "cpxs_teqo_vector" + "cpxs_drops" + "cpxs_fqus" + "cpxs_lsubr" + "cpxs_rdeq" + "cpxs_fdeq" + "cpxs_aaa" + "cpxs_lpx" + "cpxs_cnx" + "cpxs_cpxs" * ] 
+             [ [ "for terms" ] "cpxs" + "( ⦃?,?⦄ ⊢ ? ⬈*[?] ? )" "cpxs_teqx" + "cpxs_teqo" + "cpxs_teqo_vector" + "cpxs_drops" + "cpxs_fqus" + "cpxs_lsubr" + "cpxs_reqx" + "cpxs_feqx" + "cpxs_aaa" + "cpxs_lpx" + "cpxs_cnx" + "cpxs_cpxs" * ] 
           }
         ]
      }
@@ -103,27 +103,27 @@ table {
           }
         ]
         [ { "context-sensitive parallel r-transition" * } {
-             [ [ "normal form for terms" ] "cnr ( ⦃?,?⦄ ⊢ ➡[?] 𝐍⦃?⦄ )" "cnr_simple" + "cnr_tdeq" + "cnr_drops" * ]
+             [ [ "normal form for terms" ] "cnr ( ⦃?,?⦄ ⊢ ➡[?] 𝐍⦃?⦄ )" "cnr_simple" + "cnr_teqx" + "cnr_drops" * ]
              [ [ "for lenvs on all entries" ] "lpr" + "( ⦃?,?⦄ ⊢ ➡[?] ? )" "lpr_length" + "lpr_drops" + "lpr_fquq" + "lpr_aaa" + "lpr_lpx" + "lpr_lpr" * ]
              [ [ "for binders" ] "cpr_ext" + "( ⦃?,?⦄ ⊢ ? ➡[?] ? )" * ]
-             [ [ "for terms" ] "cpr" + "( ⦃?,?⦄ ⊢ ? ➡[?] ? )" "cpr_drops" + "cpr_drops_basic" + "cpr_tdeq" + "cpr_cpr" * ]
+             [ [ "for terms" ] "cpr" + "( ⦃?,?⦄ ⊢ ? ➡[?] ? )" "cpr_drops" + "cpr_drops_basic" + "cpr_teqx" + "cpr_cpr" * ]
           }
         ]
         [ { "t-bound context-sensitive parallel rt-transition" * } {
-             [ [ "for terms" ] "cpm" + "( ⦃?,?⦄ ⊢ ? ➡[?,?] ? )" "cpm_simple" + "cpm_tdeq" + "cpm_drops" + "cpm_lsubr" + "cpm_fsle" + "cpm_aaa" + "cpm_cpx" * ]
+             [ [ "for terms" ] "cpm" + "( ⦃?,?⦄ ⊢ ? ➡[?,?] ? )" "cpm_simple" + "cpm_teqx" + "cpm_drops" + "cpm_lsubr" + "cpm_fsle" + "cpm_aaa" + "cpm_cpx" * ]
           }
         ]
         [ { "unbound parallel rst-transition" * } {
              [ [ "for closures" ] "fpbq" + "( ⦃?,?,?⦄ ≽[?] ⦃?,?,?⦄ )" "fpbq_aaa" + "fpbq_fpb" * ]
-             [ [ "proper for closures" ] "fpb" + "( ⦃?,?,?⦄ ≻[?] ⦃?,?,?⦄ )" "fpb_rdeq" + "fpb_fdeq" * ]
+             [ [ "proper for closures" ] "fpb" + "( ⦃?,?,?⦄ ≻[?] ⦃?,?,?⦄ )" "fpb_reqx" + "fpb_feqx" * ]
           }
         ]
         [ { "unbound context-sensitive parallel rt-transition" * } {
              [ [ "normal form for terms" ] "cnx" + "( ⦃?,?⦄ ⊢ ⬈[?] 𝐍⦃?⦄ )" "cnx_simple" + "cnx_drops" + "cnx_basic" + "cnx_cnx" * ]
-             [ [ "for lenvs on referred entries" ] "rpx" + "( ⦃?,?⦄ ⊢ ⬈[?,?] ? )" "rpx_length" + "rpx_drops" + "rpx_fqup" + "rpx_fsle" + "rpx_rdeq" + "rpx_lpx" + "rpx_rpx" * ]
-             [ [ "for lenvs on all entries" ] "lpx" + "( ⦃?,?⦄ ⊢ ⬈[?] ? )" "lpx_length" + "lpx_drops" + "lpx_fquq" + "lpx_fsle" + "lpx_rdeq" + "lpx_aaa" * ]
+             [ [ "for lenvs on referred entries" ] "rpx" + "( ⦃?,?⦄ ⊢ ⬈[?,?] ? )" "rpx_length" + "rpx_drops" + "rpx_fqup" + "rpx_fsle" + "rpx_reqx" + "rpx_lpx" + "rpx_rpx" * ]
+             [ [ "for lenvs on all entries" ] "lpx" + "( ⦃?,?⦄ ⊢ ⬈[?] ? )" "lpx_length" + "lpx_drops" + "lpx_fquq" + "lpx_fsle" + "lpx_reqx" + "lpx_aaa" * ]
              [ [ "for binders" ] "cpx_ext" + "( ⦃?,?⦄ ⊢ ? ⬈[?] ? )" * ]
-             [ [ "for terms" ] "cpx" + "( ⦃?,?⦄ ⊢ ? ⬈[?] ? )" "cpx_simple" + "cpx_drops" + "cpx_drops_basic" + "cpx_fqus" + "cpx_lsubr" + "cpx_req" + "cpx_rdeq" + "cpx_fdeq" * ]
+             [ [ "for terms" ] "cpx" + "( ⦃?,?⦄ ⊢ ? ⬈[?] ? )" "cpx_simple" + "cpx_drops" + "cpx_drops_basic" + "cpx_fqus" + "cpx_lsubr" + "cpx_req" + "cpx_reqx" + "cpx_feqx" * ]
           }
         ]
         [ { "bound context-sensitive parallel rt-transition" * } {
@@ -150,7 +150,7 @@ class "italic"            { 2 }
              "scpes_cpcs" + "scpes_scpes"
           }
         ]
-        [ [ "for lenvs on referred entries" ] "rpxs" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] ? )" "rpxs_length" + "rpxs_drops" + "rpxs_fqup" + "rpxs_rdeq" + "rpxs_fdeq" + "rpxs_aaa" + "rpxs_cpxs" + "rpxs_lpxs" + "rpxs_rpxs" * ]
+        [ [ "for lenvs on referred entries" ] "rpxs" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] ? )" "rpxs_length" + "rpxs_drops" + "rpxs_fqup" + "rpxs_reqx" + "rpxs_feqx" + "rpxs_aaa" + "rpxs_cpxs" + "rpxs_lpxs" + "rpxs_rpxs" * ]
         [ [ "for lenvs on referred entries" ]
               "lfpr" + "( ⦃?,?⦄ ⊢ ➡[?,?] ? )" "lfpr_length" + "lfpr_drops" + "lfpr_fquq" + "lfpr_fqup" + "lfpr_aaa" + "lfpr_rpx" + "lfpr_lfpr" * ]
         [ { "evaluation for context-sensitive rt-reduction" * } {
index 13afbaf0450002b59f738149f0a46c582d4e7b04..df9e4232861ff8d9f0c9d8b4f41114a0bf04ed60 100644 (file)
@@ -2,3 +2,4 @@
 ../../matitac.opt static_2
 ../../matitac.opt basic_2
 ../../matitac.opt apps_2
+../../matitac.opt alpha_1
index 36fa26303e8e9ca167a44c4db2565c10027ec170..e65b5375a771c1ec43e1ac75eed875e441c32676 100644 (file)
@@ -15,6 +15,7 @@
 include "ground_2/notation/functions/uparrow_1.ma".
 include "ground_2/notation/functions/downarrow_1.ma".
 include "arithmetics/nat.ma".
+include "ground_2/pull/pull_2.ma".
 include "ground_2/lib/relations.ma".
 
 (* ARITHMETICAL PROPERTIES **************************************************)
@@ -153,6 +154,14 @@ lemma lt_S_S: ∀x,y. x < y → ↑x < ↑y.
 lemma lt_S: ∀n,m. n < m → n < ↑m.
 /2 width=1 by le_S/ qed.
 
+lemma monotonic_lt_minus_r:
+∀p,q,n. q < n -> q < p → n-p < n-q.
+#p #q #n #Hn #H
+lapply (monotonic_le_minus_r … n H) -H #H
+@(le_to_lt_to_lt … H) -H
+/2 width=1 by lt_plus_to_minus/
+qed.
+
 lemma max_S1_le_S: ∀n1,n2,n. (n1 ∨ n2) ≤ n → (↑n1 ∨ n2) ≤ ↑n.
 /4 width=2 by to_max, le_maxr, le_S_S, le_S/ qed-.
 
@@ -294,6 +303,21 @@ lemma le_elim: ∀R:relation nat.
 #n1 #H elim (lt_le_false … H) -H //
 qed-.
 
+lemma nat_elim_le_sn (Q:relation …):
+      (∀m1,m2. (∀m. m < m2-m1 → Q (m2-m) m2) → m1 ≤ m2 → Q m1 m2) →
+      ∀n1,n2. n1 ≤ n2 → Q n1 n2.
+#Q #IH #n1 #n2 #Hn
+<(minus_minus_m_m … Hn) -Hn
+lapply (minus_le n2 n1)
+let d ≝ (n2-n1)
+@(nat_elim1 … d) -d -n1 #d
+@pull_2 #Hd
+<(minus_minus_m_m … Hd) in ⊢ (%→?); -Hd
+let n1 ≝ (n2-d) #IHd
+@IH -IH [| // ] #m #Hn
+/4 width=3 by lt_to_le, lt_to_le_to_lt/
+qed-.
+
 (* Iterators ****************************************************************)
 
 (* Note: see also: lib/arithemetics/bigops.ma *)
index 76381a9faba10bdac541bd41d8395db1d991d360..cc4bf1797629af644cf4211aee7360f683475da7 100644 (file)
@@ -12,7 +12,6 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground_2/pull/pull_2.ma".
 include "ground_2/pull/pull_4.ma".
 include "ground_2/relocation/rtmap_uni.ma".
 include "static_2/notation/relations/relation_3.ma".
diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma
deleted file mode 100644 (file)
index 3485e88..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/syntax/tdeq.ma".
-include "static_2/relocation/lifts_lifts.ma".
-
-(* GENERIC RELOCATION FOR TERMS *********************************************)
-
-(* Properties with sort-irrelevant equivalence for terms ********************)
-
-lemma tdeq_lifts_sn: liftable2_sn tdeq.
-#T1 #T2 #H elim H -T1 -T2 [||| * ]
-[ #s1 #s2 #f #X #H >(lifts_inv_sort1 … H) -H
-  /3 width=3 by lifts_sort, tdeq_sort, ex2_intro/
-| #i #f #X #H elim (lifts_inv_lref1 … H) -H
-  /3 width=3 by lifts_lref, tdeq_lref, ex2_intro/
-| #l #f #X #H >(lifts_inv_gref1 … H) -H
-  /2 width=3 by lifts_gref, tdeq_gref, ex2_intro/
-| #p #I #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #f #X #H elim (lifts_inv_bind1 … H) -H
-  #W1 #U1 #HVW1 #HTU1 #H destruct
-  elim (IHV … HVW1) -V1 elim (IHT … HTU1) -T1
-  /3 width=5 by lifts_bind, tdeq_pair, ex2_intro/
-| #I #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #f #X #H elim (lifts_inv_flat1 … H) -H
-  #W1 #U1 #HVW1 #HTU1 #H destruct
-  elim (IHV … HVW1) -V1 elim (IHT … HTU1) -T1
-  /3 width=5 by lifts_flat, tdeq_pair, ex2_intro/
-]
-qed-.
-
-lemma tdeq_lifts_dx: liftable2_dx tdeq.
-/3 width=3 by tdeq_lifts_sn, liftable2_sn_dx, tdeq_sym/ qed-.
-
-lemma tdeq_lifts_bi: liftable2_bi tdeq.
-/3 width=6 by tdeq_lifts_sn, liftable2_sn_bi/ qed-.
-
-(* Inversion lemmas with sort-irrelevant equivalence for terms **************)
-
-lemma tdeq_inv_lifts_sn: deliftable2_sn tdeq.
-#U1 #U2 #H elim H -U1 -U2 [||| * ]
-[ #s1 #s2 #f #X #H >(lifts_inv_sort2 … H) -H
-  /3 width=3 by lifts_sort, tdeq_sort, ex2_intro/
-| #i #f #X #H elim (lifts_inv_lref2 … H) -H
-  /3 width=3 by lifts_lref, tdeq_lref, ex2_intro/
-| #l #f #X #H >(lifts_inv_gref2 … H) -H
-  /2 width=3 by lifts_gref, tdeq_gref, ex2_intro/
-| #p #I #W1 #W2 #U1 #U2 #_ #_ #IHW #IHU #f #X #H elim (lifts_inv_bind2 … H) -H
-  #V1 #T1 #HVW1 #HTU1 #H destruct
-  elim (IHW … HVW1) -W1 elim (IHU … HTU1) -U1
-  /3 width=5 by lifts_bind, tdeq_pair, ex2_intro/
-| #I #W1 #W2 #U1 #U2 #_ #_ #IHW #IHU #f #X #H elim (lifts_inv_flat2 … H) -H
-  #V1 #T1 #HVW1 #HTU1 #H destruct
-  elim (IHW … HVW1) -W1 elim (IHU … HTU1) -U1
-  /3 width=5 by lifts_flat, tdeq_pair, ex2_intro/
-]
-qed-.
-
-lemma tdeq_inv_lifts_dx: deliftable2_dx tdeq.
-/3 width=3 by tdeq_inv_lifts_sn, deliftable2_sn_dx, tdeq_sym/ qed-.
-
-lemma tdeq_inv_lifts_bi: deliftable2_bi tdeq.
-/3 width=6 by tdeq_inv_lifts_sn, deliftable2_sn_bi/ qed-.
-
-lemma tdeq_lifts_inv_pair_sn (I) (f:rtmap):
-                             ∀X,T. ⇧*[f]X ≘ T → ∀V. ②{I}V.T ≛ X → ⊥.
-#I #f #X #T #H elim H -f -X -T
-[ #f #s #V #H
-  elim (tdeq_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
-| #f #i #j #_ #V #H
-  elim (tdeq_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
-| #f #l #V #H
-  elim (tdeq_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
-| #f #p #J #X1 #T1 #X2 #T2 #_ #_ #_ #IH2 #V #H
-  elim (tdeq_inv_pair1 … H) -H #Z1 #Z2 #_ #HZ2 #H destruct
-  /2 width=2 by/
-| #f #J #X1 #T1 #X2 #T2 #_ #_ #_ #IH2 #V #H
-  elim (tdeq_inv_pair1 … H) -H #Z1 #Z2 #_ #HZ2 #H destruct
-  /2 width=2 by/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_teqx.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_teqx.ma
new file mode 100644 (file)
index 0000000..e508856
--- /dev/null
@@ -0,0 +1,90 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/teqx.ma".
+include "static_2/relocation/lifts_lifts.ma".
+
+(* GENERIC RELOCATION FOR TERMS *********************************************)
+
+(* Properties with sort-irrelevant equivalence for terms ********************)
+
+lemma teqx_lifts_sn: liftable2_sn teqx.
+#T1 #T2 #H elim H -T1 -T2 [||| * ]
+[ #s1 #s2 #f #X #H >(lifts_inv_sort1 … H) -H
+  /3 width=3 by lifts_sort, teqx_sort, ex2_intro/
+| #i #f #X #H elim (lifts_inv_lref1 … H) -H
+  /3 width=3 by lifts_lref, teqx_lref, ex2_intro/
+| #l #f #X #H >(lifts_inv_gref1 … H) -H
+  /2 width=3 by lifts_gref, teqx_gref, ex2_intro/
+| #p #I #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #f #X #H elim (lifts_inv_bind1 … H) -H
+  #W1 #U1 #HVW1 #HTU1 #H destruct
+  elim (IHV … HVW1) -V1 elim (IHT … HTU1) -T1
+  /3 width=5 by lifts_bind, teqx_pair, ex2_intro/
+| #I #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT #f #X #H elim (lifts_inv_flat1 … H) -H
+  #W1 #U1 #HVW1 #HTU1 #H destruct
+  elim (IHV … HVW1) -V1 elim (IHT … HTU1) -T1
+  /3 width=5 by lifts_flat, teqx_pair, ex2_intro/
+]
+qed-.
+
+lemma teqx_lifts_dx: liftable2_dx teqx.
+/3 width=3 by teqx_lifts_sn, liftable2_sn_dx, teqx_sym/ qed-.
+
+lemma teqx_lifts_bi: liftable2_bi teqx.
+/3 width=6 by teqx_lifts_sn, liftable2_sn_bi/ qed-.
+
+(* Inversion lemmas with sort-irrelevant equivalence for terms **************)
+
+lemma teqx_inv_lifts_sn: deliftable2_sn teqx.
+#U1 #U2 #H elim H -U1 -U2 [||| * ]
+[ #s1 #s2 #f #X #H >(lifts_inv_sort2 … H) -H
+  /3 width=3 by lifts_sort, teqx_sort, ex2_intro/
+| #i #f #X #H elim (lifts_inv_lref2 … H) -H
+  /3 width=3 by lifts_lref, teqx_lref, ex2_intro/
+| #l #f #X #H >(lifts_inv_gref2 … H) -H
+  /2 width=3 by lifts_gref, teqx_gref, ex2_intro/
+| #p #I #W1 #W2 #U1 #U2 #_ #_ #IHW #IHU #f #X #H elim (lifts_inv_bind2 … H) -H
+  #V1 #T1 #HVW1 #HTU1 #H destruct
+  elim (IHW … HVW1) -W1 elim (IHU … HTU1) -U1
+  /3 width=5 by lifts_bind, teqx_pair, ex2_intro/
+| #I #W1 #W2 #U1 #U2 #_ #_ #IHW #IHU #f #X #H elim (lifts_inv_flat2 … H) -H
+  #V1 #T1 #HVW1 #HTU1 #H destruct
+  elim (IHW … HVW1) -W1 elim (IHU … HTU1) -U1
+  /3 width=5 by lifts_flat, teqx_pair, ex2_intro/
+]
+qed-.
+
+lemma teqx_inv_lifts_dx: deliftable2_dx teqx.
+/3 width=3 by teqx_inv_lifts_sn, deliftable2_sn_dx, teqx_sym/ qed-.
+
+lemma teqx_inv_lifts_bi: deliftable2_bi teqx.
+/3 width=6 by teqx_inv_lifts_sn, deliftable2_sn_bi/ qed-.
+
+lemma teqx_lifts_inv_pair_sn (I) (f:rtmap):
+                             ∀X,T. ⇧*[f]X ≘ T → ∀V. ②{I}V.T ≛ X → ⊥.
+#I #f #X #T #H elim H -f -X -T
+[ #f #s #V #H
+  elim (teqx_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
+| #f #i #j #_ #V #H
+  elim (teqx_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
+| #f #l #V #H
+  elim (teqx_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
+| #f #p #J #X1 #T1 #X2 #T2 #_ #_ #_ #IH2 #V #H
+  elim (teqx_inv_pair1 … H) -H #Z1 #Z2 #_ #HZ2 #H destruct
+  /2 width=2 by/
+| #f #J #X1 #T1 #X2 #T2 #_ #_ #_ #IH2 #V #H
+  elim (teqx_inv_pair1 … H) -H #Z1 #Z2 #_ #HZ2 #H destruct
+  /2 width=2 by/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma
deleted file mode 100644 (file)
index fa341e4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/syntax/tdeq.ma".
-include "static_2/s_transition/fqu_length.ma".
-
-(* SUPCLOSURE ***************************************************************)
-
-(* Inversion lemmas with context-free sort-irrelevant equivalence for terms *)
-
-fact fqu_inv_tdeq_aux: ∀b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T2⦄ →
-                       G1 = G2 → |L1| = |L2| → T1 ≛ T2 → ⊥.
-#b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2
-[1: #I #G #L #V #_ #H elim (succ_inv_refl_sn … H)
-|6: #I #G #L #T #U #_ #_ #H elim (succ_inv_refl_sn … H)
-]
-/2 width=6 by tdeq_inv_pair_xy_y, tdeq_inv_pair_xy_x/
-qed-.
-
-(* Basic_2A1: uses: fqu_inv_eq *)
-lemma fqu_inv_tdeq: ∀b,G,L1,L2,T1,T2. ⦃G,L1,T1⦄ ⬂[b] ⦃G,L2,T2⦄ →
-                    |L1| = |L2| → T1 ≛ T2 → ⊥.
-#b #G #L1 #L2 #T1 #T2 #H
-@(fqu_inv_tdeq_aux … H) // (**) (* full auto fails *)
-qed-. 
diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_teqx.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_teqx.ma
new file mode 100644 (file)
index 0000000..8e94430
--- /dev/null
@@ -0,0 +1,36 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/teqx.ma".
+include "static_2/s_transition/fqu_length.ma".
+
+(* SUPCLOSURE ***************************************************************)
+
+(* Inversion lemmas with context-free sort-irrelevant equivalence for terms *)
+
+fact fqu_inv_teqx_aux: ∀b,G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ⬂[b] ⦃G2,L2,T2⦄ →
+                       G1 = G2 → |L1| = |L2| → T1 ≛ T2 → ⊥.
+#b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2
+[1: #I #G #L #V #_ #H elim (succ_inv_refl_sn … H)
+|6: #I #G #L #T #U #_ #_ #H elim (succ_inv_refl_sn … H)
+]
+/2 width=6 by teqx_inv_pair_xy_y, teqx_inv_pair_xy_x/
+qed-.
+
+(* Basic_2A1: uses: fqu_inv_eq *)
+lemma fqu_inv_teqx: ∀b,G,L1,L2,T1,T2. ⦃G,L1,T1⦄ ⬂[b] ⦃G,L2,T2⦄ →
+                    |L1| = |L2| → T1 ≛ T2 → ⊥.
+#b #G #L1 #L2 #T1 #T2 #H
+@(fqu_inv_teqx_aux … H) // (**) (* full auto fails *)
+qed-. 
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma
deleted file mode 100644 (file)
index d002095..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/fdeq.ma".
-include "static_2/static/aaa_rdeq.ma".
-
-(* ATONIC ARITY ASSIGNMENT ON TERMS *****************************************)
-
-(* Properties with sort-irrelevant equivalence on referred entries **********)
-
-lemma aaa_fdeq_conf: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → 
-                     ∀A. ⦃G1,L1⦄ ⊢ T1 ⁝ A → ⦃G2,L2⦄ ⊢ T2 ⁝ A.
-#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
-/2 width=5 by aaa_tdeq_conf_rdeq/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_feqx.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_feqx.ma
new file mode 100644 (file)
index 0000000..157aac3
--- /dev/null
@@ -0,0 +1,25 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/feqx.ma".
+include "static_2/static/aaa_reqx.ma".
+
+(* ATONIC ARITY ASSIGNMENT ON TERMS *****************************************)
+
+(* Properties with sort-irrelevant equivalence on referred entries **********)
+
+lemma aaa_feqx_conf: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ → 
+                     ∀A. ⦃G1,L1⦄ ⊢ T1 ⁝ A → ⦃G2,L2⦄ ⊢ T2 ⁝ A.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+/2 width=5 by aaa_teqx_conf_reqx/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma
deleted file mode 100644 (file)
index c08a024..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq.ma".
-include "static_2/static/aaa.ma".
-
-(* ATONIC ARITY ASSIGNMENT ON TERMS *****************************************)
-
-(* Properties with sort-irrelevant equivalence on referred entries **********)
-
-lemma aaa_tdeq_conf_rdeq: ∀G,L1,T1,A. ⦃G,L1⦄ ⊢ T1 ⁝ A → ∀T2. T1 ≛ T2 →
-                          ∀L2. L1 ≛[T1] L2 → ⦃G,L2⦄ ⊢ T2 ⁝ A.
-#G #L1 #T1 #A #H elim H -G -L1 -T1 -A
-[ #G #L1 #s1 #X #H1 elim (tdeq_inv_sort1 … H1) -H1 //
-| #I #G #L1 #V1 #B #_ #IH #X #H1 >(tdeq_inv_lref1 … H1) -H1
-  #Y #H2 elim (rdeq_inv_zero_pair_sn … H2) -H2
-  #L2 #V2 #HL12 #HV12 #H destruct /3 width=1 by aaa_zero/
-| #I #G #L1 #A #i #_ #IH #X #H1 >(tdeq_inv_lref1 … H1) -H1
-  #Y #H2 elim (rdeq_inv_lref_bind_sn … H2) -H2
-  #J #L2 #HL12 #H destruct /3 width=1 by aaa_lref/
-| #p #G #L1 #V1 #T1 #B #A #_ #_ #IHV #IHT #X #H1 elim (tdeq_inv_pair1 … H1) -H1
-  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (rdeq_inv_bind … H2) -H2 destruct
-  /5 width=2 by aaa_abbr, rdeq_bind_repl_dx, ext2_pair/
-| #p #G #L1 #V1 #T1 #B #A #_ #_ #IHV #IHT #X #H1 elim (tdeq_inv_pair1 … H1) -H1
-  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (rdeq_inv_bind … H2) -H2 destruct
-  /5 width=2 by aaa_abst, rdeq_bind_repl_dx, ext2_pair/
-| #G #L1 #V1 #T1 #B #A #_ #_ #IHV #IHT #X #H1 elim (tdeq_inv_pair1 … H1) -H1
-  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (rdeq_inv_flat … H2) -H2 destruct
-  /3 width=3 by aaa_appl/
-| #G #L1 #V1 #T1 #A #_ #_ #IHV #IHT #X #H1 elim (tdeq_inv_pair1 … H1) -H1
-  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (rdeq_inv_flat … H2) -H2 destruct
-  /3 width=1 by aaa_cast/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa_reqx.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa_reqx.ma
new file mode 100644 (file)
index 0000000..b502a8a
--- /dev/null
@@ -0,0 +1,45 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx.ma".
+include "static_2/static/aaa.ma".
+
+(* ATONIC ARITY ASSIGNMENT ON TERMS *****************************************)
+
+(* Properties with sort-irrelevant equivalence on referred entries **********)
+
+lemma aaa_teqx_conf_reqx: ∀G,L1,T1,A. ⦃G,L1⦄ ⊢ T1 ⁝ A → ∀T2. T1 ≛ T2 →
+                          ∀L2. L1 ≛[T1] L2 → ⦃G,L2⦄ ⊢ T2 ⁝ A.
+#G #L1 #T1 #A #H elim H -G -L1 -T1 -A
+[ #G #L1 #s1 #X #H1 elim (teqx_inv_sort1 … H1) -H1 //
+| #I #G #L1 #V1 #B #_ #IH #X #H1 >(teqx_inv_lref1 … H1) -H1
+  #Y #H2 elim (reqx_inv_zero_pair_sn … H2) -H2
+  #L2 #V2 #HL12 #HV12 #H destruct /3 width=1 by aaa_zero/
+| #I #G #L1 #A #i #_ #IH #X #H1 >(teqx_inv_lref1 … H1) -H1
+  #Y #H2 elim (reqx_inv_lref_bind_sn … H2) -H2
+  #J #L2 #HL12 #H destruct /3 width=1 by aaa_lref/
+| #p #G #L1 #V1 #T1 #B #A #_ #_ #IHV #IHT #X #H1 elim (teqx_inv_pair1 … H1) -H1
+  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (reqx_inv_bind … H2) -H2 destruct
+  /5 width=2 by aaa_abbr, reqx_bind_repl_dx, ext2_pair/
+| #p #G #L1 #V1 #T1 #B #A #_ #_ #IHV #IHT #X #H1 elim (teqx_inv_pair1 … H1) -H1
+  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (reqx_inv_bind … H2) -H2 destruct
+  /5 width=2 by aaa_abst, reqx_bind_repl_dx, ext2_pair/
+| #G #L1 #V1 #T1 #B #A #_ #_ #IHV #IHT #X #H1 elim (teqx_inv_pair1 … H1) -H1
+  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (reqx_inv_flat … H2) -H2 destruct
+  /3 width=3 by aaa_appl/
+| #G #L1 #V1 #T1 #A #_ #_ #IHV #IHT #X #H1 elim (teqx_inv_pair1 … H1) -H1
+  #V2 #T2 #HV12 #HT12 #H #L2 #H2 elim (reqx_inv_flat … H2) -H2 destruct
+  /3 width=1 by aaa_cast/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma
deleted file mode 100644 (file)
index 1c5b47b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/notation/relations/stareqsn_6.ma".
-include "static_2/syntax/genv.ma".
-include "static_2/static/rdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
-
-inductive fdeq (G) (L1) (T1): relation3 genv lenv term ≝
-| fdeq_intro_sn: ∀L2,T2. L1 ≛[T1] L2 → T1 ≛ T2 →
-                 fdeq G L1 T1 G L2 T2
-.
-
-interpretation
-   "sort-irrelevant equivalence on referred entries (closure)"
-   'StarEqSn G1 L1 T1 G2 L2 T2 = (fdeq G1 L1 T1 G2 L2 T2).
-
-(* Basic_properties *********************************************************)
-
-lemma fdeq_intro_dx (G): ∀L1,L2,T2. L1 ≛[T2] L2 →
-                         ∀T1. T1 ≛ T2 → ⦃G,L1,T1⦄ ≛ ⦃G,L2,T2⦄.
-/3 width=3 by fdeq_intro_sn, tdeq_rdeq_div/ qed.
-
-(* Basic inversion lemmas ***************************************************)
-
-lemma fdeq_inv_gen_sn: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ →
-                       ∧∧ G1 = G2 & L1 ≛[T1] L2 & T1 ≛ T2.
-#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /2 width=1 by and3_intro/
-qed-.
-
-lemma fdeq_inv_gen_dx: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ →
-                       ∧∧ G1 = G2 & L1 ≛[T2] L2 & T1 ≛ T2.
-#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
-/3 width=3 by tdeq_rdeq_conf, and3_intro/
-qed-.
-
-(* Basic_2A1: removed theorems 6:
-              fleq_refl fleq_sym fleq_inv_gen
-              fleq_trans fleq_canc_sn fleq_canc_dx
-*)
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma
deleted file mode 100644 (file)
index 1edc17d..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_rdeq.ma".
-include "static_2/static/fdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
-
-(* Advanced properties ******************************************************)
-
-lemma fdeq_sym: tri_symmetric … fdeq.
-#G1 #G2 #L1 #L2 #T1 #T2 * -G1 -L1 -T1
-/3 width=1 by fdeq_intro_dx, rdeq_sym, tdeq_sym/
-qed-.
-
-(* Main properties **********************************************************)
-
-theorem fdeq_trans: tri_transitive … fdeq.
-#G1 #G #L1 #L #T1 #T * -G -L -T
-#L #T #HL1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
-/4 width=5 by fdeq_intro_sn, rdeq_trans, tdeq_rdeq_div, tdeq_trans/
-qed-.
-
-theorem fdeq_canc_sn: ∀G,G1,L,L1,T,T1. ⦃G,L,T⦄ ≛ ⦃G1,L1,T1⦄→
-                      ∀G2,L2,T2. ⦃G,L,T⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄.
-/3 width=5 by fdeq_trans, fdeq_sym/ qed-.
-
-theorem fdeq_canc_dx: ∀G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G,L,T⦄ →
-                      ∀G2,L2,T2. ⦃G2,L2,T2⦄ ≛ ⦃G,L,T⦄ → ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄.
-/3 width=5 by fdeq_trans, fdeq_sym/ qed-.
-
-(* Main inversion lemmas with degree-based equivalence on terms *************)
-
-theorem fdeq_tdneq_repl_dx: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ →
-                            ∀U1,U2. ⦃G1,L1,U1⦄ ≛ ⦃G2,L2,U2⦄ →
-                            (T2 ≛ U2 → ⊥) → (T1 ≛ U1 → ⊥).
-#G1 #G2 #L1 #L2 #T1 #T2 #HT #U1 #U2 #HU #HnTU2 #HTU1
-elim (fdeq_inv_gen_sn … HT) -HT #_ #_ #HT
-elim (fdeq_inv_gen_sn … HU) -HU #_ #_ #HU
-/3 width=5 by tdeq_repl/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma
deleted file mode 100644 (file)
index 333a0f7..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_fqup.ma".
-include "static_2/static/fdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
-
-(* Properties with sort-irrelevant equivalence for terms ********************)
-
-lemma tdeq_fdeq: ∀T1,T2. T1 ≛ T2 →
-                 ∀G,L. ⦃G,L,T1⦄ ≛ ⦃G,L,T2⦄.
-/2 width=1 by fdeq_intro_sn/ qed.
-
-(* Advanced properties ******************************************************)
-
-lemma fdeq_refl: tri_reflexive … fdeq.
-/2 width=1 by fdeq_intro_sn/ qed.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma
deleted file mode 100644 (file)
index ce0dda0..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_fqus.ma".
-include "static_2/static/fdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
-
-(* Properties with star-iterated structural successor for closures **********)
-
-lemma fdeq_fqus_trans: ∀b,G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G,L,T⦄ →
-                       ∀G2,L2,T2. ⦃G,L,T⦄ ⬂*[b] ⦃G2,L2,T2⦄ →
-                       ∃∃G,L0,T0. ⦃G1,L1,T1⦄ ⬂*[b] ⦃G,L0,T0⦄ & ⦃G,L0,T0⦄ ≛ ⦃G2,L2,T2⦄.
-#b #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H2
-elim(fdeq_inv_gen_dx … H1) -H1 #HG #HL1 #HT1 destruct
-elim (rdeq_fqus_trans … H2 … HL1) -L #L #T0 #H2 #HT02 #HL2
-elim (tdeq_fqus_trans … H2 … HT1) -T #L0 #T #H2 #HT0 #HL0
-lapply (tdeq_rdeq_conf … HT02 … HL0) -HL0 #HL0
-/4 width=7 by fdeq_intro_dx, rdeq_trans, tdeq_trans, ex2_3_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma b/matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma
deleted file mode 100644 (file)
index 5dbf18b..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rdeq_req.ma".
-include "static_2/static/fdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
-
-(* Properties with syntactic equivalence on referred entries ****************)
-
-lemma req_rdeq_trans: ∀L1,L,T1. L1 ≡[T1] L →
-                      ∀G1,G2,L2,T2. ⦃G1,L,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄.
-#L1 #L #T1 #HL1 #G1 #G2 #L2 #T2 #H
-elim (fdeq_inv_gen_sn … H) -H #H #HL2 #T12 destruct
-/3 width=3 by fdeq_intro_sn, req_rdeq_trans/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/feqx.ma b/matita/matita/contribs/lambdadelta/static_2/static/feqx.ma
new file mode 100644 (file)
index 0000000..a341e76
--- /dev/null
@@ -0,0 +1,52 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/notation/relations/stareqsn_6.ma".
+include "static_2/syntax/genv.ma".
+include "static_2/static/reqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
+
+inductive feqx (G) (L1) (T1): relation3 genv lenv term ≝
+| feqx_intro_sn: ∀L2,T2. L1 ≛[T1] L2 → T1 ≛ T2 →
+                 feqx G L1 T1 G L2 T2
+.
+
+interpretation
+   "sort-irrelevant equivalence on referred entries (closure)"
+   'StarEqSn G1 L1 T1 G2 L2 T2 = (feqx G1 L1 T1 G2 L2 T2).
+
+(* Basic_properties *********************************************************)
+
+lemma feqx_intro_dx (G): ∀L1,L2,T2. L1 ≛[T2] L2 →
+                         ∀T1. T1 ≛ T2 → ⦃G,L1,T1⦄ ≛ ⦃G,L2,T2⦄.
+/3 width=3 by feqx_intro_sn, teqx_reqx_div/ qed.
+
+(* Basic inversion lemmas ***************************************************)
+
+lemma feqx_inv_gen_sn: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ →
+                       ∧∧ G1 = G2 & L1 ≛[T1] L2 & T1 ≛ T2.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /2 width=1 by and3_intro/
+qed-.
+
+lemma feqx_inv_gen_dx: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ →
+                       ∧∧ G1 = G2 & L1 ≛[T2] L2 & T1 ≛ T2.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+/3 width=3 by teqx_reqx_conf, and3_intro/
+qed-.
+
+(* Basic_2A1: removed theorems 6:
+              fleq_refl fleq_sym fleq_inv_gen
+              fleq_trans fleq_canc_sn fleq_canc_dx
+*)
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/feqx_feqx.ma b/matita/matita/contribs/lambdadelta/static_2/static/feqx_feqx.ma
new file mode 100644 (file)
index 0000000..52c7f31
--- /dev/null
@@ -0,0 +1,52 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_reqx.ma".
+include "static_2/static/feqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
+
+(* Advanced properties ******************************************************)
+
+lemma feqx_sym: tri_symmetric … feqx.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G1 -L1 -T1
+/3 width=1 by feqx_intro_dx, reqx_sym, teqx_sym/
+qed-.
+
+(* Main properties **********************************************************)
+
+theorem feqx_trans: tri_transitive … feqx.
+#G1 #G #L1 #L #T1 #T * -G -L -T
+#L #T #HL1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
+/4 width=5 by feqx_intro_sn, reqx_trans, teqx_reqx_div, teqx_trans/
+qed-.
+
+theorem feqx_canc_sn: ∀G,G1,L,L1,T,T1. ⦃G,L,T⦄ ≛ ⦃G1,L1,T1⦄→
+                      ∀G2,L2,T2. ⦃G,L,T⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄.
+/3 width=5 by feqx_trans, feqx_sym/ qed-.
+
+theorem feqx_canc_dx: ∀G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G,L,T⦄ →
+                      ∀G2,L2,T2. ⦃G2,L2,T2⦄ ≛ ⦃G,L,T⦄ → ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄.
+/3 width=5 by feqx_trans, feqx_sym/ qed-.
+
+(* Main inversion lemmas with degree-based equivalence on terms *************)
+
+theorem feqx_tneqx_repl_dx: ∀G1,G2,L1,L2,T1,T2. ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄ →
+                            ∀U1,U2. ⦃G1,L1,U1⦄ ≛ ⦃G2,L2,U2⦄ →
+                            (T2 ≛ U2 → ⊥) → (T1 ≛ U1 → ⊥).
+#G1 #G2 #L1 #L2 #T1 #T2 #HT #U1 #U2 #HU #HnTU2 #HTU1
+elim (feqx_inv_gen_sn … HT) -HT #_ #_ #HT
+elim (feqx_inv_gen_sn … HU) -HU #_ #_ #HU
+/3 width=5 by teqx_repl/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/feqx_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/static/feqx_fqup.ma
new file mode 100644 (file)
index 0000000..2919d49
--- /dev/null
@@ -0,0 +1,29 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_fqup.ma".
+include "static_2/static/feqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
+
+(* Properties with sort-irrelevant equivalence for terms ********************)
+
+lemma teqx_feqx: ∀T1,T2. T1 ≛ T2 →
+                 ∀G,L. ⦃G,L,T1⦄ ≛ ⦃G,L,T2⦄.
+/2 width=1 by feqx_intro_sn/ qed.
+
+(* Advanced properties ******************************************************)
+
+lemma feqx_refl: tri_reflexive … feqx.
+/2 width=1 by feqx_intro_sn/ qed.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/feqx_fqus.ma b/matita/matita/contribs/lambdadelta/static_2/static/feqx_fqus.ma
new file mode 100644 (file)
index 0000000..f929f33
--- /dev/null
@@ -0,0 +1,31 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_fqus.ma".
+include "static_2/static/feqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
+
+(* Properties with star-iterated structural successor for closures **********)
+
+lemma feqx_fqus_trans: ∀b,G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ ≛ ⦃G,L,T⦄ →
+                       ∀G2,L2,T2. ⦃G,L,T⦄ ⬂*[b] ⦃G2,L2,T2⦄ →
+                       ∃∃G,L0,T0. ⦃G1,L1,T1⦄ ⬂*[b] ⦃G,L0,T0⦄ & ⦃G,L0,T0⦄ ≛ ⦃G2,L2,T2⦄.
+#b #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H2
+elim(feqx_inv_gen_dx … H1) -H1 #HG #HL1 #HT1 destruct
+elim (reqx_fqus_trans … H2 … HL1) -L #L #T0 #H2 #HT02 #HL2
+elim (teqx_fqus_trans … H2 … HT1) -T #L0 #T #H2 #HT0 #HL0
+lapply (teqx_reqx_conf … HT02 … HL0) -HL0 #HL0
+/4 width=7 by feqx_intro_dx, reqx_trans, teqx_trans, ex2_3_intro/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/feqx_req.ma b/matita/matita/contribs/lambdadelta/static_2/static/feqx_req.ma
new file mode 100644 (file)
index 0000000..2191862
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/reqx_req.ma".
+include "static_2/static/feqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
+
+(* Properties with syntactic equivalence on referred entries ****************)
+
+lemma req_reqx_trans: ∀L1,L,T1. L1 ≡[T1] L →
+                      ∀G1,G2,L2,T2. ⦃G1,L,T1⦄ ≛ ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ ≛ ⦃G2,L2,T2⦄.
+#L1 #L #T1 #HL1 #G1 #G2 #L2 #T2 #H
+elim (feqx_inv_gen_sn … H) -H #H #HL2 #T12 destruct
+/3 width=3 by feqx_intro_sn, req_reqx_trans/
+qed-.
index e2ac985dc19f77c1e57615eb95eb1e71acbfe4c0..6c248d9d532bb8977ec271d9f873fff7061a1155 100644 (file)
@@ -298,13 +298,47 @@ qed-.
 
 (* Basic properties *********************************************************)
 
-axiom lsubf_eq_repl_back1: ∀f2,L1,L2. eq_repl_back … (λf1. ⦃L1,f1⦄ ⫃𝐅+ ⦃L2,f2⦄).
+lemma lsubf_eq_repl_back1: ∀f2,L1,L2. eq_repl_back … (λf1. ⦃L1,f1⦄ ⫃𝐅+ ⦃L2,f2⦄).
+#f2 #L1 #L2 #f #H elim H -f -f2 -L1 -L2
+[ #f1 #f2 #Hf12 #g1 #Hfg1
+  /3 width=3 by lsubf_atom, eq_canc_sn/
+| #f1 #f2 #I1 #I2 #K1 #K2 #_ #IH #g #H
+  elim (eq_inv_px … H) -H [|*: // ] #g1 #Hfg1 #H destruct
+  /3 width=1 by lsubf_push/
+| #f1 #f2 #I #K1 #K2 #_ #IH #g #H
+  elim (eq_inv_nx … H) -H [|*: // ] #g1 #Hfg1 #H destruct
+  /3 width=1 by lsubf_bind/
+| #f #f0 #f1 #f2 #K1 #L2 #W #V #Hf #Hf1 #_ #IH #g #H
+  elim (eq_inv_nx … H) -H [|*: // ] #g1 #Hfg1 #H destruct
+  /3 width=5 by lsubf_beta, sor_eq_repl_back3/
+| #f #f0 #f1 #f2 #I1 #I2 #K1 #K2 #V #Hf #Hf1 #_ #IH #g #H
+  elim (eq_inv_nx … H) -H [|*: // ] #g1 #Hfg1 #H destruct
+  /3 width=5 by lsubf_unit, sor_eq_repl_back3/
+]
+qed-.
 
 lemma lsubf_eq_repl_fwd1: ∀f2,L1,L2. eq_repl_fwd … (λf1. ⦃L1,f1⦄ ⫃𝐅+ ⦃L2,f2⦄).
 #f2 #L1 #L2 @eq_repl_sym /2 width=3 by lsubf_eq_repl_back1/
 qed-.
 
-axiom lsubf_eq_repl_back2: ∀f1,L1,L2. eq_repl_back … (λf2. ⦃L1,f1⦄ ⫃𝐅+ ⦃L2,f2⦄).
+lemma lsubf_eq_repl_back2: ∀f1,L1,L2. eq_repl_back … (λf2. ⦃L1,f1⦄ ⫃𝐅+ ⦃L2,f2⦄).
+#f1 #L1 #L2 #f #H elim H -f1 -f -L1 -L2
+[ #f1 #f2 #Hf12 #g2 #Hfg2
+  /3 width=3 by lsubf_atom, eq_trans/
+| #f1 #f2 #I1 #I2 #K1 #K2 #_ #IH #g #H
+  elim (eq_inv_px … H) -H [|*: // ] #g2 #Hfg2 #H destruct
+  /3 width=1 by lsubf_push/
+| #f1 #f2 #I #K1 #K2 #_ #IH #g #H
+  elim (eq_inv_nx … H) -H [|*: // ] #g2 #Hfg2 #H destruct
+  /3 width=1 by lsubf_bind/
+| #f #f0 #f1 #f2 #K1 #L2 #W #V #Hf #Hf1 #_ #IH #g #H
+  elim (eq_inv_nx … H) -H [|*: // ] #g2 #Hfg2 #H destruct
+  /3 width=5 by lsubf_beta/
+| #f #f0 #f1 #f2 #I1 #I2 #K1 #K2 #V #Hf #Hf1 #_ #IH #g #H
+  elim (eq_inv_nx … H) -H [|*: // ] #g2 #Hfg2 #H destruct
+  /3 width=5 by lsubf_unit/
+]
+qed-.
 
 lemma lsubf_eq_repl_fwd2: ∀f1,L1,L2. eq_repl_fwd … (λf2. ⦃L1,f1⦄ ⫃𝐅+ ⦃L2,f2⦄).
 #f1 #L1 #L2 @eq_repl_sym /2 width=3 by lsubf_eq_repl_back2/
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma
deleted file mode 100644 (file)
index 99fe14e..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/notation/relations/stareqsn_3.ma".
-include "static_2/syntax/tdeq_ext.ma".
-include "static_2/static/rex.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
-
-definition rdeq: relation3 term lenv lenv ≝
-                 rex cdeq.
-
-interpretation
-   "sort-irrelevant equivalence on referred entries (local environment)"
-   'StarEqSn T L1 L2 = (rdeq T L1 L2).
-
-interpretation
-   "sort-irrelevant ranged equivalence (local environment)"
-   'StarEqSn f L1 L2 = (sex cdeq_ext cfull f L1 L2).
-
-(* Basic properties ***********************************************************)
-
-lemma frees_tdeq_conf_rdeq: ∀f,L1,T1. L1 ⊢ 𝐅+⦃T1⦄ ≘ f → ∀T2. T1 ≛ T2 →
-                            ∀L2. L1 ≛[f] L2 → L2 ⊢ 𝐅+⦃T2⦄ ≘ f.
-#f #L1 #T1 #H elim H -f -L1 -T1
-[ #f #L1 #s1 #Hf #X #H1 #L2 #_
-  elim (tdeq_inv_sort1 … H1) -H1 #s2 #H destruct
-  /2 width=3 by frees_sort/
-| #f #i #Hf #X #H1
-  >(tdeq_inv_lref1 … H1) -X #Y #H2
-  >(sex_inv_atom1 … H2) -Y
-  /2 width=1 by frees_atom/
-| #f #I #L1 #V1 #_ #IH #X #H1
-  >(tdeq_inv_lref1 … H1) -X #Y #H2
-  elim (sex_inv_next1 … H2) -H2 #Z #L2 #HL12 #HZ #H destruct
-  elim (ext2_inv_pair_sn … HZ) -HZ #V2 #HV12 #H destruct
-  /3 width=1 by frees_pair/
-| #f #I #L1 #Hf #X #H1
-  >(tdeq_inv_lref1 … H1) -X #Y #H2
-  elim (sex_inv_next1 … H2) -H2 #Z #L2 #_ #HZ #H destruct
-  >(ext2_inv_unit_sn … HZ) -Z /2 width=1 by frees_unit/
-| #f #I #L1 #i #_ #IH #X #H1
-  >(tdeq_inv_lref1 … H1) -X #Y #H2
-  elim (sex_inv_push1 … H2) -H2 #J #L2 #HL12 #_ #H destruct
-  /3 width=1 by frees_lref/
-| #f #L1 #l #Hf #X #H1 #L2 #_
-  >(tdeq_inv_gref1 … H1) -X /2 width=1 by frees_gref/
-| #f1V #f1T #f1 #p #I #L1 #V1 #T1 #_ #_ #Hf1 #IHV #IHT #X #H1
-  elim (tdeq_inv_pair1 … H1) -H1 #V2 #T2 #HV12 #HT12 #H1 #L2 #HL12 destruct
-  /6 width=5 by frees_bind, sex_inv_tl, ext2_pair, sle_sex_trans, sor_inv_sle_dx, sor_inv_sle_sn/
-| #f1V #f1T #f1 #I #L1 #V1 #T1 #_ #_ #Hf1 #IHV #IHT #X #H1
-  elim (tdeq_inv_pair1 … H1) -H1 #V2 #T2 #HV12 #HT12 #H1 #L2 #HL12 destruct
-  /5 width=5 by frees_flat, sle_sex_trans, sor_inv_sle_dx, sor_inv_sle_sn/
-]
-qed-.
-
-lemma frees_tdeq_conf: ∀f,L,T1. L ⊢ 𝐅+⦃T1⦄ ≘ f →
-                       ∀T2. T1 ≛ T2 → L ⊢ 𝐅+⦃T2⦄ ≘ f.
-/4 width=7 by frees_tdeq_conf_rdeq, sex_refl, ext2_refl/ qed-.
-
-lemma frees_rdeq_conf: ∀f,L1,T. L1 ⊢ 𝐅+⦃T⦄ ≘ f →
-                       ∀L2. L1 ≛[f] L2 → L2 ⊢ 𝐅+⦃T⦄ ≘ f.
-/2 width=7 by frees_tdeq_conf_rdeq, tdeq_refl/ qed-.
-
-lemma tdeq_rex_conf (R): s_r_confluent1 … cdeq (rex R).
-#R #L1 #T1 #T2 #HT12 #L2 *
-/3 width=5 by frees_tdeq_conf, ex2_intro/
-qed-.
-
-lemma tdeq_rex_div (R): ∀T1,T2. T1 ≛ T2 →
-                        ∀L1,L2. L1 ⪤[R,T2] L2 → L1 ⪤[R,T1] L2.
-/3 width=5 by tdeq_rex_conf, tdeq_sym/ qed-.
-
-lemma tdeq_rdeq_conf: s_r_confluent1 … cdeq rdeq.
-/2 width=5 by tdeq_rex_conf/ qed-.
-
-lemma tdeq_rdeq_div: ∀T1,T2. T1 ≛ T2 →
-                     ∀L1,L2. L1 ≛[T2] L2 → L1 ≛[T1] L2.
-/2 width=5 by tdeq_rex_div/ qed-.
-
-lemma rdeq_atom: ∀I. ⋆ ≛[⓪{I}] ⋆.
-/2 width=1 by rex_atom/ qed.
-
-lemma rdeq_sort: ∀I1,I2,L1,L2,s.
-                 L1 ≛[⋆s] L2 → L1.ⓘ{I1} ≛[⋆s] L2.ⓘ{I2}.
-/2 width=1 by rex_sort/ qed.
-
-lemma rdeq_pair: ∀I,L1,L2,V1,V2.
-                 L1 ≛[V1] L2 → V1 ≛ V2 → L1.ⓑ{I}V1 ≛[#0] L2.ⓑ{I}V2.
-/2 width=1 by rex_pair/ qed.
-
-lemma rdeq_unit: ∀f,I,L1,L2. 𝐈⦃f⦄ → L1 ≛[f] L2 →
-                 L1.ⓤ{I} ≛[#0] L2.ⓤ{I}.
-/2 width=3 by rex_unit/ qed.
-
-lemma rdeq_lref: ∀I1,I2,L1,L2,i.
-                 L1 ≛[#i] L2 → L1.ⓘ{I1} ≛[#↑i] L2.ⓘ{I2}.
-/2 width=1 by rex_lref/ qed.
-
-lemma rdeq_gref: ∀I1,I2,L1,L2,l.
-                 L1 ≛[§l] L2 → L1.ⓘ{I1} ≛[§l] L2.ⓘ{I2}.
-/2 width=1 by rex_gref/ qed.
-
-lemma rdeq_bind_repl_dx: ∀I,I1,L1,L2.∀T:term.
-                         L1.ⓘ{I} ≛[T] L2.ⓘ{I1} →
-                         ∀I2. I ≛ I2 →
-                         L1.ⓘ{I} ≛[T] L2.ⓘ{I2}.
-/2 width=2 by rex_bind_repl_dx/ qed-.
-
-(* Basic inversion lemmas ***************************************************)
-
-lemma rdeq_inv_atom_sn: ∀Y2. ∀T:term. ⋆ ≛[T] Y2 → Y2 = ⋆.
-/2 width=3 by rex_inv_atom_sn/ qed-.
-
-lemma rdeq_inv_atom_dx: ∀Y1. ∀T:term. Y1 ≛[T] ⋆ → Y1 = ⋆.
-/2 width=3 by rex_inv_atom_dx/ qed-.
-
-lemma rdeq_inv_zero:
-      ∀Y1,Y2. Y1 ≛[#0] Y2 →
-      ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
-       | ∃∃I,L1,L2,V1,V2. L1 ≛[V1] L2 & V1 ≛ V2 & Y1 = L1.ⓑ{I}V1 & Y2 = L2.ⓑ{I}V2
-       | ∃∃f,I,L1,L2. 𝐈⦃f⦄ & L1 ≛[f] L2 & Y1 = L1.ⓤ{I} & Y2 = L2.ⓤ{I}.
-#Y1 #Y2 #H elim (rex_inv_zero … H) -H *
-/3 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex4_4_intro, conj/
-qed-.
-
-lemma rdeq_inv_lref: ∀Y1,Y2,i. Y1 ≛[#↑i] Y2 →
-                     ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
-                      | ∃∃I1,I2,L1,L2. L1 ≛[#i] L2 &
-                                       Y1 = L1.ⓘ{I1} & Y2 = L2.ⓘ{I2}.
-/2 width=1 by rex_inv_lref/ qed-.
-
-(* Basic_2A1: uses: lleq_inv_bind lleq_inv_bind_O *)
-lemma rdeq_inv_bind: ∀p,I,L1,L2,V,T. L1 ≛[ⓑ{p,I}V.T] L2 →
-                     ∧∧ L1 ≛[V] L2 & L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V.
-/2 width=2 by rex_inv_bind/ qed-.
-
-(* Basic_2A1: uses: lleq_inv_flat *)
-lemma rdeq_inv_flat: ∀I,L1,L2,V,T. L1 ≛[ⓕ{I}V.T] L2 →
-                     ∧∧ L1 ≛[V] L2 & L1 ≛[T] L2.
-/2 width=2 by rex_inv_flat/ qed-.
-
-(* Advanced inversion lemmas ************************************************)
-
-lemma rdeq_inv_zero_pair_sn: ∀I,Y2,L1,V1. L1.ⓑ{I}V1 ≛[#0] Y2 →
-                             ∃∃L2,V2. L1 ≛[V1] L2 & V1 ≛ V2 & Y2 = L2.ⓑ{I}V2.
-/2 width=1 by rex_inv_zero_pair_sn/ qed-.
-
-lemma rdeq_inv_zero_pair_dx: ∀I,Y1,L2,V2. Y1 ≛[#0] L2.ⓑ{I}V2 →
-                             ∃∃L1,V1. L1 ≛[V1] L2 & V1 ≛ V2 & Y1 = L1.ⓑ{I}V1.
-/2 width=1 by rex_inv_zero_pair_dx/ qed-.
-
-lemma rdeq_inv_lref_bind_sn: ∀I1,Y2,L1,i. L1.ⓘ{I1} ≛[#↑i] Y2 →
-                             ∃∃I2,L2. L1 ≛[#i] L2 & Y2 = L2.ⓘ{I2}.
-/2 width=2 by rex_inv_lref_bind_sn/ qed-.
-
-lemma rdeq_inv_lref_bind_dx: ∀I2,Y1,L2,i. Y1 ≛[#↑i] L2.ⓘ{I2} →
-                             ∃∃I1,L1. L1 ≛[#i] L2 & Y1 = L1.ⓘ{I1}.
-/2 width=2 by rex_inv_lref_bind_dx/ qed-.
-
-(* Basic forward lemmas *****************************************************)
-
-lemma rdeq_fwd_zero_pair: ∀I,K1,K2,V1,V2.
-                          K1.ⓑ{I}V1 ≛[#0] K2.ⓑ{I}V2 → K1 ≛[V1] K2.
-/2 width=3 by rex_fwd_zero_pair/ qed-.
-
-(* Basic_2A1: uses: lleq_fwd_bind_sn lleq_fwd_flat_sn *)
-lemma rdeq_fwd_pair_sn: ∀I,L1,L2,V,T. L1 ≛[②{I}V.T] L2 → L1 ≛[V] L2.
-/2 width=3 by rex_fwd_pair_sn/ qed-.
-
-(* Basic_2A1: uses: lleq_fwd_bind_dx lleq_fwd_bind_O_dx *)
-lemma rdeq_fwd_bind_dx: ∀p,I,L1,L2,V,T.
-                        L1 ≛[ⓑ{p,I}V.T] L2 → L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V.
-/2 width=2 by rex_fwd_bind_dx/ qed-.
-
-(* Basic_2A1: uses: lleq_fwd_flat_dx *)
-lemma rdeq_fwd_flat_dx: ∀I,L1,L2,V,T. L1 ≛[ⓕ{I}V.T] L2 → L1 ≛[T] L2.
-/2 width=3 by rex_fwd_flat_dx/ qed-.
-
-lemma rdeq_fwd_dx: ∀I2,L1,K2. ∀T:term. L1 ≛[T] K2.ⓘ{I2} →
-                   ∃∃I1,K1. L1 = K1.ⓘ{I1}.
-/2 width=5 by rex_fwd_dx/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma
deleted file mode 100644 (file)
index 15e7ca6..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/relocation/lifts_tdeq.ma".
-include "static_2/static/rex_drops.ma".
-include "static_2/static/rdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
-
-(* Properties with generic slicing for local environments *******************)
-
-lemma rdeq_lifts_sn: f_dedropable_sn cdeq.
-/3 width=5 by rex_liftable_dedropable_sn, tdeq_lifts_sn/ qed-.
-
-(* Inversion lemmas with generic slicing for local environments *************)
-
-lemma rdeq_inv_lifts_sn: f_dropable_sn cdeq.
-/2 width=5 by rex_dropable_sn/ qed-.
-
-lemma rdeq_inv_lifts_dx: f_dropable_dx cdeq.
-/2 width=5 by rex_dropable_dx/ qed-.
-
-lemma rdeq_inv_lifts_bi: ∀L1,L2,U. L1 ≛[U] L2 → ∀b,f. 𝐔⦃f⦄ →
-                         ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 →
-                         ∀T. ⇧*[f] T ≘ U → K1 ≛[T] K2.
-/2 width=10 by rex_inv_lifts_bi/ qed-.
-
-lemma rdeq_inv_lref_pair_sn: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 →
-                             ∃∃K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ≛[V1] K2 & V1 ≛ V2.
-/2 width=3 by rex_inv_lref_pair_sn/ qed-.
-
-lemma rdeq_inv_lref_pair_dx: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 →
-                             ∃∃K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ≛[V1] K2 & V1 ≛ V2.
-/2 width=3 by rex_inv_lref_pair_dx/ qed-.
-
-lemma rdeq_inv_lref_pair_bi (L1) (L2) (i):
-                            L1 ≛[#i] L2 →
-                            ∀I1,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I1}V1 →
-                            ∀I2,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I2}V2 →
-                            ∧∧ K1 ≛[V1] K2 & V1 ≛ V2 & I1 = I2.
-/2 width=6 by rex_inv_lref_pair_bi/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqup.ma
deleted file mode 100644 (file)
index 904bb60..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/rex_fqup.ma".
-include "static_2/static/rdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
-
-(* Advanced properties ******************************************************)
-
-lemma rdeq_refl: ∀T. reflexive … (rdeq T).
-/2 width=1 by rex_refl/ qed.
-
-lemma rdeq_pair_refl: ∀V1,V2. V1 ≛ V2 →
-                      ∀I,L. ∀T:term. L.ⓑ{I}V1 ≛[T] L.ⓑ{I}V2.
-/2 width=1 by rex_pair_refl/ qed.
-
-(* Advanced inversion lemmas ************************************************)
-
-lemma rdeq_inv_bind_void: ∀p,I,L1,L2,V,T. L1 ≛[ⓑ{p,I}V.T] L2 →
-                          L1 ≛[V] L2 ∧ L1.ⓧ ≛[T] L2.ⓧ.
-/2 width=3 by rex_inv_bind_void/ qed-.
-
-(* Advanced forward lemmas **************************************************)
-
-lemma rdeq_fwd_bind_dx_void: ∀p,I,L1,L2,V,T.
-                             L1 ≛[ⓑ{p,I}V.T] L2 → L1.ⓧ ≛[T] L2.ⓧ.
-/2 width=4 by rex_fwd_bind_dx_void/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma
deleted file mode 100644 (file)
index d698643..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/s_computation/fqus_fqup.ma".
-include "static_2/static/rdeq_drops.ma".
-include "static_2/static/rdeq_fqup.ma".
-include "static_2/static/rdeq_rdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
-
-(* Properties with extended structural successor for closures ***************)
-
-lemma fqu_tdeq_conf: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂[b] ⦃G2,L2,T1⦄ →
-                     ∀U2. U1 ≛ U2 →
-                     ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂[b] ⦃G2,L,T2⦄ & L2 ≛[T1] L & T1 ≛ T2.
-#b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -G1 -G2 -L1 -L2 -U1 -T1
-[ #I #G #L #W #X #H >(tdeq_inv_lref1 … H) -X
-  /2 width=5 by fqu_lref_O, ex3_2_intro/
-| #I #G #L #W1 #U1 #X #H
-  elim (tdeq_inv_pair1 … H) -H #W2 #U2 #HW12 #_ #H destruct
-  /2 width=5 by fqu_pair_sn, ex3_2_intro/
-| #p #I #G #L #W1 #U1 #Hb #X #H
-  elim (tdeq_inv_pair1 … H) -H #W2 #U2 #HW12 #HU12 #H destruct
-  /3 width=5 by rdeq_pair_refl, fqu_bind_dx, ex3_2_intro/
-| #p #I #G #L #W1 #U1 #Hb #X #H
-  elim (tdeq_inv_pair1 … H) -H #W2 #U2 #HW12 #HU12 #H destruct
-  /3 width=5 by fqu_clear, ex3_2_intro/
-| #I #G #L #W1 #U1 #X #H
-  elim (tdeq_inv_pair1 … H) -H #W2 #U2 #_ #HU12 #H destruct
-  /2 width=5 by fqu_flat_dx, ex3_2_intro/
-| #I #G #L #T1 #U1 #HTU1 #U2 #HU12
-  elim (tdeq_inv_lifts_sn … HU12 … HTU1) -U1
-  /3 width=5 by fqu_drop, ex3_2_intro/
-]
-qed-.
-
-lemma tdeq_fqu_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂[b] ⦃G2,L2,T1⦄ →
-                      ∀U2. U2 ≛ U1 →
-                      ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
-#b #G1 #G2 #L1 #L2 #U1 #T1 #H12 #U2 #HU21
-elim (fqu_tdeq_conf … H12 U2) -H12
-/3 width=5 by rdeq_sym, tdeq_sym, ex3_2_intro/
-qed-.
-
-(* Basic_2A1: uses: lleq_fqu_trans *)
-lemma rdeq_fqu_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂[b] ⦃G2,K2,U⦄ →
-                      ∀L1. L1 ≛[T] L2 →
-                      ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
-#b #G1 #G2 #L2 #K2 #T #U #H elim H -G1 -G2 -L2 -K2 -T -U
-[ #I #G #L2 #V2 #L1 #H elim (rdeq_inv_zero_pair_dx … H) -H
-  #K1 #V1 #HV1 #HV12 #H destruct
-  /3 width=7 by tdeq_rdeq_conf, fqu_lref_O, ex3_2_intro/
-| * [ #p ] #I #G #L2 #V #T #L1 #H
-  [ elim (rdeq_inv_bind … H)
-  | elim (rdeq_inv_flat … H)
-  ] -H
-  /2 width=5 by fqu_pair_sn, ex3_2_intro/
-| #p #I #G #L2 #V #T #Hb #L1 #H elim (rdeq_inv_bind … H) -H
-  /3 width=5 by fqu_bind_dx, ex3_2_intro/
-| #p #I #G #L2 #V #T #Hb #L1 #H elim (rdeq_inv_bind_void … H) -H
-  /3 width=5 by fqu_clear, ex3_2_intro/
-| #I #G #L2 #V #T #L1 #H elim (rdeq_inv_flat … H) -H
-  /2 width=5 by fqu_flat_dx, ex3_2_intro/
-| #I #G #L2 #T #U #HTU #Y #HU
-  elim (rdeq_fwd_dx … HU) #L1 #V1 #H destruct
-  /5 width=14 by rdeq_inv_lifts_bi, fqu_drop, drops_refl, drops_drop, ex3_2_intro/
-]
-qed-.
-
-(* Properties with optional structural successor for closures ***************)
-
-lemma tdeq_fquq_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂⸮[b] ⦃G2,L2,T1⦄ →
-                       ∀U2. U2 ≛ U1 →
-                       ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂⸮[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
-#b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -H
-[ #H #U2 #HU21 elim (tdeq_fqu_trans … H … HU21) -U1
-  /3 width=5 by fqu_fquq, ex3_2_intro/
-| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
-]
-qed-.
-
-(* Basic_2A1: was just: lleq_fquq_trans *)
-lemma rdeq_fquq_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂⸮[b] ⦃G2,K2,U⦄ →
-                       ∀L1. L1 ≛[T] L2 →
-                       ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂⸮[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
-#b #G1 #G2 #L2 #K2 #T #U #H elim H -H
-[ #H #L1 #HL12 elim (rdeq_fqu_trans … H … HL12) -L2 /3 width=5 by fqu_fquq, ex3_2_intro/
-| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
-]
-qed-.
-
-(* Properties with plus-iterated structural successor for closures **********)
-
-(* Basic_2A1: was just: lleq_fqup_trans *)
-lemma rdeq_fqup_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂+[b] ⦃G2,K2,U⦄ →
-                       ∀L1. L1 ≛[T] L2 →
-                       ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂+[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
-#b #G1 #G2 #L2 #K2 #T #U #H @(fqup_ind … H) -G2 -K2 -U
-[ #G2 #K2 #U #HTU #L1 #HL12 elim (rdeq_fqu_trans … HTU … HL12) -L2
-  /3 width=5 by fqu_fqup, ex3_2_intro/
-| #G #G2 #K #K2 #U #U2 #_ #HU2 #IHTU #L1 #HL12
-  elim (IHTU … HL12) -L2 #K0 #U0 #HTU #HU0 #HK0
-  elim (rdeq_fqu_trans … HU2 … HK0) -K #K1 #U1 #HU1 #HU12 #HK12
-  elim (tdeq_fqu_trans … HU1 … HU0) -U #K3 #U3 #HU03 #HU31 #HK31
-  @(ex3_2_intro … K3 U3) (**) (* full auto too slow *)
-  /3 width=5 by rdeq_trans, tdeq_rdeq_conf, fqup_strap1, tdeq_trans/
-]
-qed-.
-
-lemma tdeq_fqup_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂+[b] ⦃G2,L2,T1⦄ →
-                       ∀U2. U2 ≛ U1 →
-                       ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂+[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
-#b #G1 #G2 #L1 #L2 #U1 #T1 #H @(fqup_ind_dx … H) -G1 -L1 -U1
-[ #G1 #L1 #U1 #H #U2 #HU21 elim (tdeq_fqu_trans … H … HU21) -U1
-  /3 width=5 by fqu_fqup, ex3_2_intro/
-| #G1 #G #L1 #L #U1 #U #H #_ #IH #U2 #HU21
-  elim (tdeq_fqu_trans … H … HU21) -U1 #L0 #T #H1 #HTU #HL0
-  lapply (tdeq_rdeq_div … HTU … HL0) -HL0 #HL0
-  elim (IH … HTU) -U #K2 #U1 #H2 #HUT1 #HKL2
-  elim (rdeq_fqup_trans … H2 … HL0) -L #K #U #H2 #HU1 #HK2
-  lapply (tdeq_rdeq_conf … HUT1 … HK2) -HK2 #HK2
-  /3 width=7 by rdeq_trans, fqup_strap2, tdeq_trans, ex3_2_intro/
-]
-qed-.
-
-(* Properties with star-iterated structural successor for closures **********)
-
-lemma tdeq_fqus_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂*[b] ⦃G2,L2,T1⦄ →
-                       ∀U2. U2 ≛ U1 →
-                       ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂*[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
-#b #G1 #G2 #L1 #L2 #U1 #T1 #H #U2 #HU21 elim(fqus_inv_fqup … H) -H
-[ #H elim (tdeq_fqup_trans … H … HU21) -U1 /3 width=5 by fqup_fqus, ex3_2_intro/
-| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
-]
-qed-.
-
-(* Basic_2A1: was just: lleq_fqus_trans *)
-lemma rdeq_fqus_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂*[b] ⦃G2,K2,U⦄ →
-                       ∀L1. L1 ≛[T] L2 →
-                       ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂*[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
-#b #G1 #G2 #L2 #K2 #T #U #H #L1 #HL12 elim(fqus_inv_fqup … H) -H
-[ #H elim (rdeq_fqup_trans … H … HL12) -L2 /3 width=5 by fqup_fqus, ex3_2_intro/
-| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma
deleted file mode 100644 (file)
index 1b50d4c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/relocation/lifts_tdeq.ma".
-include "static_2/static/rex_length.ma".
-include "static_2/static/rex_fsle.ma".
-include "static_2/static/rdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
-
-(* Advanved properties with free variables inclusion ************************)
-
-lemma rdeq_fsge_comp: rex_fsge_compatible cdeq.
-#L1 #L2 #T * #f1 #Hf1 #HL12
-lapply (frees_rdeq_conf … Hf1 … HL12)
-lapply (sex_fwd_length … HL12)
-/3 width=8 by lveq_length_eq, ex4_4_intro/ (**) (* full auto fails *)
-qed-.
-
-(* Properties with length for local environments ****************************)
-
-(* Basic_2A1: uses: lleq_sort *)
-lemma rdeq_sort_length: ∀L1,L2. |L1| = |L2| → ∀s. L1 ≛[⋆s] L2.
-/2 width=1 by rex_sort_length/ qed.
-
-(* Basic_2A1: uses: lleq_gref *)
-lemma rdeq_gref_length: ∀L1,L2. |L1| = |L2| → ∀l. L1 ≛[§l] L2.
-/2 width=1 by rex_gref_length/ qed.
-
-lemma rdeq_unit_length: ∀L1,L2. |L1| = |L2| →
-                        ∀I. L1.ⓤ{I} ≛[#0] L2.ⓤ{I}.
-/2 width=1 by rex_unit_length/ qed.
-
-(* Basic_2A1: uses: lleq_lift_le lleq_lift_ge *)
-lemma rdeq_lifts_bi: ∀L1,L2. |L1| = |L2| → ∀K1,K2,T. K1 ≛[T] K2 →
-                     ∀b,f. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 →
-                     ∀U. ⇧*[f] T ≘ U → L1 ≛[U] L2.
-/3 width=9 by rex_lifts_bi, tdeq_lifts_sn/ qed-.
-
-(* Forward lemmas with length for local environments ************************)
-
-(* Basic_2A1: lleq_fwd_length *)
-lemma rdeq_fwd_length: ∀L1,L2. ∀T:term. L1 ≛[T] L2 → |L1| = |L2|.
-/2 width=3 by rex_fwd_length/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_rdeq.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_rdeq.ma
deleted file mode 100644 (file)
index 3006916..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/syntax/ext2_ext2.ma".
-include "static_2/syntax/tdeq_tdeq.ma".
-include "static_2/static/rdeq_length.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
-
-(* Advanced properties ******************************************************)
-
-(* Basic_2A1: uses: lleq_sym *)
-lemma rdeq_sym: ∀T. symmetric … (rdeq T).
-/3 width=3 by rdeq_fsge_comp, rex_sym, tdeq_sym/ qed-.
-
-(* Basic_2A1: uses: lleq_dec *)
-lemma rdeq_dec: ∀L1,L2. ∀T:term. Decidable (L1 ≛[T] L2).
-/3 width=1 by rex_dec, tdeq_dec/ qed-.
-
-(* Main properties **********************************************************)
-
-(* Basic_2A1: uses: lleq_bind lleq_bind_O *) 
-theorem rdeq_bind: ∀p,I,L1,L2,V1,V2,T.
-                   L1 ≛[V1] L2 → L1.ⓑ{I}V1 ≛[T] L2.ⓑ{I}V2 →
-                   L1 ≛[ⓑ{p,I}V1.T] L2.
-/2 width=2 by rex_bind/ qed.
-
-(* Basic_2A1: uses: lleq_flat *)
-theorem rdeq_flat: ∀I,L1,L2,V,T.
-                   L1 ≛[V] L2 → L1 ≛[T] L2 → L1 ≛[ⓕ{I}V.T] L2.
-/2 width=1 by rex_flat/ qed.
-
-theorem rdeq_bind_void: ∀p,I,L1,L2,V,T.
-                        L1 ≛[V] L2 → L1.ⓧ ≛[T] L2.ⓧ → L1 ≛[ⓑ{p,I}V.T] L2.
-/2 width=1 by rex_bind_void/ qed.
-
-(* Basic_2A1: uses: lleq_trans *)
-theorem rdeq_trans: ∀T. Transitive … (rdeq T).
-#T #L1 #L * #f1 #Hf1 #HL1 #L2 * #f2 #Hf2 #HL2
-lapply (frees_tdeq_conf_rdeq … Hf1 T … HL1) // #H0
-lapply (frees_mono … Hf2 … H0) -Hf2 -H0
-/5 width=7 by sex_trans, sex_eq_repl_back, tdeq_trans, ext2_trans, ex2_intro/
-qed-.
-
-(* Basic_2A1: uses: lleq_canc_sn *)
-theorem rdeq_canc_sn: ∀T. left_cancellable … (rdeq T).
-/3 width=3 by rdeq_trans, rdeq_sym/ qed-.
-
-(* Basic_2A1: uses: lleq_canc_dx *)
-theorem rdeq_canc_dx: ∀T. right_cancellable … (rdeq T).
-/3 width=3 by rdeq_trans, rdeq_sym/ qed-.
-
-theorem rdeq_repl: ∀L1,L2. ∀T:term. L1 ≛[T] L2 →
-                   ∀K1. L1 ≛[T] K1 → ∀K2. L2 ≛[T] K2 → K1 ≛[T] K2.
-/3 width=3 by rdeq_canc_sn, rdeq_trans/ qed-.
-
-(* Negated properties *******************************************************)
-
-(* Note: auto works with /4 width=8/ so rdeq_canc_sn is preferred **********) 
-(* Basic_2A1: uses: lleq_nlleq_trans *)
-lemma rdeq_rdneq_trans: ∀T:term.∀L1,L. L1 ≛[T] L →
-                        ∀L2. (L ≛[T] L2 → ⊥) → (L1 ≛[T] L2 → ⊥).
-/3 width=3 by rdeq_canc_sn/ qed-.
-
-(* Basic_2A1: uses: nlleq_lleq_div *)
-lemma rdneq_rdeq_div: ∀T:term.∀L2,L. L2 ≛[T] L →
-                      ∀L1. (L1 ≛[T] L → ⊥) → (L1 ≛[T] L2 → ⊥).
-/3 width=3 by rdeq_trans/ qed-.
-
-theorem rdneq_rdeq_canc_dx: ∀L1,L. ∀T:term. (L1 ≛[T] L → ⊥) →
-                            ∀L2. L2 ≛[T] L → L1 ≛[T] L2 → ⊥.
-/3 width=3 by rdeq_trans/ qed-.
-
-(* Negated inversion lemmas *************************************************)
-
-(* Basic_2A1: uses: nlleq_inv_bind nlleq_inv_bind_O *)
-lemma rdneq_inv_bind: ∀p,I,L1,L2,V,T. (L1 ≛[ⓑ{p,I}V.T] L2 → ⊥) →
-                      (L1 ≛[V] L2 → ⊥) ∨ (L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V → ⊥).
-/3 width=2 by rnex_inv_bind, tdeq_dec/ qed-.
-
-(* Basic_2A1: uses: nlleq_inv_flat *)
-lemma rdneq_inv_flat: ∀I,L1,L2,V,T. (L1 ≛[ⓕ{I}V.T] L2 → ⊥) →
-                      (L1 ≛[V] L2 → ⊥) ∨ (L1 ≛[T] L2 → ⊥).
-/3 width=2 by rnex_inv_flat, tdeq_dec/ qed-.
-
-lemma rdneq_inv_bind_void: ∀p,I,L1,L2,V,T. (L1 ≛[ⓑ{p,I}V.T] L2 → ⊥) →
-                           (L1 ≛[V] L2 → ⊥) ∨ (L1.ⓧ ≛[T] L2.ⓧ → ⊥).
-/3 width=3 by rnex_inv_bind_void, tdeq_dec/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rdeq_req.ma b/matita/matita/contribs/lambdadelta/static_2/static/rdeq_req.ma
deleted file mode 100644 (file)
index 5ef8bef..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/static/req_fsle.ma".
-include "static_2/static/rdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
-
-(* Properties with syntactic equivalence on referred entries ****************)
-
-lemma req_rdeq: ∀L1,L2. ∀T:term. L1 ≡[T] L2 → L1 ≛[T] L2.
-/2 width=3 by rex_co/ qed.
-
-lemma req_rdeq_trans: ∀L1,L. ∀T:term. L1 ≡[T] L →
-                      ∀L2. L ≛[T] L2 → L1 ≛[T] L2.
-/2 width=3 by req_rex_trans/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/reqx.ma b/matita/matita/contribs/lambdadelta/static_2/static/reqx.ma
new file mode 100644 (file)
index 0000000..e3cb96b
--- /dev/null
@@ -0,0 +1,193 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/notation/relations/stareqsn_3.ma".
+include "static_2/syntax/teqx_ext.ma".
+include "static_2/static/rex.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
+
+definition reqx: relation3 term lenv lenv ≝
+                 rex cdeq.
+
+interpretation
+   "sort-irrelevant equivalence on referred entries (local environment)"
+   'StarEqSn T L1 L2 = (reqx T L1 L2).
+
+interpretation
+   "sort-irrelevant ranged equivalence (local environment)"
+   'StarEqSn f L1 L2 = (sex cdeq_ext cfull f L1 L2).
+
+(* Basic properties ***********************************************************)
+
+lemma frees_teqx_conf_reqx: ∀f,L1,T1. L1 ⊢ 𝐅+⦃T1⦄ ≘ f → ∀T2. T1 ≛ T2 →
+                            ∀L2. L1 ≛[f] L2 → L2 ⊢ 𝐅+⦃T2⦄ ≘ f.
+#f #L1 #T1 #H elim H -f -L1 -T1
+[ #f #L1 #s1 #Hf #X #H1 #L2 #_
+  elim (teqx_inv_sort1 … H1) -H1 #s2 #H destruct
+  /2 width=3 by frees_sort/
+| #f #i #Hf #X #H1
+  >(teqx_inv_lref1 … H1) -X #Y #H2
+  >(sex_inv_atom1 … H2) -Y
+  /2 width=1 by frees_atom/
+| #f #I #L1 #V1 #_ #IH #X #H1
+  >(teqx_inv_lref1 … H1) -X #Y #H2
+  elim (sex_inv_next1 … H2) -H2 #Z #L2 #HL12 #HZ #H destruct
+  elim (ext2_inv_pair_sn … HZ) -HZ #V2 #HV12 #H destruct
+  /3 width=1 by frees_pair/
+| #f #I #L1 #Hf #X #H1
+  >(teqx_inv_lref1 … H1) -X #Y #H2
+  elim (sex_inv_next1 … H2) -H2 #Z #L2 #_ #HZ #H destruct
+  >(ext2_inv_unit_sn … HZ) -Z /2 width=1 by frees_unit/
+| #f #I #L1 #i #_ #IH #X #H1
+  >(teqx_inv_lref1 … H1) -X #Y #H2
+  elim (sex_inv_push1 … H2) -H2 #J #L2 #HL12 #_ #H destruct
+  /3 width=1 by frees_lref/
+| #f #L1 #l #Hf #X #H1 #L2 #_
+  >(teqx_inv_gref1 … H1) -X /2 width=1 by frees_gref/
+| #f1V #f1T #f1 #p #I #L1 #V1 #T1 #_ #_ #Hf1 #IHV #IHT #X #H1
+  elim (teqx_inv_pair1 … H1) -H1 #V2 #T2 #HV12 #HT12 #H1 #L2 #HL12 destruct
+  /6 width=5 by frees_bind, sex_inv_tl, ext2_pair, sle_sex_trans, sor_inv_sle_dx, sor_inv_sle_sn/
+| #f1V #f1T #f1 #I #L1 #V1 #T1 #_ #_ #Hf1 #IHV #IHT #X #H1
+  elim (teqx_inv_pair1 … H1) -H1 #V2 #T2 #HV12 #HT12 #H1 #L2 #HL12 destruct
+  /5 width=5 by frees_flat, sle_sex_trans, sor_inv_sle_dx, sor_inv_sle_sn/
+]
+qed-.
+
+lemma frees_teqx_conf: ∀f,L,T1. L ⊢ 𝐅+⦃T1⦄ ≘ f →
+                       ∀T2. T1 ≛ T2 → L ⊢ 𝐅+⦃T2⦄ ≘ f.
+/4 width=7 by frees_teqx_conf_reqx, sex_refl, ext2_refl/ qed-.
+
+lemma frees_reqx_conf: ∀f,L1,T. L1 ⊢ 𝐅+⦃T⦄ ≘ f →
+                       ∀L2. L1 ≛[f] L2 → L2 ⊢ 𝐅+⦃T⦄ ≘ f.
+/2 width=7 by frees_teqx_conf_reqx, teqx_refl/ qed-.
+
+lemma teqx_rex_conf (R): s_r_confluent1 … cdeq (rex R).
+#R #L1 #T1 #T2 #HT12 #L2 *
+/3 width=5 by frees_teqx_conf, ex2_intro/
+qed-.
+
+lemma teqx_rex_div (R): ∀T1,T2. T1 ≛ T2 →
+                        ∀L1,L2. L1 ⪤[R,T2] L2 → L1 ⪤[R,T1] L2.
+/3 width=5 by teqx_rex_conf, teqx_sym/ qed-.
+
+lemma teqx_reqx_conf: s_r_confluent1 … cdeq reqx.
+/2 width=5 by teqx_rex_conf/ qed-.
+
+lemma teqx_reqx_div: ∀T1,T2. T1 ≛ T2 →
+                     ∀L1,L2. L1 ≛[T2] L2 → L1 ≛[T1] L2.
+/2 width=5 by teqx_rex_div/ qed-.
+
+lemma reqx_atom: ∀I. ⋆ ≛[⓪{I}] ⋆.
+/2 width=1 by rex_atom/ qed.
+
+lemma reqx_sort: ∀I1,I2,L1,L2,s.
+                 L1 ≛[⋆s] L2 → L1.ⓘ{I1} ≛[⋆s] L2.ⓘ{I2}.
+/2 width=1 by rex_sort/ qed.
+
+lemma reqx_pair: ∀I,L1,L2,V1,V2.
+                 L1 ≛[V1] L2 → V1 ≛ V2 → L1.ⓑ{I}V1 ≛[#0] L2.ⓑ{I}V2.
+/2 width=1 by rex_pair/ qed.
+
+lemma reqx_unit: ∀f,I,L1,L2. 𝐈⦃f⦄ → L1 ≛[f] L2 →
+                 L1.ⓤ{I} ≛[#0] L2.ⓤ{I}.
+/2 width=3 by rex_unit/ qed.
+
+lemma reqx_lref: ∀I1,I2,L1,L2,i.
+                 L1 ≛[#i] L2 → L1.ⓘ{I1} ≛[#↑i] L2.ⓘ{I2}.
+/2 width=1 by rex_lref/ qed.
+
+lemma reqx_gref: ∀I1,I2,L1,L2,l.
+                 L1 ≛[§l] L2 → L1.ⓘ{I1} ≛[§l] L2.ⓘ{I2}.
+/2 width=1 by rex_gref/ qed.
+
+lemma reqx_bind_repl_dx: ∀I,I1,L1,L2.∀T:term.
+                         L1.ⓘ{I} ≛[T] L2.ⓘ{I1} →
+                         ∀I2. I ≛ I2 →
+                         L1.ⓘ{I} ≛[T] L2.ⓘ{I2}.
+/2 width=2 by rex_bind_repl_dx/ qed-.
+
+(* Basic inversion lemmas ***************************************************)
+
+lemma reqx_inv_atom_sn: ∀Y2. ∀T:term. ⋆ ≛[T] Y2 → Y2 = ⋆.
+/2 width=3 by rex_inv_atom_sn/ qed-.
+
+lemma reqx_inv_atom_dx: ∀Y1. ∀T:term. Y1 ≛[T] ⋆ → Y1 = ⋆.
+/2 width=3 by rex_inv_atom_dx/ qed-.
+
+lemma reqx_inv_zero:
+      ∀Y1,Y2. Y1 ≛[#0] Y2 →
+      ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+       | ∃∃I,L1,L2,V1,V2. L1 ≛[V1] L2 & V1 ≛ V2 & Y1 = L1.ⓑ{I}V1 & Y2 = L2.ⓑ{I}V2
+       | ∃∃f,I,L1,L2. 𝐈⦃f⦄ & L1 ≛[f] L2 & Y1 = L1.ⓤ{I} & Y2 = L2.ⓤ{I}.
+#Y1 #Y2 #H elim (rex_inv_zero … H) -H *
+/3 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex4_4_intro, conj/
+qed-.
+
+lemma reqx_inv_lref: ∀Y1,Y2,i. Y1 ≛[#↑i] Y2 →
+                     ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+                      | ∃∃I1,I2,L1,L2. L1 ≛[#i] L2 &
+                                       Y1 = L1.ⓘ{I1} & Y2 = L2.ⓘ{I2}.
+/2 width=1 by rex_inv_lref/ qed-.
+
+(* Basic_2A1: uses: lleq_inv_bind lleq_inv_bind_O *)
+lemma reqx_inv_bind: ∀p,I,L1,L2,V,T. L1 ≛[ⓑ{p,I}V.T] L2 →
+                     ∧∧ L1 ≛[V] L2 & L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V.
+/2 width=2 by rex_inv_bind/ qed-.
+
+(* Basic_2A1: uses: lleq_inv_flat *)
+lemma reqx_inv_flat: ∀I,L1,L2,V,T. L1 ≛[ⓕ{I}V.T] L2 →
+                     ∧∧ L1 ≛[V] L2 & L1 ≛[T] L2.
+/2 width=2 by rex_inv_flat/ qed-.
+
+(* Advanced inversion lemmas ************************************************)
+
+lemma reqx_inv_zero_pair_sn: ∀I,Y2,L1,V1. L1.ⓑ{I}V1 ≛[#0] Y2 →
+                             ∃∃L2,V2. L1 ≛[V1] L2 & V1 ≛ V2 & Y2 = L2.ⓑ{I}V2.
+/2 width=1 by rex_inv_zero_pair_sn/ qed-.
+
+lemma reqx_inv_zero_pair_dx: ∀I,Y1,L2,V2. Y1 ≛[#0] L2.ⓑ{I}V2 →
+                             ∃∃L1,V1. L1 ≛[V1] L2 & V1 ≛ V2 & Y1 = L1.ⓑ{I}V1.
+/2 width=1 by rex_inv_zero_pair_dx/ qed-.
+
+lemma reqx_inv_lref_bind_sn: ∀I1,Y2,L1,i. L1.ⓘ{I1} ≛[#↑i] Y2 →
+                             ∃∃I2,L2. L1 ≛[#i] L2 & Y2 = L2.ⓘ{I2}.
+/2 width=2 by rex_inv_lref_bind_sn/ qed-.
+
+lemma reqx_inv_lref_bind_dx: ∀I2,Y1,L2,i. Y1 ≛[#↑i] L2.ⓘ{I2} →
+                             ∃∃I1,L1. L1 ≛[#i] L2 & Y1 = L1.ⓘ{I1}.
+/2 width=2 by rex_inv_lref_bind_dx/ qed-.
+
+(* Basic forward lemmas *****************************************************)
+
+lemma reqx_fwd_zero_pair: ∀I,K1,K2,V1,V2.
+                          K1.ⓑ{I}V1 ≛[#0] K2.ⓑ{I}V2 → K1 ≛[V1] K2.
+/2 width=3 by rex_fwd_zero_pair/ qed-.
+
+(* Basic_2A1: uses: lleq_fwd_bind_sn lleq_fwd_flat_sn *)
+lemma reqx_fwd_pair_sn: ∀I,L1,L2,V,T. L1 ≛[②{I}V.T] L2 → L1 ≛[V] L2.
+/2 width=3 by rex_fwd_pair_sn/ qed-.
+
+(* Basic_2A1: uses: lleq_fwd_bind_dx lleq_fwd_bind_O_dx *)
+lemma reqx_fwd_bind_dx: ∀p,I,L1,L2,V,T.
+                        L1 ≛[ⓑ{p,I}V.T] L2 → L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V.
+/2 width=2 by rex_fwd_bind_dx/ qed-.
+
+(* Basic_2A1: uses: lleq_fwd_flat_dx *)
+lemma reqx_fwd_flat_dx: ∀I,L1,L2,V,T. L1 ≛[ⓕ{I}V.T] L2 → L1 ≛[T] L2.
+/2 width=3 by rex_fwd_flat_dx/ qed-.
+
+lemma reqx_fwd_dx: ∀I2,L1,K2. ∀T:term. L1 ≛[T] K2.ⓘ{I2} →
+                   ∃∃I1,K1. L1 = K1.ⓘ{I1}.
+/2 width=5 by rex_fwd_dx/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/reqx_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/reqx_drops.ma
new file mode 100644 (file)
index 0000000..1a0837d
--- /dev/null
@@ -0,0 +1,52 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/relocation/lifts_teqx.ma".
+include "static_2/static/rex_drops.ma".
+include "static_2/static/reqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
+
+(* Properties with generic slicing for local environments *******************)
+
+lemma reqx_lifts_sn: f_dedropable_sn cdeq.
+/3 width=5 by rex_liftable_dedropable_sn, teqx_lifts_sn/ qed-.
+
+(* Inversion lemmas with generic slicing for local environments *************)
+
+lemma reqx_inv_lifts_sn: f_dropable_sn cdeq.
+/2 width=5 by rex_dropable_sn/ qed-.
+
+lemma reqx_inv_lifts_dx: f_dropable_dx cdeq.
+/2 width=5 by rex_dropable_dx/ qed-.
+
+lemma reqx_inv_lifts_bi: ∀L1,L2,U. L1 ≛[U] L2 → ∀b,f. 𝐔⦃f⦄ →
+                         ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 →
+                         ∀T. ⇧*[f] T ≘ U → K1 ≛[T] K2.
+/2 width=10 by rex_inv_lifts_bi/ qed-.
+
+lemma reqx_inv_lref_pair_sn: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 →
+                             ∃∃K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ≛[V1] K2 & V1 ≛ V2.
+/2 width=3 by rex_inv_lref_pair_sn/ qed-.
+
+lemma reqx_inv_lref_pair_dx: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I}V2 →
+                             ∃∃K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ≛[V1] K2 & V1 ≛ V2.
+/2 width=3 by rex_inv_lref_pair_dx/ qed-.
+
+lemma reqx_inv_lref_pair_bi (L1) (L2) (i):
+                            L1 ≛[#i] L2 →
+                            ∀I1,K1,V1. ⇩*[i] L1 ≘ K1.ⓑ{I1}V1 →
+                            ∀I2,K2,V2. ⇩*[i] L2 ≘ K2.ⓑ{I2}V2 →
+                            ∧∧ K1 ≛[V1] K2 & V1 ≛ V2 & I1 = I2.
+/2 width=6 by rex_inv_lref_pair_bi/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/reqx_fqup.ma b/matita/matita/contribs/lambdadelta/static_2/static/reqx_fqup.ma
new file mode 100644 (file)
index 0000000..d319017
--- /dev/null
@@ -0,0 +1,39 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/rex_fqup.ma".
+include "static_2/static/reqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
+
+(* Advanced properties ******************************************************)
+
+lemma reqx_refl: ∀T. reflexive … (reqx T).
+/2 width=1 by rex_refl/ qed.
+
+lemma reqx_pair_refl: ∀V1,V2. V1 ≛ V2 →
+                      ∀I,L. ∀T:term. L.ⓑ{I}V1 ≛[T] L.ⓑ{I}V2.
+/2 width=1 by rex_pair_refl/ qed.
+
+(* Advanced inversion lemmas ************************************************)
+
+lemma reqx_inv_bind_void: ∀p,I,L1,L2,V,T. L1 ≛[ⓑ{p,I}V.T] L2 →
+                          L1 ≛[V] L2 ∧ L1.ⓧ ≛[T] L2.ⓧ.
+/2 width=3 by rex_inv_bind_void/ qed-.
+
+(* Advanced forward lemmas **************************************************)
+
+lemma reqx_fwd_bind_dx_void: ∀p,I,L1,L2,V,T.
+                             L1 ≛[ⓑ{p,I}V.T] L2 → L1.ⓧ ≛[T] L2.ⓧ.
+/2 width=4 by rex_fwd_bind_dx_void/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/reqx_fqus.ma b/matita/matita/contribs/lambdadelta/static_2/static/reqx_fqus.ma
new file mode 100644 (file)
index 0000000..462a000
--- /dev/null
@@ -0,0 +1,156 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/s_computation/fqus_fqup.ma".
+include "static_2/static/reqx_drops.ma".
+include "static_2/static/reqx_fqup.ma".
+include "static_2/static/reqx_reqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
+
+(* Properties with extended structural successor for closures ***************)
+
+lemma fqu_teqx_conf: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂[b] ⦃G2,L2,T1⦄ →
+                     ∀U2. U1 ≛ U2 →
+                     ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂[b] ⦃G2,L,T2⦄ & L2 ≛[T1] L & T1 ≛ T2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -G1 -G2 -L1 -L2 -U1 -T1
+[ #I #G #L #W #X #H >(teqx_inv_lref1 … H) -X
+  /2 width=5 by fqu_lref_O, ex3_2_intro/
+| #I #G #L #W1 #U1 #X #H
+  elim (teqx_inv_pair1 … H) -H #W2 #U2 #HW12 #_ #H destruct
+  /2 width=5 by fqu_pair_sn, ex3_2_intro/
+| #p #I #G #L #W1 #U1 #Hb #X #H
+  elim (teqx_inv_pair1 … H) -H #W2 #U2 #HW12 #HU12 #H destruct
+  /3 width=5 by reqx_pair_refl, fqu_bind_dx, ex3_2_intro/
+| #p #I #G #L #W1 #U1 #Hb #X #H
+  elim (teqx_inv_pair1 … H) -H #W2 #U2 #HW12 #HU12 #H destruct
+  /3 width=5 by fqu_clear, ex3_2_intro/
+| #I #G #L #W1 #U1 #X #H
+  elim (teqx_inv_pair1 … H) -H #W2 #U2 #_ #HU12 #H destruct
+  /2 width=5 by fqu_flat_dx, ex3_2_intro/
+| #I #G #L #T1 #U1 #HTU1 #U2 #HU12
+  elim (teqx_inv_lifts_sn … HU12 … HTU1) -U1
+  /3 width=5 by fqu_drop, ex3_2_intro/
+]
+qed-.
+
+lemma teqx_fqu_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂[b] ⦃G2,L2,T1⦄ →
+                      ∀U2. U2 ≛ U1 →
+                      ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H12 #U2 #HU21
+elim (fqu_teqx_conf … H12 U2) -H12
+/3 width=5 by reqx_sym, teqx_sym, ex3_2_intro/
+qed-.
+
+(* Basic_2A1: uses: lleq_fqu_trans *)
+lemma reqx_fqu_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂[b] ⦃G2,K2,U⦄ →
+                      ∀L1. L1 ≛[T] L2 →
+                      ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H elim H -G1 -G2 -L2 -K2 -T -U
+[ #I #G #L2 #V2 #L1 #H elim (reqx_inv_zero_pair_dx … H) -H
+  #K1 #V1 #HV1 #HV12 #H destruct
+  /3 width=7 by teqx_reqx_conf, fqu_lref_O, ex3_2_intro/
+| * [ #p ] #I #G #L2 #V #T #L1 #H
+  [ elim (reqx_inv_bind … H)
+  | elim (reqx_inv_flat … H)
+  ] -H
+  /2 width=5 by fqu_pair_sn, ex3_2_intro/
+| #p #I #G #L2 #V #T #Hb #L1 #H elim (reqx_inv_bind … H) -H
+  /3 width=5 by fqu_bind_dx, ex3_2_intro/
+| #p #I #G #L2 #V #T #Hb #L1 #H elim (reqx_inv_bind_void … H) -H
+  /3 width=5 by fqu_clear, ex3_2_intro/
+| #I #G #L2 #V #T #L1 #H elim (reqx_inv_flat … H) -H
+  /2 width=5 by fqu_flat_dx, ex3_2_intro/
+| #I #G #L2 #T #U #HTU #Y #HU
+  elim (reqx_fwd_dx … HU) #L1 #V1 #H destruct
+  /5 width=14 by reqx_inv_lifts_bi, fqu_drop, drops_refl, drops_drop, ex3_2_intro/
+]
+qed-.
+
+(* Properties with optional structural successor for closures ***************)
+
+lemma teqx_fquq_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂⸮[b] ⦃G2,L2,T1⦄ →
+                       ∀U2. U2 ≛ U1 →
+                       ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂⸮[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -H
+[ #H #U2 #HU21 elim (teqx_fqu_trans … H … HU21) -U1
+  /3 width=5 by fqu_fquq, ex3_2_intro/
+| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
+]
+qed-.
+
+(* Basic_2A1: was just: lleq_fquq_trans *)
+lemma reqx_fquq_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂⸮[b] ⦃G2,K2,U⦄ →
+                       ∀L1. L1 ≛[T] L2 →
+                       ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂⸮[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H elim H -H
+[ #H #L1 #HL12 elim (reqx_fqu_trans … H … HL12) -L2 /3 width=5 by fqu_fquq, ex3_2_intro/
+| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
+]
+qed-.
+
+(* Properties with plus-iterated structural successor for closures **********)
+
+(* Basic_2A1: was just: lleq_fqup_trans *)
+lemma reqx_fqup_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂+[b] ⦃G2,K2,U⦄ →
+                       ∀L1. L1 ≛[T] L2 →
+                       ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂+[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H @(fqup_ind … H) -G2 -K2 -U
+[ #G2 #K2 #U #HTU #L1 #HL12 elim (reqx_fqu_trans … HTU … HL12) -L2
+  /3 width=5 by fqu_fqup, ex3_2_intro/
+| #G #G2 #K #K2 #U #U2 #_ #HU2 #IHTU #L1 #HL12
+  elim (IHTU … HL12) -L2 #K0 #U0 #HTU #HU0 #HK0
+  elim (reqx_fqu_trans … HU2 … HK0) -K #K1 #U1 #HU1 #HU12 #HK12
+  elim (teqx_fqu_trans … HU1 … HU0) -U #K3 #U3 #HU03 #HU31 #HK31
+  @(ex3_2_intro … K3 U3) (**) (* full auto too slow *)
+  /3 width=5 by reqx_trans, teqx_reqx_conf, fqup_strap1, teqx_trans/
+]
+qed-.
+
+lemma teqx_fqup_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂+[b] ⦃G2,L2,T1⦄ →
+                       ∀U2. U2 ≛ U1 →
+                       ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂+[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H @(fqup_ind_dx … H) -G1 -L1 -U1
+[ #G1 #L1 #U1 #H #U2 #HU21 elim (teqx_fqu_trans … H … HU21) -U1
+  /3 width=5 by fqu_fqup, ex3_2_intro/
+| #G1 #G #L1 #L #U1 #U #H #_ #IH #U2 #HU21
+  elim (teqx_fqu_trans … H … HU21) -U1 #L0 #T #H1 #HTU #HL0
+  lapply (teqx_reqx_div … HTU … HL0) -HL0 #HL0
+  elim (IH … HTU) -U #K2 #U1 #H2 #HUT1 #HKL2
+  elim (reqx_fqup_trans … H2 … HL0) -L #K #U #H2 #HU1 #HK2
+  lapply (teqx_reqx_conf … HUT1 … HK2) -HK2 #HK2
+  /3 width=7 by reqx_trans, fqup_strap2, teqx_trans, ex3_2_intro/
+]
+qed-.
+
+(* Properties with star-iterated structural successor for closures **********)
+
+lemma teqx_fqus_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1,L1,U1⦄ ⬂*[b] ⦃G2,L2,T1⦄ →
+                       ∀U2. U2 ≛ U1 →
+                       ∃∃L,T2. ⦃G1,L1,U2⦄ ⬂*[b] ⦃G2,L,T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H #U2 #HU21 elim(fqus_inv_fqup … H) -H
+[ #H elim (teqx_fqup_trans … H … HU21) -U1 /3 width=5 by fqup_fqus, ex3_2_intro/
+| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
+]
+qed-.
+
+(* Basic_2A1: was just: lleq_fqus_trans *)
+lemma reqx_fqus_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1,L2,T⦄ ⬂*[b] ⦃G2,K2,U⦄ →
+                       ∀L1. L1 ≛[T] L2 →
+                       ∃∃K1,U0. ⦃G1,L1,T⦄ ⬂*[b] ⦃G2,K1,U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H #L1 #HL12 elim(fqus_inv_fqup … H) -H
+[ #H elim (reqx_fqup_trans … H … HL12) -L2 /3 width=5 by fqup_fqus, ex3_2_intro/
+| * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/reqx_length.ma b/matita/matita/contribs/lambdadelta/static_2/static/reqx_length.ma
new file mode 100644 (file)
index 0000000..d8750ca
--- /dev/null
@@ -0,0 +1,55 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/relocation/lifts_teqx.ma".
+include "static_2/static/rex_length.ma".
+include "static_2/static/rex_fsle.ma".
+include "static_2/static/reqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
+
+(* Advanved properties with free variables inclusion ************************)
+
+lemma reqx_fsge_comp: rex_fsge_compatible cdeq.
+#L1 #L2 #T * #f1 #Hf1 #HL12
+lapply (frees_reqx_conf … Hf1 … HL12)
+lapply (sex_fwd_length … HL12)
+/3 width=8 by lveq_length_eq, ex4_4_intro/ (**) (* full auto fails *)
+qed-.
+
+(* Properties with length for local environments ****************************)
+
+(* Basic_2A1: uses: lleq_sort *)
+lemma reqx_sort_length: ∀L1,L2. |L1| = |L2| → ∀s. L1 ≛[⋆s] L2.
+/2 width=1 by rex_sort_length/ qed.
+
+(* Basic_2A1: uses: lleq_gref *)
+lemma reqx_gref_length: ∀L1,L2. |L1| = |L2| → ∀l. L1 ≛[§l] L2.
+/2 width=1 by rex_gref_length/ qed.
+
+lemma reqx_unit_length: ∀L1,L2. |L1| = |L2| →
+                        ∀I. L1.ⓤ{I} ≛[#0] L2.ⓤ{I}.
+/2 width=1 by rex_unit_length/ qed.
+
+(* Basic_2A1: uses: lleq_lift_le lleq_lift_ge *)
+lemma reqx_lifts_bi: ∀L1,L2. |L1| = |L2| → ∀K1,K2,T. K1 ≛[T] K2 →
+                     ∀b,f. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 →
+                     ∀U. ⇧*[f] T ≘ U → L1 ≛[U] L2.
+/3 width=9 by rex_lifts_bi, teqx_lifts_sn/ qed-.
+
+(* Forward lemmas with length for local environments ************************)
+
+(* Basic_2A1: lleq_fwd_length *)
+lemma reqx_fwd_length: ∀L1,L2. ∀T:term. L1 ≛[T] L2 → |L1| = |L2|.
+/2 width=3 by rex_fwd_length/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/reqx_req.ma b/matita/matita/contribs/lambdadelta/static_2/static/reqx_req.ma
new file mode 100644 (file)
index 0000000..8ec1b14
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/static/req_fsle.ma".
+include "static_2/static/reqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
+
+(* Properties with syntactic equivalence on referred entries ****************)
+
+lemma req_reqx: ∀L1,L2. ∀T:term. L1 ≡[T] L2 → L1 ≛[T] L2.
+/2 width=3 by rex_co/ qed.
+
+lemma req_reqx_trans: ∀L1,L. ∀T:term. L1 ≡[T] L →
+                      ∀L2. L ≛[T] L2 → L1 ≛[T] L2.
+/2 width=3 by req_rex_trans/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/static/reqx_reqx.ma b/matita/matita/contribs/lambdadelta/static_2/static/reqx_reqx.ma
new file mode 100644 (file)
index 0000000..f190e90
--- /dev/null
@@ -0,0 +1,99 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/ext2_ext2.ma".
+include "static_2/syntax/teqx_teqx.ma".
+include "static_2/static/reqx_length.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
+
+(* Advanced properties ******************************************************)
+
+(* Basic_2A1: uses: lleq_sym *)
+lemma reqx_sym: ∀T. symmetric … (reqx T).
+/3 width=3 by reqx_fsge_comp, rex_sym, teqx_sym/ qed-.
+
+(* Basic_2A1: uses: lleq_dec *)
+lemma reqx_dec: ∀L1,L2. ∀T:term. Decidable (L1 ≛[T] L2).
+/3 width=1 by rex_dec, teqx_dec/ qed-.
+
+(* Main properties **********************************************************)
+
+(* Basic_2A1: uses: lleq_bind lleq_bind_O *) 
+theorem reqx_bind: ∀p,I,L1,L2,V1,V2,T.
+                   L1 ≛[V1] L2 → L1.ⓑ{I}V1 ≛[T] L2.ⓑ{I}V2 →
+                   L1 ≛[ⓑ{p,I}V1.T] L2.
+/2 width=2 by rex_bind/ qed.
+
+(* Basic_2A1: uses: lleq_flat *)
+theorem reqx_flat: ∀I,L1,L2,V,T.
+                   L1 ≛[V] L2 → L1 ≛[T] L2 → L1 ≛[ⓕ{I}V.T] L2.
+/2 width=1 by rex_flat/ qed.
+
+theorem reqx_bind_void: ∀p,I,L1,L2,V,T.
+                        L1 ≛[V] L2 → L1.ⓧ ≛[T] L2.ⓧ → L1 ≛[ⓑ{p,I}V.T] L2.
+/2 width=1 by rex_bind_void/ qed.
+
+(* Basic_2A1: uses: lleq_trans *)
+theorem reqx_trans: ∀T. Transitive … (reqx T).
+#T #L1 #L * #f1 #Hf1 #HL1 #L2 * #f2 #Hf2 #HL2
+lapply (frees_teqx_conf_reqx … Hf1 T … HL1) // #H0
+lapply (frees_mono … Hf2 … H0) -Hf2 -H0
+/5 width=7 by sex_trans, sex_eq_repl_back, teqx_trans, ext2_trans, ex2_intro/
+qed-.
+
+(* Basic_2A1: uses: lleq_canc_sn *)
+theorem reqx_canc_sn: ∀T. left_cancellable … (reqx T).
+/3 width=3 by reqx_trans, reqx_sym/ qed-.
+
+(* Basic_2A1: uses: lleq_canc_dx *)
+theorem reqx_canc_dx: ∀T. right_cancellable … (reqx T).
+/3 width=3 by reqx_trans, reqx_sym/ qed-.
+
+theorem reqx_repl: ∀L1,L2. ∀T:term. L1 ≛[T] L2 →
+                   ∀K1. L1 ≛[T] K1 → ∀K2. L2 ≛[T] K2 → K1 ≛[T] K2.
+/3 width=3 by reqx_canc_sn, reqx_trans/ qed-.
+
+(* Negated properties *******************************************************)
+
+(* Note: auto works with /4 width=8/ so reqx_canc_sn is preferred **********) 
+(* Basic_2A1: uses: lleq_nlleq_trans *)
+lemma reqx_rneqx_trans: ∀T:term.∀L1,L. L1 ≛[T] L →
+                        ∀L2. (L ≛[T] L2 → ⊥) → (L1 ≛[T] L2 → ⊥).
+/3 width=3 by reqx_canc_sn/ qed-.
+
+(* Basic_2A1: uses: nlleq_lleq_div *)
+lemma rneqx_reqx_div: ∀T:term.∀L2,L. L2 ≛[T] L →
+                      ∀L1. (L1 ≛[T] L → ⊥) → (L1 ≛[T] L2 → ⊥).
+/3 width=3 by reqx_trans/ qed-.
+
+theorem rneqx_reqx_canc_dx: ∀L1,L. ∀T:term. (L1 ≛[T] L → ⊥) →
+                            ∀L2. L2 ≛[T] L → L1 ≛[T] L2 → ⊥.
+/3 width=3 by reqx_trans/ qed-.
+
+(* Negated inversion lemmas *************************************************)
+
+(* Basic_2A1: uses: nlleq_inv_bind nlleq_inv_bind_O *)
+lemma rneqx_inv_bind: ∀p,I,L1,L2,V,T. (L1 ≛[ⓑ{p,I}V.T] L2 → ⊥) →
+                      (L1 ≛[V] L2 → ⊥) ∨ (L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V → ⊥).
+/3 width=2 by rnex_inv_bind, teqx_dec/ qed-.
+
+(* Basic_2A1: uses: nlleq_inv_flat *)
+lemma rneqx_inv_flat: ∀I,L1,L2,V,T. (L1 ≛[ⓕ{I}V.T] L2 → ⊥) →
+                      (L1 ≛[V] L2 → ⊥) ∨ (L1 ≛[T] L2 → ⊥).
+/3 width=2 by rnex_inv_flat, teqx_dec/ qed-.
+
+lemma rneqx_inv_bind_void: ∀p,I,L1,L2,V,T. (L1 ≛[ⓑ{p,I}V.T] L2 → ⊥) →
+                           (L1 ≛[V] L2 → ⊥) ∨ (L1.ⓧ ≛[T] L2.ⓧ → ⊥).
+/3 width=3 by rnex_inv_bind_void, teqx_dec/ qed-.
index 56c80d69e4c4dcd24f8813223d07f737587eab92..296322e61a8f173698ce3a0f2a439130d2b91298 100644 (file)
@@ -12,7 +12,6 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground_2/pull/pull_2.ma".
 include "static_2/syntax/sh_props.ma".
 include "static_2/syntax/sd.ma".
 
index 494436476eb1fc18192ba917277de91e72f62827..b7e10f851883233aae42c87faa1966256653c025 100644 (file)
@@ -36,6 +36,74 @@ lapply (nexts_le … Hh s n) #H
 @(le_to_lt_to_lt … H) /2 width=1 by next_lt/
 qed.
 
-axiom sh_lt_dec (h): sh_lt h → sh_decidable h.
+lemma sh_lt_nexts_inv_lt (h): sh_lt h →
+      ∀s,n1,n2. (next h)^n1 s < (next h)^n2 s → n1 < n2.
+#h #Hh
+@pull_2 #n1
+elim n1 -n1
+[ #s *
+  [ #H elim (lt_refl_false … H)
+  | #n2 //
+  ]
+| #n1 #IH #s *
+  [ >iter_O #H
+    elim (lt_refl_false s)
+    /3 width=3 by nexts_lt, transitive_lt/
+  | #n2 >iter_S >iter_S <(iter_n_Sm … (next h)) <(iter_n_Sm … (next h)) #H
+    /3 width=2 by lt_S_S/
+  ]
+]
+qed-.
 
-axiom sh_lt_acyclic (h): sh_lt h → sh_acyclic h.
+lemma sh_lt_acyclic (h): sh_lt h → sh_acyclic h.
+#h #Hh
+@mk_sh_acyclic
+@pull_2 #n1
+elim n1 -n1
+[ #s * [ // ] #n2 >iter_O #H
+  elim (lt_refl_false s) >H in ⊢ (??%); -H
+  /2 width=1 by nexts_lt/
+| #n1 #IH #s *
+  [ >iter_O #H -IH
+    elim (lt_refl_false s) <H in ⊢ (??%); -H
+    /2 width=1 by nexts_lt/
+  | #n2 >iter_S >iter_S <(iter_n_Sm … (next h)) <(iter_n_Sm … (next h)) #H
+    /3 width=2 by eq_f/
+  ]
+]
+qed.
+
+lemma sh_lt_dec (h): sh_lt h → sh_decidable h.
+#h #Hh
+@mk_sh_decidable #s1 #s2
+elim (lt_or_ge s2 s1) #Hs
+[ @or_intror * #n #H destruct
+  @(lt_le_false … Hs) /2 width=1 by nexts_le/ (**) (* full auto too slow *)
+| @(nat_elim_le_sn … Hs) -s1 -s2 #s1 #s2 #IH #Hs12
+  elim (lt_or_eq_or_gt s2 (⫯[h]s1)) #Hs21 destruct
+  [ elim (le_to_or_lt_eq … Hs12) -Hs12 #Hs12 destruct
+    [ -IH @or_intror * #n #H destruct
+      generalize in match Hs21; -Hs21
+      <(iter_O … (next h) s1) in ⊢ (??%→?); <(iter_S … (next h)) #H
+      lapply (sh_lt_nexts_inv_lt … Hh … H) -H #H
+      <(le_n_O_to_eq n) in Hs12;
+      /2 width=2 by lt_refl_false, le_S_S_to_le/
+    | /3 width=2 by ex_intro, or_introl/
+    ]
+  | -IH @or_introl @(ex_intro … 1) // (**) (* auto fails *)
+  | lapply (transitive_lt s1 ??? Hs21) [ /2 width=1 by next_lt/ ] -Hs12 #Hs12 
+    elim (IH (s2-⫯[h]s1)) -IH
+    [3: /3 width=1 by next_lt, monotonic_lt_minus_r/ ]
+    >minus_minus_m_m [2,4: /2 width=1 by lt_to_le/ ] -Hs21
+    [ * #n #H destruct
+      @or_introl @(ex_intro … (↑n)) >iter_S >iter_n_Sm //
+    | #H1 @or_intror * #n #H2 @H1 -H1 destruct
+      generalize in match Hs12; -Hs12
+      <(iter_O … (next h) s1) in ⊢ (?%?→?); #H
+      lapply (sh_lt_nexts_inv_lt … Hh … H) -H #H
+      <(S_pred … H) -H
+      @(ex_intro … (↓n)) >(iter_n_Sm … (next h)) >iter_S //
+    ]
+  ]
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/tdeq.ma
deleted file mode 100644 (file)
index 60c1e4d..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/notation/relations/stareq_2.ma".
-include "static_2/syntax/term.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE ON TERMS *************************************)
-
-inductive tdeq: relation term ≝
-| tdeq_sort: ∀s1,s2. tdeq (⋆s1) (⋆s2)
-| tdeq_lref: ∀i. tdeq (#i) (#i)
-| tdeq_gref: ∀l. tdeq (§l) (§l)
-| tdeq_pair: ∀I,V1,V2,T1,T2. tdeq V1 V2 → tdeq T1 T2 → tdeq (②{I}V1.T1) (②{I}V2.T2)
-.
-
-interpretation
-   "context-free sort-irrelevant equivalence (term)"
-   'StarEq T1 T2 = (tdeq T1 T2).
-
-(* Basic properties *********************************************************)
-
-lemma tdeq_refl: reflexive … tdeq.
-#T elim T -T /2 width=1 by tdeq_pair/
-* /2 width=1 by tdeq_lref, tdeq_gref/
-qed.
-
-lemma tdeq_sym: symmetric … tdeq.
-#T1 #T2 #H elim H -T1 -T2
-/2 width=3 by tdeq_sort, tdeq_lref, tdeq_gref, tdeq_pair/
-qed-.
-
-(* Basic inversion lemmas ***************************************************)
-
-fact tdeq_inv_sort1_aux: ∀X,Y. X ≛ Y → ∀s1. X = ⋆s1 →
-                         ∃s2. Y = ⋆s2.
-#X #Y * -X -Y
-[ #s1 #s2 #s #H destruct /2 width=2 by ex_intro/
-| #i #s #H destruct
-| #l #s #H destruct
-| #I #V1 #V2 #T1 #T2 #_ #_ #s #H destruct
-]
-qed-.
-
-lemma tdeq_inv_sort1: ∀Y,s1. ⋆s1 ≛ Y →
-                      ∃s2. Y = ⋆s2.
-/2 width=4 by tdeq_inv_sort1_aux/ qed-.
-
-fact tdeq_inv_lref1_aux: ∀X,Y. X ≛ Y → ∀i. X = #i → Y = #i.
-#X #Y * -X -Y //
-[ #s1 #s2 #j #H destruct
-| #I #V1 #V2 #T1 #T2 #_ #_ #j #H destruct
-]
-qed-.
-
-lemma tdeq_inv_lref1: ∀Y,i. #i ≛ Y → Y = #i.
-/2 width=5 by tdeq_inv_lref1_aux/ qed-.
-
-fact tdeq_inv_gref1_aux: ∀X,Y. X ≛ Y → ∀l. X = §l → Y = §l.
-#X #Y * -X -Y //
-[ #s1 #s2 #k #H destruct
-| #I #V1 #V2 #T1 #T2 #_ #_ #k #H destruct
-]
-qed-.
-
-lemma tdeq_inv_gref1: ∀Y,l. §l ≛ Y → Y = §l.
-/2 width=5 by tdeq_inv_gref1_aux/ qed-.
-
-fact tdeq_inv_pair1_aux: ∀X,Y. X ≛ Y → ∀I,V1,T1. X = ②{I}V1.T1 →
-                         ∃∃V2,T2. V1 ≛ V2 & T1 ≛ T2 & Y = ②{I}V2.T2.
-#X #Y * -X -Y
-[ #s1 #s2 #J #W1 #U1 #H destruct
-| #i #J #W1 #U1 #H destruct
-| #l #J #W1 #U1 #H destruct
-| #I #V1 #V2 #T1 #T2 #HV #HT #J #W1 #U1 #H destruct /2 width=5 by ex3_2_intro/
-]
-qed-.
-
-lemma tdeq_inv_pair1: ∀I,V1,T1,Y. ②{I}V1.T1 ≛ Y →
-                      ∃∃V2,T2. V1 ≛ V2 & T1 ≛ T2 & Y = ②{I}V2.T2.
-/2 width=3 by tdeq_inv_pair1_aux/ qed-.
-
-lemma tdeq_inv_sort2: ∀X1,s2. X1 ≛ ⋆s2 →
-                      ∃s1. X1 = ⋆s1.
-#X1 #s2 #H
-elim (tdeq_inv_sort1 X1 s2)
-/2 width=2 by tdeq_sym, ex_intro/
-qed-.
-
-lemma tdeq_inv_pair2: ∀I,X1,V2,T2. X1 ≛ ②{I}V2.T2 →
-                      ∃∃V1,T1. V1 ≛ V2 & T1 ≛ T2 & X1 = ②{I}V1.T1.
-#I #X1 #V2 #T2 #H
-elim (tdeq_inv_pair1 I V2 T2 X1)
-[ #V1 #T1 #HV #HT #H destruct ]
-/3 width=5 by tdeq_sym, ex3_2_intro/
-qed-.
-
-(* Advanced inversion lemmas ************************************************)
-
-lemma tdeq_inv_pair: ∀I1,I2,V1,V2,T1,T2. ②{I1}V1.T1 ≛ ②{I2}V2.T2 →
-                     ∧∧ I1 = I2 & V1 ≛ V2 & T1 ≛ T2.
-#I1 #I2 #V1 #V2 #T1 #T2 #H elim (tdeq_inv_pair1 … H) -H
-#V0 #T0 #HV #HT #H destruct /2 width=1 by and3_intro/
-qed-.
-
-lemma tdeq_inv_pair_xy_x: ∀I,V,T. ②{I}V.T ≛ V → ⊥.
-#I #V elim V -V
-[ #J #T #H elim (tdeq_inv_pair1 … H) -H #X #Y #_ #_ #H destruct
-| #J #X #Y #IHX #_ #T #H elim (tdeq_inv_pair … H) -H #H #HY #_ destruct /2 width=2 by/
-]
-qed-.
-
-lemma tdeq_inv_pair_xy_y: ∀I,T,V. ②{I}V.T ≛ T → ⊥.
-#I #T elim T -T
-[ #J #V #H elim (tdeq_inv_pair1 … H) -H #X #Y #_ #_ #H destruct
-| #J #X #Y #_ #IHY #V #H elim (tdeq_inv_pair … H) -H #H #_ #HY destruct /2 width=2 by/
-]
-qed-.
-
-(* Basic forward lemmas *****************************************************)
-
-lemma tdeq_fwd_atom1: ∀I,Y. ⓪{I} ≛ Y → ∃J. Y = ⓪{J}.
-* #x #Y #H [ elim (tdeq_inv_sort1 … H) -H ]
-/3 width=4 by tdeq_inv_gref1, tdeq_inv_lref1, ex_intro/
-qed-.
-
-(* Advanced properties ******************************************************)
-
-lemma tdeq_dec: ∀T1,T2. Decidable (T1 ≛ T2).
-#T1 elim T1 -T1 [ * #s1 | #I1 #V1 #T1 #IHV #IHT ] * [1,3,5,7: * #s2 |*: #I2 #V2 #T2 ]
-[ /3 width=1 by tdeq_sort, or_introl/
-|2,3,13:
-  @or_intror #H
-  elim (tdeq_inv_sort1 … H) -H #x #H destruct
-|4,6,14:
-  @or_intror #H
-  lapply (tdeq_inv_lref1 … H) -H #H destruct
-|5:
-  elim (eq_nat_dec s1 s2) #Hs12 destruct /2 width=1 by or_introl/
-  @or_intror #H
-  lapply (tdeq_inv_lref1 … H) -H #H destruct /2 width=1 by/
-|7,8,15:
-  @or_intror #H
-  lapply (tdeq_inv_gref1 … H) -H #H destruct
-|9:
-  elim (eq_nat_dec s1 s2) #Hs12 destruct /2 width=1 by or_introl/
-  @or_intror #H
-  lapply (tdeq_inv_gref1 … H) -H #H destruct /2 width=1 by/
-|10,11,12:
-  @or_intror #H
-  elim (tdeq_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
-|16:
-  elim (eq_item2_dec I1 I2) #HI12 destruct
-  [ elim (IHV V2) -IHV #HV12
-    elim (IHT T2) -IHT #HT12
-    [ /3 width=1 by tdeq_pair, or_introl/ ]
-  ]
-  @or_intror #H
-  elim (tdeq_inv_pair … H) -H /2 width=1 by/
-]
-qed-.
-
-(* Negated inversion lemmas *************************************************)
-
-lemma tdneq_inv_pair: ∀I1,I2,V1,V2,T1,T2.
-                      (②{I1}V1.T1 ≛ ②{I2}V2.T2 → ⊥) → 
-                      ∨∨ I1 = I2 → ⊥
-                      |  (V1 ≛ V2 → ⊥)
-                      |  (T1 ≛ T2 → ⊥).
-#I1 #I2 #V1 #V2 #T1 #T2 #H12
-elim (eq_item2_dec I1 I2) /3 width=1 by or3_intro0/ #H destruct
-elim (tdeq_dec V1 V2) /3 width=1 by or3_intro1/
-elim (tdeq_dec T1 T2) /4 width=1 by tdeq_pair, or3_intro2/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_ext.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_ext.ma
deleted file mode 100644 (file)
index 09f7c5a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/notation/relations/stareq_3.ma".
-include "static_2/syntax/cext2.ma".
-include "static_2/syntax/tdeq.ma".
-
-(* EXTENDED SORT-IRRELEVANT EQUIVALENCE *************************************)
-
-definition tdeq_ext: relation bind ≝
-                     ext2 tdeq.
-
-definition cdeq: relation3 lenv term term ≝
-                 λL. tdeq.
-
-definition cdeq_ext: relation3 lenv bind bind ≝
-                     cext2 cdeq.
-
-interpretation
-   "context-free sort-irrelevant equivalence (binder)"
-   'StarEq I1 I2 = (tdeq_ext I1 I2).
-
-interpretation
-   "context-dependent sort-irrelevant equivalence (term)"
-   'StarEq L T1 T2 = (cdeq L T1 T2).
-
-interpretation
-   "context-dependent sort-irrelevant equivalence (binder)"
-   'StarEq L I1 I2 = (cdeq_ext L I1 I2).
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_tdeq.ma
deleted file mode 100644 (file)
index 3ed01ec..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/syntax/tdeq.ma".
-
-(* SORT-IRRELEVANT EQUIVALENCE ON TERMS *************************************)
-
-(* Main properties **********************************************************)
-
-theorem tdeq_trans: Transitive … tdeq.
-#T1 #T #H elim H -T1 -T
-[ #s1 #s #X #H
-  elim (tdeq_inv_sort1 … H) -s /2 width=1 by tdeq_sort/
-| #i1 #i #H <(tdeq_inv_lref1 … H) -H //
-| #l1 #l #H <(tdeq_inv_gref1 … H) -H //
-| #I #V1 #V #T1 #T #_ #_ #IHV #IHT #X #H
-  elim (tdeq_inv_pair1 … H) -H /3 width=1 by tdeq_pair/
-]
-qed-.
-
-theorem tdeq_canc_sn: left_cancellable … tdeq.
-/3 width=3 by tdeq_trans, tdeq_sym/ qed-.
-
-theorem tdeq_canc_dx: right_cancellable … tdeq.
-/3 width=3 by tdeq_trans, tdeq_sym/ qed-.
-
-theorem tdeq_repl: ∀T1,T2. T1 ≛ T2 →
-                   ∀U1. T1 ≛ U1 → ∀U2. T2 ≛ U2 → U1 ≛ U2.
-/3 width=3 by tdeq_canc_sn, tdeq_trans/ qed-.
-
-(* Negated main properies ***************************************************)
-
-theorem tdeq_tdneq_trans: ∀T1,T. T1 ≛ T → ∀T2. (T ≛ T2 → ⊥) → T1 ≛ T2 → ⊥.
-/3 width=3 by tdeq_canc_sn/ qed-.
-
-theorem tdneq_tdeq_canc_dx: ∀T1,T. (T1 ≛ T → ⊥) → ∀T2. T2 ≛ T → T1 ≛ T2 → ⊥.
-/3 width=3 by tdeq_trans/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/teqo_tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/teqo_tdeq.ma
deleted file mode 100644 (file)
index a0a93b9..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/syntax/tdeq.ma".
-include "static_2/syntax/teqo.ma".
-
-(* SORT-IRRELEVANT OUTER EQUIVALENCE FOR TERMS ******************************)
-
-(* Properties with sort-irrelevant equivalence for terms ********************)
-
-lemma tdeq_teqo: ∀T1,T2. T1 ≛ T2 → T1 ⩳ T2.
-#T1 #T2 * -T1 -T2 /2 width=1 by teqo_sort, teqo_pair/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/teqo_teqx.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/teqo_teqx.ma
new file mode 100644 (file)
index 0000000..845725d
--- /dev/null
@@ -0,0 +1,24 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/teqx.ma".
+include "static_2/syntax/teqo.ma".
+
+(* SORT-IRRELEVANT OUTER EQUIVALENCE FOR TERMS ******************************)
+
+(* Properties with sort-irrelevant equivalence for terms ********************)
+
+lemma teqx_teqo: ∀T1,T2. T1 ≛ T2 → T1 ⩳ T2.
+#T1 #T2 * -T1 -T2 /2 width=1 by teqo_sort, teqo_pair/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/teqx.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/teqx.ma
new file mode 100644 (file)
index 0000000..6c1ddd1
--- /dev/null
@@ -0,0 +1,184 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/notation/relations/stareq_2.ma".
+include "static_2/syntax/term.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE ON TERMS *************************************)
+
+inductive teqx: relation term ≝
+| teqx_sort: ∀s1,s2. teqx (⋆s1) (⋆s2)
+| teqx_lref: ∀i. teqx (#i) (#i)
+| teqx_gref: ∀l. teqx (§l) (§l)
+| teqx_pair: ∀I,V1,V2,T1,T2. teqx V1 V2 → teqx T1 T2 → teqx (②{I}V1.T1) (②{I}V2.T2)
+.
+
+interpretation
+   "context-free sort-irrelevant equivalence (term)"
+   'StarEq T1 T2 = (teqx T1 T2).
+
+(* Basic properties *********************************************************)
+
+lemma teqx_refl: reflexive … teqx.
+#T elim T -T /2 width=1 by teqx_pair/
+* /2 width=1 by teqx_lref, teqx_gref/
+qed.
+
+lemma teqx_sym: symmetric … teqx.
+#T1 #T2 #H elim H -T1 -T2
+/2 width=3 by teqx_sort, teqx_lref, teqx_gref, teqx_pair/
+qed-.
+
+(* Basic inversion lemmas ***************************************************)
+
+fact teqx_inv_sort1_aux: ∀X,Y. X ≛ Y → ∀s1. X = ⋆s1 →
+                         ∃s2. Y = ⋆s2.
+#X #Y * -X -Y
+[ #s1 #s2 #s #H destruct /2 width=2 by ex_intro/
+| #i #s #H destruct
+| #l #s #H destruct
+| #I #V1 #V2 #T1 #T2 #_ #_ #s #H destruct
+]
+qed-.
+
+lemma teqx_inv_sort1: ∀Y,s1. ⋆s1 ≛ Y →
+                      ∃s2. Y = ⋆s2.
+/2 width=4 by teqx_inv_sort1_aux/ qed-.
+
+fact teqx_inv_lref1_aux: ∀X,Y. X ≛ Y → ∀i. X = #i → Y = #i.
+#X #Y * -X -Y //
+[ #s1 #s2 #j #H destruct
+| #I #V1 #V2 #T1 #T2 #_ #_ #j #H destruct
+]
+qed-.
+
+lemma teqx_inv_lref1: ∀Y,i. #i ≛ Y → Y = #i.
+/2 width=5 by teqx_inv_lref1_aux/ qed-.
+
+fact teqx_inv_gref1_aux: ∀X,Y. X ≛ Y → ∀l. X = §l → Y = §l.
+#X #Y * -X -Y //
+[ #s1 #s2 #k #H destruct
+| #I #V1 #V2 #T1 #T2 #_ #_ #k #H destruct
+]
+qed-.
+
+lemma teqx_inv_gref1: ∀Y,l. §l ≛ Y → Y = §l.
+/2 width=5 by teqx_inv_gref1_aux/ qed-.
+
+fact teqx_inv_pair1_aux: ∀X,Y. X ≛ Y → ∀I,V1,T1. X = ②{I}V1.T1 →
+                         ∃∃V2,T2. V1 ≛ V2 & T1 ≛ T2 & Y = ②{I}V2.T2.
+#X #Y * -X -Y
+[ #s1 #s2 #J #W1 #U1 #H destruct
+| #i #J #W1 #U1 #H destruct
+| #l #J #W1 #U1 #H destruct
+| #I #V1 #V2 #T1 #T2 #HV #HT #J #W1 #U1 #H destruct /2 width=5 by ex3_2_intro/
+]
+qed-.
+
+lemma teqx_inv_pair1: ∀I,V1,T1,Y. ②{I}V1.T1 ≛ Y →
+                      ∃∃V2,T2. V1 ≛ V2 & T1 ≛ T2 & Y = ②{I}V2.T2.
+/2 width=3 by teqx_inv_pair1_aux/ qed-.
+
+lemma teqx_inv_sort2: ∀X1,s2. X1 ≛ ⋆s2 →
+                      ∃s1. X1 = ⋆s1.
+#X1 #s2 #H
+elim (teqx_inv_sort1 X1 s2)
+/2 width=2 by teqx_sym, ex_intro/
+qed-.
+
+lemma teqx_inv_pair2: ∀I,X1,V2,T2. X1 ≛ ②{I}V2.T2 →
+                      ∃∃V1,T1. V1 ≛ V2 & T1 ≛ T2 & X1 = ②{I}V1.T1.
+#I #X1 #V2 #T2 #H
+elim (teqx_inv_pair1 I V2 T2 X1)
+[ #V1 #T1 #HV #HT #H destruct ]
+/3 width=5 by teqx_sym, ex3_2_intro/
+qed-.
+
+(* Advanced inversion lemmas ************************************************)
+
+lemma teqx_inv_pair: ∀I1,I2,V1,V2,T1,T2. ②{I1}V1.T1 ≛ ②{I2}V2.T2 →
+                     ∧∧ I1 = I2 & V1 ≛ V2 & T1 ≛ T2.
+#I1 #I2 #V1 #V2 #T1 #T2 #H elim (teqx_inv_pair1 … H) -H
+#V0 #T0 #HV #HT #H destruct /2 width=1 by and3_intro/
+qed-.
+
+lemma teqx_inv_pair_xy_x: ∀I,V,T. ②{I}V.T ≛ V → ⊥.
+#I #V elim V -V
+[ #J #T #H elim (teqx_inv_pair1 … H) -H #X #Y #_ #_ #H destruct
+| #J #X #Y #IHX #_ #T #H elim (teqx_inv_pair … H) -H #H #HY #_ destruct /2 width=2 by/
+]
+qed-.
+
+lemma teqx_inv_pair_xy_y: ∀I,T,V. ②{I}V.T ≛ T → ⊥.
+#I #T elim T -T
+[ #J #V #H elim (teqx_inv_pair1 … H) -H #X #Y #_ #_ #H destruct
+| #J #X #Y #_ #IHY #V #H elim (teqx_inv_pair … H) -H #H #_ #HY destruct /2 width=2 by/
+]
+qed-.
+
+(* Basic forward lemmas *****************************************************)
+
+lemma teqx_fwd_atom1: ∀I,Y. ⓪{I} ≛ Y → ∃J. Y = ⓪{J}.
+* #x #Y #H [ elim (teqx_inv_sort1 … H) -H ]
+/3 width=4 by teqx_inv_gref1, teqx_inv_lref1, ex_intro/
+qed-.
+
+(* Advanced properties ******************************************************)
+
+lemma teqx_dec: ∀T1,T2. Decidable (T1 ≛ T2).
+#T1 elim T1 -T1 [ * #s1 | #I1 #V1 #T1 #IHV #IHT ] * [1,3,5,7: * #s2 |*: #I2 #V2 #T2 ]
+[ /3 width=1 by teqx_sort, or_introl/
+|2,3,13:
+  @or_intror #H
+  elim (teqx_inv_sort1 … H) -H #x #H destruct
+|4,6,14:
+  @or_intror #H
+  lapply (teqx_inv_lref1 … H) -H #H destruct
+|5:
+  elim (eq_nat_dec s1 s2) #Hs12 destruct /2 width=1 by or_introl/
+  @or_intror #H
+  lapply (teqx_inv_lref1 … H) -H #H destruct /2 width=1 by/
+|7,8,15:
+  @or_intror #H
+  lapply (teqx_inv_gref1 … H) -H #H destruct
+|9:
+  elim (eq_nat_dec s1 s2) #Hs12 destruct /2 width=1 by or_introl/
+  @or_intror #H
+  lapply (teqx_inv_gref1 … H) -H #H destruct /2 width=1 by/
+|10,11,12:
+  @or_intror #H
+  elim (teqx_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
+|16:
+  elim (eq_item2_dec I1 I2) #HI12 destruct
+  [ elim (IHV V2) -IHV #HV12
+    elim (IHT T2) -IHT #HT12
+    [ /3 width=1 by teqx_pair, or_introl/ ]
+  ]
+  @or_intror #H
+  elim (teqx_inv_pair … H) -H /2 width=1 by/
+]
+qed-.
+
+(* Negated inversion lemmas *************************************************)
+
+lemma tneqx_inv_pair: ∀I1,I2,V1,V2,T1,T2.
+                      (②{I1}V1.T1 ≛ ②{I2}V2.T2 → ⊥) → 
+                      ∨∨ I1 = I2 → ⊥
+                      |  (V1 ≛ V2 → ⊥)
+                      |  (T1 ≛ T2 → ⊥).
+#I1 #I2 #V1 #V2 #T1 #T2 #H12
+elim (eq_item2_dec I1 I2) /3 width=1 by or3_intro0/ #H destruct
+elim (teqx_dec V1 V2) /3 width=1 by or3_intro1/
+elim (teqx_dec T1 T2) /4 width=1 by teqx_pair, or3_intro2/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/teqx_ext.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/teqx_ext.ma
new file mode 100644 (file)
index 0000000..bdb3971
--- /dev/null
@@ -0,0 +1,40 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/notation/relations/stareq_3.ma".
+include "static_2/syntax/cext2.ma".
+include "static_2/syntax/teqx.ma".
+
+(* EXTENDED SORT-IRRELEVANT EQUIVALENCE *************************************)
+
+definition teqx_ext: relation bind ≝
+                     ext2 teqx.
+
+definition cdeq: relation3 lenv term term ≝
+                 λL. teqx.
+
+definition cdeq_ext: relation3 lenv bind bind ≝
+                     cext2 cdeq.
+
+interpretation
+   "context-free sort-irrelevant equivalence (binder)"
+   'StarEq I1 I2 = (teqx_ext I1 I2).
+
+interpretation
+   "context-dependent sort-irrelevant equivalence (term)"
+   'StarEq L T1 T2 = (cdeq L T1 T2).
+
+interpretation
+   "context-dependent sort-irrelevant equivalence (binder)"
+   'StarEq L I1 I2 = (cdeq_ext L I1 I2).
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/teqx_teqx.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/teqx_teqx.ma
new file mode 100644 (file)
index 0000000..b7ab711
--- /dev/null
@@ -0,0 +1,48 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/teqx.ma".
+
+(* SORT-IRRELEVANT EQUIVALENCE ON TERMS *************************************)
+
+(* Main properties **********************************************************)
+
+theorem teqx_trans: Transitive … teqx.
+#T1 #T #H elim H -T1 -T
+[ #s1 #s #X #H
+  elim (teqx_inv_sort1 … H) -s /2 width=1 by teqx_sort/
+| #i1 #i #H <(teqx_inv_lref1 … H) -H //
+| #l1 #l #H <(teqx_inv_gref1 … H) -H //
+| #I #V1 #V #T1 #T #_ #_ #IHV #IHT #X #H
+  elim (teqx_inv_pair1 … H) -H /3 width=1 by teqx_pair/
+]
+qed-.
+
+theorem teqx_canc_sn: left_cancellable … teqx.
+/3 width=3 by teqx_trans, teqx_sym/ qed-.
+
+theorem teqx_canc_dx: right_cancellable … teqx.
+/3 width=3 by teqx_trans, teqx_sym/ qed-.
+
+theorem teqx_repl: ∀T1,T2. T1 ≛ T2 →
+                   ∀U1. T1 ≛ U1 → ∀U2. T2 ≛ U2 → U1 ≛ U2.
+/3 width=3 by teqx_canc_sn, teqx_trans/ qed-.
+
+(* Negated main properies ***************************************************)
+
+theorem teqx_tneqx_trans: ∀T1,T. T1 ≛ T → ∀T2. (T ≛ T2 → ⊥) → T1 ≛ T2 → ⊥.
+/3 width=3 by teqx_canc_sn/ qed-.
+
+theorem tneqx_teqx_canc_dx: ∀T1,T. (T1 ≛ T → ⊥) → ∀T2. T2 ≛ T → T1 ≛ T2 → ⊥.
+/3 width=3 by teqx_trans/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/tweq_tdeq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/tweq_tdeq.ma
deleted file mode 100644 (file)
index fb8d7e7..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||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 "static_2/syntax/tdeq.ma".
-include "static_2/syntax/tweq.ma".
-
-(* SORT-IRRELEVANT WHD EQUIVALENCE ON TERMS *********************************)
-
-(* Properties with sort-irrelevant equivalence for terms ********************)
-
-lemma tdeq_tweq: ∀T1,T2. T1 ≛ T2 → T1 ≅ T2.
-#T1 #T2 #H elim H -T1 -T2 [||| * [ #p ] * #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT ]
-[ /1 width=1 by tweq_sort/
-| /1 width=1 by tweq_lref/
-| /1 width=1 by tweq_gref/
-| cases p -p /2 width=1 by tweq_abbr_pos, tweq_abbr_neg/  
-| /1 width=1 by tweq_abst/
-| /2 width=1 by tweq_appl/
-| /2 width=1 by tweq_cast/
-]
-qed.
diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/tweq_teqx.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/tweq_teqx.ma
new file mode 100644 (file)
index 0000000..1d29c33
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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 "static_2/syntax/teqx.ma".
+include "static_2/syntax/tweq.ma".
+
+(* SORT-IRRELEVANT WHD EQUIVALENCE ON TERMS *********************************)
+
+(* Properties with sort-irrelevant equivalence for terms ********************)
+
+lemma teqx_tweq: ∀T1,T2. T1 ≛ T2 → T1 ≅ T2.
+#T1 #T2 #H elim H -T1 -T2 [||| * [ #p ] * #V1 #V2 #T1 #T2 #_ #_ #IHV #IHT ]
+[ /1 width=1 by tweq_sort/
+| /1 width=1 by tweq_lref/
+| /1 width=1 by tweq_gref/
+| cases p -p /2 width=1 by tweq_abbr_pos, tweq_abbr_neg/  
+| /1 width=1 by tweq_abst/
+| /2 width=1 by tweq_appl/
+| /2 width=1 by tweq_cast/
+]
+qed.
index 62716221841a87d0c7227907d1772cfa3538c831..ac892add2adbccce95f491fb7412b56a1d6c13d3 100644 (file)
@@ -27,12 +27,12 @@ table {
         ]
         [ { "atomic arity assignment" * } {
              [ [ "restricted refinement for lenvs" ] "lsuba" + "( ? ⊢ ? ⫃⁝ ? )" "lsuba_drops" + "lsuba_lsubr" + "lsuba_aaa" + "lsuba_lsuba" * ]
-             [ [ "for terms" ] "aaa" + "( ⦃?,?⦄ ⊢ ? ⁝ ? )" "aaa_drops" + "aaa_fqus" + "aaa_rdeq" + "aaa_fdeq" + "aaa_aaa" + "aaa_dec" * ]
+             [ [ "for terms" ] "aaa" + "( ⦃?,?⦄ ⊢ ? ⁝ ? )" "aaa_drops" + "aaa_fqus" + "aaa_reqx" + "aaa_feqx" + "aaa_aaa" + "aaa_dec" * ]
           }
         ]
         [ { "degree-based equivalence" * } {
-             [ [ "for closures on referred entries" ] "fdeq" + "( ⦃?,?,?⦄ ≛ ⦃?,?,?⦄ )" "fdeq_fqup" + "fdeq_fqus" + "fdeq_req" + "fdeq_fdeq" * ]
-             [ [ "for lenvs on referred entries" ] "rdeq" + "( ? ≛[?] ? )" "rdeq_length" + "rdeq_drops" + "rdeq_fqup" + "rdeq_fqus" + "rdeq_req" + "rdeq_rdeq" * ]
+             [ [ "for closures on referred entries" ] "feqx" + "( ⦃?,?,?⦄ ≛ ⦃?,?,?⦄ )" "feqx_fqup" + "feqx_fqus" + "feqx_req" + "feqx_feqx" * ]
+             [ [ "for lenvs on referred entries" ] "reqx" + "( ? ≛[?] ? )" "reqx_length" + "reqx_drops" + "reqx_fqup" + "reqx_fqus" + "reqx_req" + "reqx_reqx" * ]
           }
         ]
         [ { "syntactic equivalence" * } {
@@ -68,7 +68,7 @@ table {
    [ { "s-transition" * } {
         [ { "structural successor" * } {
              [ [ "for closures" ] "fquq" + "( ⦃?,?,?⦄ ⬂⸮[?] ⦃?,?,?⦄ )" + "( ⦃?,?,?⦄ ⬂⸮ ⦃?,?,?⦄ )" "fquq_length" + "fquq_weight" * ]
-             [ [ "proper for closures" ] "fqu" + "( ⦃?,?,?⦄ ⬂[?] ⦃?,?,?⦄ )" + "( ⦃?,?,?⦄ ⬂ ⦃?,?,?⦄ )" "fqu_length" + "fqu_weight" + "fqu_tdeq" * ]
+             [ [ "proper for closures" ] "fqu" + "( ⦃?,?,?⦄ ⬂[?] ⦃?,?,?⦄ )" + "( ⦃?,?,?⦄ ⬂ ⦃?,?,?⦄ )" "fqu_length" + "fqu_weight" + "fqu_teqx" * ]
           }
         ]
      }
@@ -86,7 +86,7 @@ table {
         [ { "generic and uniform relocation" * } {
              [ [ "for binders" ] "lifts_bind" + "( ⇧*[?] ? ≘ ? )" "lifts_weight_bind" + "lifts_lifts_bind" * ]
              [ [ "for term vectors" ] "lifts_vector" + "( ⇧*[?] ? ≘ ? )" "lifts_lifts_vector" * ]
-             [ [ "for terms" ] "lifts" + "( ⇧*[?] ? ≘ ? )" "lifts_simple" + "lifts_weight" + "lifts_tdeq" + "lifts_tweq" + "lifts_teqo" + "lifts_lifts" * ]
+             [ [ "for terms" ] "lifts" + "( ⇧*[?] ? ≘ ? )" "lifts_simple" + "lifts_weight" + "lifts_teqx" + "lifts_tweq" + "lifts_teqo" + "lifts_lifts" * ]
           }
         ]
         [ { "syntactic equivalence" * } {
@@ -117,16 +117,16 @@ table {
           }
         ]
         [ { "sort-irrelevant outer equivalence" * } {
-             [ [ "for terms" ] "teqo" + "( ? ⩳ ? )" "teqo_simple" + "teqo_tdeq" + "teqo_teqo" + "teqo_simple_vector" * ]
+             [ [ "for terms" ] "teqo" + "( ? ⩳ ? )" "teqo_simple" + "teqo_teqx" + "teqo_teqo" + "teqo_simple_vector" * ]
           }
         ]
         [ { "sort-irrelevant whd equivalence" * } {
-             [ [ "for terms" ] "tweq" + "( ? ≅ ? )" "tweq_simple" + "tweq_tdeq" + "tweq_tueq" * ]
+             [ [ "for terms" ] "tweq" + "( ? ≅ ? )" "tweq_simple" + "tweq_teqx" + "tweq_tueq" * ]
           }
         ]
         [ { "sort-irrelevant equivalence" * } {
-             [ [ "" ] "tdeq_ext" + "( ? ≛ ? )" + "( ? ⊢ ? ≛ ? )" * ]
-             [ [ "" ] "tdeq" + "( ? ≛ ? )" "tdeq_tdeq" * ]
+             [ [ "" ] "teqx_ext" + "( ? ≛ ? )" + "( ? ⊢ ? ≛ ? )" * ]
+             [ [ "" ] "teqx" + "( ? ≛ ? )" "teqx_teqx" * ]
           }
         ]
         [ { "closures" * } {