From: Ferruccio Guidi Date: Thu, 27 Feb 2020 21:45:50 +0000 (+0100) Subject: ground_2 released and permanently renamed as ground X-Git-Tag: make_still_working~186 X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=commitdiff_plain;h=68b4f2490c12139c03760b39895619e63b0f38c9 ground_2 released and permanently renamed as ground + web site update + minor corrections --- diff --git a/.gitignore b/.gitignore index c9ebefc8e..f8a1df2a7 100644 --- a/.gitignore +++ b/.gitignore @@ -59,8 +59,8 @@ helm/www/lambdadelta/xslt/static_2_src.xsl helm/www/lambdadelta/xslt/static_2_sum.xsl helm/www/lambdadelta/xslt/basic_2A_src.xsl helm/www/lambdadelta/xslt/basic_2A_sum.xsl -helm/www/lambdadelta/xslt/ground_2_src.xsl -helm/www/lambdadelta/xslt/ground_2_sum.xsl +helm/www/lambdadelta/xslt/ground_src.xsl +helm/www/lambdadelta/xslt/ground_sum.xsl helm/www/lambdadelta/xslt/basic_1_blk.xsl helm/www/lambdadelta/xslt/basic_1_src.xsl helm/www/lambdadelta/xslt/basic_1_sum.xsl diff --git a/helm/www/lambdadelta/download/lambdadelta_2A.tar.bz2 b/helm/www/lambdadelta/download/lambdadelta_2A.tar.bz2 index 456cecfc3..d97d6bd9a 100644 Binary files a/helm/www/lambdadelta/download/lambdadelta_2A.tar.bz2 and b/helm/www/lambdadelta/download/lambdadelta_2A.tar.bz2 differ diff --git a/helm/www/lambdadelta/download/lambdadelta_2B.tar.bz2 b/helm/www/lambdadelta/download/lambdadelta_2B.tar.bz2 index 237ba25be..25d8b9150 100644 Binary files a/helm/www/lambdadelta/download/lambdadelta_2B.tar.bz2 and b/helm/www/lambdadelta/download/lambdadelta_2B.tar.bz2 differ diff --git a/helm/www/lambdadelta/download/lambdadelta_ground.tar.bz2 b/helm/www/lambdadelta/download/lambdadelta_ground.tar.bz2 index 8cc8f8814..9aecee1bd 100644 Binary files a/helm/www/lambdadelta/download/lambdadelta_ground.tar.bz2 and b/helm/www/lambdadelta/download/lambdadelta_ground.tar.bz2 differ diff --git a/helm/www/lambdadelta/web/home/sitemap.tbl b/helm/www/lambdadelta/web/home/sitemap.tbl index e777c310a..3b69c3c40 100644 --- a/helm/www/lambdadelta/web/home/sitemap.tbl +++ b/helm/www/lambdadelta/web/home/sitemap.tbl @@ -16,7 +16,7 @@ table [ @@("html/changes" "specification log") * ] [ @@("html/specification#v2" "version 2") - "(" ^ @@("html/ground_2" "background") + "-" + + "(" ^ @@("html/ground" "background") + "-" + @@("html/static_2" "syntax") + "-" + @@("html/basic_2" "core") + "-" + @@("html/apps_2" "applications") ^ ")" diff --git a/helm/www/lambdadelta/web/home/specification.ldw.xml b/helm/www/lambdadelta/web/home/specification.ldw.xml index 682bbda3b..4ee9bb46b 100644 --- a/helm/www/lambdadelta/web/home/specification.ldw.xml +++ b/helm/www/lambdadelta/web/home/specification.ldw.xml @@ -24,7 +24,7 @@ subsequent improvements occur until the specification is completed or superseded, while major changes and additions are announced and reported on paper. - after its conclusion, the specification is modified just for maintenance. + after its conclusion, the specification is modified just for maintenance. @@ -41,7 +41,7 @@ nodes are counted according to the "intrinsic complexity measure" [F. Guidi: "Procedural Representation of CIC Proof Terms" - Journal of Automated Reasoning 44(1-2), Springer (February 2010), pp. 53-78]. + Journal of Automated Reasoning 44(1-2), Springer (February 2010), pp. 53-78]. @@ -81,15 +81,18 @@ Documentation (J2a). - repackaged without λδ-ground-2. + repackaged without λδ-ground_2. released [Git revision: 2019-11-19 20:45:15]. + + The scriprs depend on the package + lambdadelta_ground. + Informational pages on the parts of the specification: - Background, Syntax, Core, Applications. @@ -104,7 +107,7 @@ Documentation (R2c). - repackaged on the basis of λδ-ground-2. + repackaged on the basis of λδ-ground_2. repackaged (was lambdadelta_2A1). @@ -113,6 +116,10 @@ released [Git revision: 2014-10-28 17:46:26]. + + The scriprs depend on the package + lambdadelta_ground. + Informational pages on the parts of the specification: Core. @@ -121,7 +128,7 @@ - lambdadelta_ground for Matita 0.99.4 + lambdadelta_ground for Matita 0.99.2 (revised ). Source scripts. @@ -135,7 +142,6 @@ - λδ version 1 (superseded) @@ -157,7 +163,7 @@ 17 new lemmas and former lemma "eq_nat_dec" renamed as "nat_dec_neg". - + Informational pages on the parts of the specification: Background, @@ -168,7 +174,7 @@ lambdadelta_1A for Matita 0.5 (revised ). - Static HTML pages generated by the HELM rendering engine. + Static HTML pages generated by the HELM rendering engine. Confluence of reduction diff --git a/helm/www/lambdadelta/web/home/versions.tbl b/helm/www/lambdadelta/web/home/versions.tbl index 187dd1b99..87f20fdbd 100644 --- a/helm/www/lambdadelta/web/home/versions.tbl +++ b/helm/www/lambdadelta/web/home/versions.tbl @@ -25,10 +25,16 @@ table { ] [ "\"A\"" @("http://matita.cs.unibo.it/" "Matita 0.99.2") "April 2011" "June 2014" "October 2014" "August 2015" - @@("html/documentation#ldV2a" "V2a") + " " + @@("html/documentation#ldR2c" "R2c") * + @@("html/documentation#ldV2a" "V2a") + "\ " + @@("html/documentation#ldR2c" "R2c") * ] } ] + [ "Ground" "\"ground\"" + [ "" @("http://matita.cs.unibo.it/" "Matita 0.99.2") + "August 2011" "March 2016" "February 2020" "" + "" * + ] + ] [ "Abandoned" "" [ "" @("http://coq.inria.fr/" "Coq 7.3.1") "March 2008" "" "" "February 2011" @@ -40,7 +46,7 @@ table { [ @@("html/specification#v1" "Version 1") "\"basic_1\"" [ "\"A\"" @("http://coq.inria.fr/" "Coq 7.3.1") "May 2004" "December 2005" "November 2006" "May 2008" - @@("html/documentation#ldV1a" "V1a") + " " + @@("html/documentation#ldJ1a" "J1a") * + @@("html/documentation#ldV1a" "V1a") + "\ " + @@("html/documentation#ldJ1a" "J1a") * ] ] } diff --git a/matita/matita/contribs/lambdadelta/Makefile b/matita/matita/contribs/lambdadelta/Makefile index 41c7acdd1..8d6f2ccd2 100644 --- a/matita/matita/contribs/lambdadelta/Makefile +++ b/matita/matita/contribs/lambdadelta/Makefile @@ -5,7 +5,7 @@ TRIM := sed "s/ \\+$$//" XOA_DIR := ../../../components/binaries/xoa XOA := xoa.native -XOA_CONF := ground_2/xoa.conf.xml +XOA_CONF := ground/xoa.conf.xml XOA_OPTS := ../../matita.conf.xml $(XOA_CONF) DEP_INPUT := .depend @@ -26,7 +26,7 @@ TAGS := all names xoa orig elim deps top leaf stats tbls odeps trim clean \ pack-ground pack-2a pack-2b \ home up-home \ -PACKAGES := ground_2 basic_2A static_2 basic_2 apps_2 alpha_1 +PACKAGES := ground basic_2A static_2 basic_2 apps_2 alpha_1 LDWS := $(shell find -name "*.ldw.xml") TBLS := $(shell find -name "*.tbl") @@ -248,7 +248,7 @@ trim: $(TRIMS:%=%.trimmed) pack-ground: PKG = lambdadelta_ground -pack-ground: DIRS = ground_2 +pack-ground: DIRS = ground pack-ground: PMAS = $(shell find $(DIRS) -name *.ma) diff --git a/matita/matita/contribs/lambdadelta/alpha_1/syntax/item.ma b/matita/matita/contribs/lambdadelta/alpha_1/syntax/item.ma index 01a767223..7f7441d38 100644 --- a/matita/matita/contribs/lambdadelta/alpha_1/syntax/item.ma +++ b/matita/matita/contribs/lambdadelta/alpha_1/syntax/item.ma @@ -17,8 +17,8 @@ * Developed since : 2014 July 25 *) -include "ground_2/lib/bool.ma". -include "ground_2/lib/arith.ma". +include "ground/lib/bool.ma". +include "ground/lib/arith.ma". (* ITEMS ********************************************************************) diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma index 10d9636db..9a5db82f1 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/notation/functions/uparrowstar_2.ma". +include "ground/notation/functions/uparrowstar_2.ma". include "apps_2/notation/functional/uparrow_2.ma". include "static_2/relocation/lifts.ma". diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_basic.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_basic.ma index 414a3de11..d4c856b0a 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_basic.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/flifts_basic.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/nstream_basic.ma". +include "ground/relocation/nstream_basic.ma". include "apps_2/functional/flifts.ma". include "apps_2/notation/functional/uparrow_3.ma". diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vlift_exteq.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vlift_exteq.ma index 79a5bbf37..fcb491078 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vlift_exteq.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vlift_exteq.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/lib/functions.ma". -include "ground_2/lib/exteq.ma". +include "ground/lib/functions.ma". +include "ground/lib/exteq.ma". include "apps_2/functional/flifts_flifts_basic.ma". include "apps_2/functional/mf_vlift.ma". diff --git a/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vpush_exteq.ma b/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vpush_exteq.ma index a36a12292..e35fb1dfe 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vpush_exteq.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/functional/mf_vpush_exteq.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/lib/functions.ma". -include "ground_2/lib/exteq.ma". +include "ground/lib/functions.ma". +include "ground/lib/exteq.ma". include "apps_2/functional/flifts_flifts_basic.ma". include "apps_2/functional/mf_vpush.ma". diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/model.ma b/matita/matita/contribs/lambdadelta/apps_2/models/model.ma index 8901e2d71..a5a7ae0d6 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/model.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/model.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/notation/relations/ringeq_3.ma". +include "ground/notation/relations/ringeq_3.ma". include "apps_2/notation/models/at_3.ma". include "apps_2/notation/models/oplus_4.ma". include "apps_2/notation/models/wbrackets_4.ma". diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/model_vpush.ma b/matita/matita/contribs/lambdadelta/apps_2/models/model_vpush.ma index ccf633e6e..d335fce15 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/model_vpush.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/model_vpush.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/functions.ma". +include "ground/lib/functions.ma". include "apps_2/notation/models/upspoon_4.ma". include "apps_2/models/model.ma". diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/tm_vpush.ma b/matita/matita/contribs/lambdadelta/apps_2/models/tm_vpush.ma index e1f086da0..35dfe7820 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/tm_vpush.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/tm_vpush.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/exteq.ma". +include "ground/lib/exteq.ma". include "apps_2/models/model_vpush.ma". include "apps_2/models/tm.ma". diff --git a/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma b/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma index e25f47051..c6a8e2f79 100644 --- a/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma +++ b/matita/matita/contribs/lambdadelta/apps_2/models/veq_lifts.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/rtmap_basic.ma". +include "ground/relocation/rtmap_basic.ma". include "static_2/relocation/lifts.ma". include "apps_2/models/veq.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma index c49573cc3..377fecd05 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_2_3.ma". +include "ground/xoa/ex_2_3.ma". include "static_2/syntax/ac.ma". include "basic_2/notation/relations/exclaim_5.ma". include "basic_2/rt_computation/cpms.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma index 1f0dab73e..d8c2d4e26 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith_2b.ma". +include "ground/lib/arith_2b.ma". include "basic_2/rt_transition/lpr_lpr.ma". include "basic_2/rt_computation/cpms_lsubr.ma". include "basic_2/rt_computation/cpms_cpms.ma". 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 index a2987f8eb..7d7676f1a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx.ma @@ -12,9 +12,9 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_5_1.ma". -include "ground_2/xoa/ex_8_5.ma". -include "ground_2/xoa/ex_9_3.ma". +include "ground/xoa/ex_5_1.ma". +include "ground/xoa/ex_8_5.ma". +include "ground/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". 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 index 657fa03b3..fbf829c61 100644 --- 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 @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_1_props.ma". +include "ground/xoa/ex_4_1_props.ma". include "basic_2/dynamic/cnv_cpm_teqx.ma". (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma index 2aaa3bf2a..700073bb2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith_2b.ma". +include "ground/lib/arith_2b.ma". include "basic_2/rt_computation/cprs_cprs.ma". include "basic_2/dynamic/cnv_drops.ma". include "basic_2/dynamic/cnv_preserve_sub.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma index 25da632b6..bb5f3df89 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_5_3.ma". +include "ground/xoa/ex_5_3.ma". include "basic_2/rt_equivalence/cpcs_cpcs.ma". include "basic_2/dynamic/cnv_preserve_cpcs.ma". include "basic_2/dynamic/nta.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_preserve.ma b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_preserve.ma index 3534f0cba..72d758926 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_preserve.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_preserve.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_7_5.ma". +include "ground/xoa/ex_7_5.ma". include "basic_2/rt_equivalence/cpcs_cprs.ma". include "basic_2/dynamic/cnv_preserve.ma". include "basic_2/i_dynamic/ntas.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma index 6901f767b..265dd8baa 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/ltc.ma". +include "ground/lib/ltc.ma". include "basic_2/notation/relations/predstar_6.ma". include "basic_2/rt_transition/cpm.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma index 7c3011667..6b1f5ddc0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_5.ma". -include "ground_2/xoa/ex_5_7.ma". +include "ground/xoa/ex_3_5.ma". +include "ground/xoa/ex_5_7.ma". include "basic_2/rt_transition/cpm_lsubr.ma". include "basic_2/rt_computation/cpms_drops.ma". include "basic_2/rt_computation/cprs.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma index d9eedf3b8..6901f2c1d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_5.ma". +include "ground/xoa/ex_4_5.ma". include "basic_2/rt_computation/cpms_cpms.ma". include "basic_2/rt_computation/cprs_cpr.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_ctc.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_ctc.ma index dd5b0fc69..fa7049396 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_ctc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_ctc.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/ltc_ctc.ma". +include "ground/lib/ltc_ctc.ma". include "basic_2/rt_computation/cpms.ma". (* CONTEXT-SENSITIVE PARALLEL R-COMPUTATION FOR TERMS ***********************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpts.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpts.ma index 9818e6d84..27b465319 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpts.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpts.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/ltc.ma". +include "ground/lib/ltc.ma". include "basic_2/notation/relations/ptystar_6.ma". include "basic_2/rt_transition/cpt.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma index e872f21c7..843ec3636 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "basic_2/notation/relations/predtystar_5.ma". include "basic_2/rt_transition/cpx.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma index 0ee400264..87bf9f0b1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_5.ma". +include "ground/xoa/ex_4_5.ma". include "basic_2/rt_transition/cpx_lsubr.ma". include "basic_2/rt_computation/cpxs.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma index 8d940a856..f58c55387 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_2_3.ma". +include "ground/xoa/ex_2_3.ma". include "basic_2/notation/relations/predsubtystarproper_7.ma". include "basic_2/rt_transition/fpb.ma". include "basic_2/rt_computation/fpbs.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma index 64277054e..a945cf34c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "basic_2/notation/relations/predsubtystar_7.ma". include "basic_2/rt_transition/fpbq.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma index 2e477082b..6ae05e944 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_3.ma". +include "ground/xoa/ex_4_3.ma". include "basic_2/notation/relations/topredtysnstrong_4.ma". include "basic_2/rt_computation/rsx.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma index e22c7957a..8821057e7 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "basic_2/notation/relations/pconvstar_5.ma". include "basic_2/rt_conversion/cpc.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma index c8ce84946..36b69f4c5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma @@ -12,16 +12,16 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_3.ma". -include "ground_2/xoa/ex_4_2.ma". -include "ground_2/xoa/ex_4_4.ma". -include "ground_2/xoa/ex_5_2.ma". -include "ground_2/xoa/ex_6_9.ma". -include "ground_2/xoa/ex_7_10.ma". -include "ground_2/xoa/or_5.ma". -include "ground_2/steps/rtc_shift.ma". -include "ground_2/steps/rtc_plus.ma". -include "ground_2/steps/rtc_max.ma". +include "ground/xoa/ex_3_3.ma". +include "ground/xoa/ex_4_2.ma". +include "ground/xoa/ex_4_4.ma". +include "ground/xoa/ex_5_2.ma". +include "ground/xoa/ex_6_9.ma". +include "ground/xoa/ex_7_10.ma". +include "ground/xoa/or_5.ma". +include "ground/steps/rtc_shift.ma". +include "ground/steps/rtc_plus.ma". +include "ground/steps/rtc_max.ma". include "basic_2/notation/relations/predty_7.ma". include "static_2/syntax/sh.ma". include "static_2/syntax/lenv.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma index e1278eadf..9908844c8 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_5_5.ma". +include "ground/xoa/ex_5_5.ma". include "static_2/relocation/drops_drops.ma". include "static_2/s_computation/fqup_weight.ma". include "static_2/s_computation/fqup_drops.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma index c2b95d2ac..30b04dc62 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma @@ -12,13 +12,13 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_1.ma". -include "ground_2/xoa/ex_4_3.ma". -include "ground_2/xoa/ex_5_6.ma". -include "ground_2/xoa/ex_6_7.ma". -include "ground_2/steps/rtc_max_shift.ma". -include "ground_2/steps/rtc_isrt_plus.ma". -include "ground_2/steps/rtc_isrt_max_shift.ma". +include "ground/xoa/ex_4_1.ma". +include "ground/xoa/ex_4_3.ma". +include "ground/xoa/ex_5_6.ma". +include "ground/xoa/ex_6_7.ma". +include "ground/steps/rtc_max_shift.ma". +include "ground/steps/rtc_isrt_plus.ma". +include "ground/steps/rtc_isrt_max_shift.ma". include "basic_2/notation/relations/pred_6.ma". include "basic_2/rt_transition/cpg.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma index b99663e05..172421887 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma @@ -12,10 +12,10 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_6_6.ma". -include "ground_2/xoa/ex_7_7.ma". -include "ground_2/xoa/or_4.ma". -include "ground_2/insert_eq/insert_eq_0.ma". +include "ground/xoa/ex_6_6.ma". +include "ground/xoa/ex_7_7.ma". +include "ground/xoa/or_4.ma". +include "ground/insert_eq/insert_eq_0.ma". include "basic_2/rt_transition/cpm.ma". (* CONTEXT-SENSITIVE PARALLEL R-TRANSITION FOR TERMS ************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt.ma index 72fab31b0..b3fb715e5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt.ma @@ -12,10 +12,10 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_3.ma". -include "ground_2/steps/rtc_ist_shift.ma". -include "ground_2/steps/rtc_ist_plus.ma". -include "ground_2/steps/rtc_ist_max.ma". +include "ground/xoa/ex_4_3.ma". +include "ground/steps/rtc_ist_shift.ma". +include "ground/steps/rtc_ist_plus.ma". +include "ground/steps/rtc_ist_max.ma". include "basic_2/notation/relations/pty_6.ma". include "basic_2/rt_transition/cpg.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma index fab42da8d..2da498aa0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma @@ -12,13 +12,13 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_4.ma". -include "ground_2/xoa/ex_4_1.ma". -include "ground_2/xoa/ex_5_6.ma". -include "ground_2/xoa/ex_6_6.ma". -include "ground_2/xoa/ex_6_7.ma". -include "ground_2/xoa/ex_7_7.ma". -include "ground_2/xoa/or_4.ma". +include "ground/xoa/ex_3_4.ma". +include "ground/xoa/ex_4_1.ma". +include "ground/xoa/ex_5_6.ma". +include "ground/xoa/ex_6_6.ma". +include "ground/xoa/ex_6_7.ma". +include "ground/xoa/ex_7_7.ma". +include "ground/xoa/or_4.ma". include "basic_2/notation/relations/predty_5.ma". include "basic_2/rt_transition/cpg.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma index 2a97fa4b4..5b9970d0f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_5.ma". +include "ground/xoa/ex_4_5.ma". include "basic_2/rt_transition/cpg_drops.ma". include "basic_2/rt_transition/cpx.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml index 33d86efda..76f5373de 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml +++ b/matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml @@ -27,7 +27,7 @@
- λδ-2B is repackaged without λδ-ground-2. + λδ-2B is repackaged without λδ-ground_2. λδ-2B is released. diff --git a/matita/matita/contribs/lambdadelta/basic_2A/computation/cprs_cprs.ma b/matita/matita/contribs/lambdadelta/basic_2A/computation/cprs_cprs.ma index c62335d55..68601b554 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/computation/cprs_cprs.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/computation/cprs_cprs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_5.ma". +include "ground/xoa/ex_4_5.ma". include "basic_2A/reduction/lpr_lpr.ma". include "basic_2A/computation/cprs_lift.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/computation/lcosx.ma b/matita/matita/contribs/lambdadelta/basic_2A/computation/lcosx.ma index 465a42cd0..9493e7d6c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/computation/lcosx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/computation/lcosx.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/ynat/ynat_minus_sn.ma". +include "ground/ynat/ynat_minus_sn.ma". include "basic_2A/notation/relations/cosn_5.ma". include "basic_2A/computation/lsx.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/computation/lsubc.ma b/matita/matita/contribs/lambdadelta/basic_2A/computation/lsubc.ma index 07f244d3a..5b963c7d6 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/computation/lsubc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/computation/lsubc.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_6_3.ma". -include "ground_2/xoa/ex_7_4.ma". +include "ground/xoa/ex_6_3.ma". +include "ground/xoa/ex_7_4.ma". include "basic_2A/notation/relations/lrsubeqc_4.ma". include "basic_2A/static/lsubr.ma". include "basic_2A/static/aaa.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/computation/scpds.ma b/matita/matita/contribs/lambdadelta/basic_2A/computation/scpds.ma index 00c805ea2..57f9a2b2c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/computation/scpds.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/computation/scpds.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_2.ma". +include "ground/xoa/ex_4_2.ma". include "basic_2A/notation/relations/dpredstar_7.ma". include "basic_2A/static/da.ma". include "basic_2A/computation/cprs.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/dynamic/lsubsv.ma b/matita/matita/contribs/lambdadelta/basic_2A/dynamic/lsubsv.ma index 3519800c6..109af670a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/dynamic/lsubsv.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/dynamic/lsubsv.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_7_3.ma". -include "ground_2/xoa/ex_8_4.ma". +include "ground/xoa/ex_7_3.ma". +include "ground/xoa/ex_8_4.ma". include "basic_2A/notation/relations/lrsubeqv_5.ma". include "basic_2A/dynamic/shnv.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/aarity.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/aarity.ma index 9888366fe..47f086c88 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/aarity.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/aarity.ma @@ -16,7 +16,7 @@ * Initial invocation: - Patience on me to gain peace and perfection! - *) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "basic_2A/notation/constructors/item0_0.ma". include "basic_2A/notation/constructors/snitem2_2.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/item.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/item.ma index 97207c56c..e8c942e2c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/item.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/item.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/lib/bool.ma". -include "ground_2/lib/arith.ma". +include "ground/lib/bool.ma". +include "ground/lib/arith.ma". (* ITEMS ********************************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_append.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_append.ma index 40f5e530f..b741422cb 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_append.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_append.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/notation/functions/append_2.ma". +include "ground/notation/functions/append_2.ma". include "basic_2A/notation/functions/snbind2_3.ma". include "basic_2A/notation/functions/snabbr_2.ma". include "basic_2A/notation/functions/snabst_2.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_length.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_length.ma index 5346ca04b..4d1d96059 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_length.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lenv_length.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_2_3.ma". +include "ground/xoa/ex_2_3.ma". include "basic_2A/grammar/lenv.ma". (* LENGTH OF A LOCAL ENVIRONMENT ********************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq.ma index 081396d0a..00e562b15 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/ynat/ynat_lt.ma". +include "ground/ynat/ynat_lt.ma". include "basic_2A/notation/relations/midiso_4.ma". include "basic_2A/grammar/lenv_length.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq_lreq.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq_lreq.ma index 0076c81a8..06e726b69 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq_lreq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/lreq_lreq.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/ynat/ynat_plus.ma". +include "ground/ynat/ynat_plus.ma". include "basic_2A/grammar/lreq.ma". (* EQUIVALENCE FOR LOCAL ENVIRONMENTS ***************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/term_vector.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/term_vector.ma index 417414595..847827ebb 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/term_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/term_vector.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/list.ma". +include "ground/lib/list.ma". include "basic_2A/notation/functions/snapplvector_2.ma". include "basic_2A/grammar/term_simple.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/grammar/tsts.ma b/matita/matita/contribs/lambdadelta/basic_2A/grammar/tsts.ma index 3e9315de3..333f2744d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/grammar/tsts.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/grammar/tsts.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_2.ma". +include "ground/xoa/ex_1_2.ma". include "basic_2A/notation/relations/topiso_2.ma". include "basic_2A/grammar/term_simple.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops.ma index 2e096edaf..b1c9869a4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_3.ma". -include "ground_2/relocation/mr2_minus.ma". +include "ground/xoa/ex_4_3.ma". +include "ground/relocation/mr2_minus.ma". include "basic_2A/notation/relations/rdropstar_3.ma". include "basic_2A/notation/relations/rdropstar_4.ma". include "basic_2A/substitution/drop.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops_drops.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops_drops.ma index f984e37e9..97a93e085 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops_drops.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/drops_drops.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/mr2_append.ma". +include "ground/relocation/mr2_append.ma". include "basic_2A/multiple/drops_drop.ma". (* ITERATED LOCAL ENVIRONMENT SLICING ***************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees.ma index 5af757542..da18d01f4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees.ma @@ -12,9 +12,9 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_3.ma". -include "ground_2/xoa/ex_5_4.ma". -include "ground_2/ynat/ynat_plus.ma". +include "ground/xoa/ex_4_3.ma". +include "ground/xoa/ex_5_4.ma". +include "ground/ynat/ynat_plus.ma". include "basic_2A/notation/relations/freestar_4.ma". include "basic_2A/substitution/lift_neg.ma". include "basic_2A/substitution/drop.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees_lift.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees_lift.ma index 7bb3231ef..773aa668b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees_lift.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/frees_lift.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith_2a.ma". -include "ground_2/ynat/ynat_minus_sn.ma". +include "ground/lib/arith_2a.ma". +include "ground/ynat/ynat_minus_sn.ma". include "basic_2A/substitution/drop_drop.ma". include "basic_2A/multiple/frees.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts.ma index 7ae7099b6..a39b47cbd 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/relocation/mr2_at.ma". -include "ground_2/relocation/mr2_plus.ma". +include "ground/relocation/mr2_at.ma". +include "ground/relocation/mr2_plus.ma". include "basic_2A/notation/relations/rliftstar_3.ma". include "basic_2A/substitution/lift.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lift.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lift.ma index 0d5e38997..b089f3108 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lift.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lift.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/mr2_minus.ma". +include "ground/relocation/mr2_minus.ma". include "basic_2A/substitution/lift_lift.ma". include "basic_2A/multiple/lifts.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lifts.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lifts.ma index 40f853dd8..5696f2ba7 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lifts.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lifts_lifts.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/mr2_append.ma". +include "ground/relocation/mr2_append.ma". include "basic_2A/multiple/lifts_lift.ma". (* GENERIC RELOCATION *******************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lleq.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lleq.ma index 928058cfb..bd903174d 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/lleq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/lleq.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_4.ma". +include "ground/xoa/ex_4_4.ma". include "basic_2A/notation/relations/lazyeq_4.ma". include "basic_2A/multiple/llpx_sn.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llor.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llor.ma index 68a70f67f..d29d9b3f5 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llor.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llor.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/and_4.ma". +include "ground/xoa/and_4.ma". include "basic_2A/notation/relations/lazyor_5.ma". include "basic_2A/multiple/frees.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn.ma index fa2a4a3e5..358fff4e2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_5_5.ma". -include "ground_2/ynat/ynat_plus.ma". +include "ground/xoa/ex_5_5.ma". +include "ground/ynat/ynat_plus.ma". include "basic_2A/substitution/drop.ma". (* LAZY SN POINTWISE EXTENSION OF A CONTEXT-SENSITIVE REALTION FOR TERMS ****) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_alt_rec.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_alt_rec.ma index da81183f8..f0ec047b0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_alt_rec.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_alt_rec.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/and_4.ma". +include "ground/xoa/and_4.ma". include "basic_2A/substitution/lift_neg.ma". include "basic_2A/substitution/drop_drop.ma". include "basic_2A/multiple/llpx_sn.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_drop.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_drop.ma index 0a8816820..b209a153a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_drop.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_drop.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_2.ma". +include "ground/xoa/ex_4_2.ma". include "basic_2A/substitution/drop_drop.ma". include "basic_2A/multiple/llpx_sn_lreq.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lpx_sn.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lpx_sn.ma index 235b9c548..506827280 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lpx_sn.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lpx_sn.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith_2a.ma". +include "ground/lib/arith_2a.ma". include "basic_2A/substitution/lpx_sn_drop.ma". include "basic_2A/multiple/llpx_sn.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lreq.ma b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lreq.ma index c7eb4e1e9..567ff1e91 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lreq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/multiple/llpx_sn_lreq.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith_2a.ma". +include "ground/lib/arith_2a.ma". include "basic_2A/substitution/drop_lreq.ma". include "basic_2A/multiple/llpx_sn.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/reduction/cir.ma b/matita/matita/contribs/lambdadelta/basic_2A/reduction/cir.ma index 2e3faeee0..6a0ea39d0 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/reduction/cir.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/reduction/cir.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/and_4.ma". +include "ground/xoa/and_4.ma". include "basic_2A/notation/relations/prednotreducible_3.ma". include "basic_2A/reduction/crr.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpr.ma b/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpr.ma index 9b9186531..624f0725f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpr.ma @@ -12,12 +12,12 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_1.ma". -include "ground_2/xoa/ex_5_6.ma". -include "ground_2/xoa/ex_6_6.ma". -include "ground_2/xoa/ex_6_7.ma". -include "ground_2/xoa/ex_7_7.ma". -include "ground_2/xoa/or_4.ma". +include "ground/xoa/ex_4_1.ma". +include "ground/xoa/ex_5_6.ma". +include "ground/xoa/ex_6_6.ma". +include "ground/xoa/ex_6_7.ma". +include "ground/xoa/ex_7_7.ma". +include "ground/xoa/or_4.ma". include "basic_2A/notation/relations/pred_4.ma". include "basic_2A/static/lsubr.ma". include "basic_2A/unfold/lstas.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpx.ma b/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpx.ma index 446e92fee..ce4fe81bd 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/reduction/cpx.ma @@ -12,9 +12,9 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_4.ma". -include "ground_2/xoa/ex_4_5.ma". -include "ground_2/xoa/or_5.ma". +include "ground/xoa/ex_3_4.ma". +include "ground/xoa/ex_4_5.ma". +include "ground/xoa/or_5.ma". include "basic_2A/notation/relations/pred_6.ma". include "basic_2A/static/sd.ma". include "basic_2A/reduction/cpr.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/static/lsuba.ma b/matita/matita/contribs/lambdadelta/basic_2A/static/lsuba.ma index d95cf0424..dacbc25e8 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/static/lsuba.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/static/lsuba.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_5_3.ma". -include "ground_2/xoa/ex_6_4.ma". +include "ground/xoa/ex_5_3.ma". +include "ground/xoa/ex_6_4.ma". include "basic_2A/notation/relations/lrsubeqa_3.ma". include "basic_2A/static/lsubr.ma". include "basic_2A/static/aaa.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/static/lsubd.ma b/matita/matita/contribs/lambdadelta/basic_2A/static/lsubd.ma index 49fd93bb7..cc8fee84a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/static/lsubd.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/static/lsubd.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_5_3.ma". -include "ground_2/xoa/ex_6_4.ma". +include "ground/xoa/ex_5_3.ma". +include "ground/xoa/ex_6_4.ma". include "basic_2A/notation/relations/lrsubeqd_5.ma". include "basic_2A/static/lsubr.ma". include "basic_2A/static/da.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/static/lsubr_lsubr.ma b/matita/matita/contribs/lambdadelta/basic_2A/static/lsubr_lsubr.ma index ce482a913..24d3475ce 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/static/lsubr_lsubr.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/static/lsubr_lsubr.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_3.ma". +include "ground/xoa/ex_4_3.ma". include "basic_2A/static/lsubr.ma". (* RESTRICTED LOCAL ENVIRONMENT REFINEMENT **********************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/static/sh.ma b/matita/matita/contribs/lambdadelta/basic_2A/static/sh.ma index 8c4faff04..9f4b10fc8 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/static/sh.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/static/sh.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith_2a.ma". +include "ground/lib/arith_2a.ma". (* SORT HIERARCHY ***********************************************************) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop.ma b/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop.ma index 926d7f772..91cedefc7 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop.ma @@ -12,11 +12,11 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_2.ma". -include "ground_2/xoa/ex_1_3.ma". -include "ground_2/xoa/ex_3_3.ma". -include "ground_2/lib/star.ma". -include "ground_2/lib/lstar_2a.ma". +include "ground/xoa/ex_1_2.ma". +include "ground/xoa/ex_1_3.ma". +include "ground/xoa/ex_3_3.ma". +include "ground/lib/star.ma". +include "ground/lib/lstar_2a.ma". include "basic_2A/notation/relations/rdrop_5.ma". include "basic_2A/notation/relations/rdrop_4.ma". include "basic_2A/notation/relations/rdrop_3.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_append.ma b/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_append.ma index 8aa5a2527..16fb627ad 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_append.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_append.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith_2a.ma". +include "ground/lib/arith_2a.ma". include "basic_2A/grammar/lenv_append.ma". include "basic_2A/substitution/drop.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_lreq.ma b/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_lreq.ma index 243da5541..98695f044 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_lreq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/substitution/drop_lreq.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/ynat/ynat_minus_sn.ma". +include "ground/ynat/ynat_minus_sn.ma". include "basic_2A/grammar/lreq_lreq.ma". include "basic_2A/substitution/drop.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/substitution/lift.ma b/matita/matita/contribs/lambdadelta/basic_2A/substitution/lift.ma index a93de4161..160114608 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/substitution/lift.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/substitution/lift.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_2.ma". +include "ground/xoa/ex_3_2.ma". include "basic_2A/notation/relations/rlift_4.ma". include "basic_2A/grammar/term_weight.ma". include "basic_2A/grammar/term_simple.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn.ma b/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn.ma index b88b3f8ba..907e85a78 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_2.ma". +include "ground/xoa/ex_3_2.ma". include "basic_2A/grammar/lenv_length.ma". (* SN POINTWISE EXTENSION OF A CONTEXT-SENSITIVE REALTION FOR TERMS *********) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn_tc.ma b/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn_tc.ma index b64e68299..466ce07c4 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn_tc.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/substitution/lpx_sn_tc.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "basic_2A/substitution/lpx_sn.ma". (* SN POINTWISE EXTENSION OF A CONTEXT-SENSITIVE REALTION FOR TERMS *********) diff --git a/matita/matita/contribs/lambdadelta/basic_2A/unfold/lstas.ma b/matita/matita/contribs/lambdadelta/basic_2A/unfold/lstas.ma index 6bb2eb6ba..df678810c 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/unfold/lstas.ma +++ b/matita/matita/contribs/lambdadelta/basic_2A/unfold/lstas.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_3.ma". -include "ground_2/xoa/ex_4_4.ma". +include "ground/xoa/ex_4_3.ma". +include "ground/xoa/ex_4_4.ma". include "basic_2A/notation/relations/statictypestar_6.ma". include "basic_2A/grammar/genv.ma". include "basic_2A/substitution/drop.ma". diff --git a/matita/matita/contribs/lambdadelta/basic_2A/web/basic_2A.ldw.xml b/matita/matita/contribs/lambdadelta/basic_2A/web/basic_2A.ldw.xml index 819c9260b..e5896ae7b 100644 --- a/matita/matita/contribs/lambdadelta/basic_2A/web/basic_2A.ldw.xml +++ b/matita/matita/contribs/lambdadelta/basic_2A/web/basic_2A.ldw.xml @@ -15,7 +15,7 @@
- λδ-2A is repackaged on the basis of λδ-ground-2. + λδ-2A is repackaged without λδ-ground_2. λδ-2A is repackaged (was λδ-2A1). diff --git a/matita/matita/contribs/lambdadelta/bin/xhtbl/textLexer.mll b/matita/matita/contribs/lambdadelta/bin/xhtbl/textLexer.mll index 4b06e4c40..602bc6107 100644 --- a/matita/matita/contribs/lambdadelta/bin/xhtbl/textLexer.mll +++ b/matita/matita/contribs/lambdadelta/bin/xhtbl/textLexer.mll @@ -38,6 +38,7 @@ and str = parse | QT { "" } | "\\\\" { "\\" ^ str lexbuf } | "\\\"" { "\"" ^ str lexbuf } + | "\\ " { "\xC2\xA0" ^ str lexbuf } | _ as c { S.make 1 c ^ str lexbuf } and block = parse | "*)" { () } diff --git a/matita/matita/contribs/lambdadelta/compile_partial.sh b/matita/matita/contribs/lambdadelta/compile_partial.sh index df9e42328..f4eb8e760 100644 --- a/matita/matita/contribs/lambdadelta/compile_partial.sh +++ b/matita/matita/contribs/lambdadelta/compile_partial.sh @@ -1,4 +1,5 @@ -../../matitac.opt ground_2 +../../matitac.opt ground +../../matitac.opt basic_2A ../../matitac.opt static_2 ../../matitac.opt basic_2 ../../matitac.opt apps_2 diff --git a/matita/matita/contribs/lambdadelta/ground/etc/lib/arith.etc b/matita/matita/contribs/lambdadelta/ground/etc/lib/arith.etc new file mode 100644 index 000000000..11ef739da --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/lib/arith.etc @@ -0,0 +1,36 @@ + +lemma zero_or_gt: ∀n. n = 0 ∨ 0 < n. +#n elim (lt_or_eq_or_gt 0 n) /2/ +#H elim (lt_zero_false … H) +qed. + +lemma pippo: ∀x,y,z. x < z → y < z - x → x + y < z. +/3 width=2/ + +lemma arith_b1x: ∀e,x1,x2,y. y ≤ x2 → x2 ≤ x1 → + e + (x1 - y) - (x2 - y) = e + (x1 - x2). +#e #x1 #x2 #y #H1 #H2 +<(arith_b1 … H1) >le_plus_minus // /2 width=1/ +qed-. + +lemma arith1: ∀x,y,z,w. z < y → x + (y + w) - z = x + y - z + w. +#x #y #z #w #H minus_minus [|*: // ] "hvbox( l1 ⊕ break l2 )" + left associative with precedence 60 + for @{ 'OPlus ? ? $l1 $l2 }. +(* +(**) fix pair notation +notation > "hvbox( l1 ⊕{ break term 46 A, break term 46 A } break term 61 l2 )" + non associative with precedence 60 + for @{ 'OPlus $A $B $l1 $l2 }. +*) diff --git a/matita/matita/contribs/lambdadelta/ground/etc/lib/relations.etc b/matita/matita/contribs/lambdadelta/ground/etc/lib/relations.etc new file mode 100644 index 000000000..6166cf7ee --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/lib/relations.etc @@ -0,0 +1,21 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "basics/relations.ma". + +(* ADDITIONAL PROPERTIES OF RELATIONS ***************************************) + +lemma replace2: ∀A,B:Type[0]. ∀R:relation2 A B. ∀x1,y1,x2,y2. + R x1 x2 → y1 = x1 → y2 = x2 → R y1 y2. +// qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/lib/star.etc b/matita/matita/contribs/lambdadelta/ground/etc/lib/star.etc new file mode 100644 index 000000000..fb4d9c3e4 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/lib/star.etc @@ -0,0 +1,31 @@ +lemma TC_case_sn: ∀A,R. reflexive A R → + ∀a1,a2. TC … R a1 a2 → ∃∃a. R a1 a & TC … R a a2. +#A #R #HR #a1 #a2 #H @(TC_ind_dx … a1 H) -a1 +[ /3 width=3 by inj, ex2_intro/ +| #a1 #a0 #Ha10 #Ha02 #_ /2 width=3 by ex2_intro/ (**) (* auto fails withput #_ *) +] +qed-. + +lemma TC_case_dx: ∀A,R. reflexive A R → + ∀a1,a2. TC … R a1 a2 → ∃∃a. TC … R a1 a & R a a2. +#A #R #HR #a1 #a2 #H @(TC_ind … a2 H) -a2 +[ /3 width=3 by inj, ex2_intro/ +| #a0 #a2 #Ha10 #Ha02 #_ /2 width=3 by ex2_intro/ (**) (* auto fails withput #_ *) +] +qed-. + +definition s_r_trans: ∀A,B. relation2 (A→relation B) (relation A) ≝ λA,B,R1,R2. + ∀L2,T1,T2. R1 L2 T1 T2 → ∀L1. R2 L1 L2 → LTC … R1 L1 T1 T2. + +definition s_rs_trans: ∀A,B. relation2 (A→relation B) (relation A) ≝ λA,B,R1,R2. + ∀L2,T1,T2. LTC … R1 L2 T1 T2 → ∀L1. R2 L1 L2 → LTC … R1 L1 T1 T2. + +lemma s_r_trans_TC1: ∀A,B,R,S. s_r_trans A B R S → s_rs_trans A B R S. +#A #B #R #S #HRS #L2 #T1 #T2 #H elim H -T2 [ /3 width=3/ ] +#T #T2 #_ #HT2 #IHT1 #L1 #HL12 +lapply (HRS … HT2 … HL12) -HRS -HT2 /3 width=3/ +qed-. + +lemma s_r_trans_TC2: ∀A,B,R,S. s_rs_trans A B R S → s_r_trans A B R (TC … S). +#A #B #R #S #HRS #L2 #T1 #T2 #HT12 #L1 #H @(TC_ind_dx … L1 H) -L1 /2 width=3/ /3 width=3/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/complement_1.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/complement_1.etc new file mode 100644 index 000000000..a10c80f17 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/complement_1.etc @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ∁ term 70 t )" + non associative with precedence 70 + for @{ 'Complement $t }. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/norm_1.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/norm_1.etc new file mode 100644 index 000000000..d0f0719f1 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/norm_1.etc @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox ( ∥ term 19 C ∥ )" + with precedence 70 + for @{ 'Norm $C }. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/rtmap_le.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/rtmap_le.etc new file mode 100644 index 000000000..6fe63a523 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/rtmap_le.etc @@ -0,0 +1,59 @@ +(**************************************************************************) +(* ___ *) +(* ||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/relocation/rtmap_tl.ma". + +(* RELOCATION MAP ***********************************************************) + +inductive le (f1): predicate rtmap ≝ +| le_eq: ∀f2. f1 ≗ f2 → le f1 f2 +| le_tl: ∀f2,g2. le f1 f2 → ↓g2 = f2 → le f1 g2 +. + +interpretation "less or equal to (rtmap)" 'leq x y = (le x y). + +(* Basic properties *********************************************************) + +lemma le_refl: reflexive … le. +/2 width=1 by eq_refl, le_eq/ qed. + +lemma le_eq_repl_back_dx: ∀f1. eq_repl_back (λf2. f1 ≤ f2). +#f #f1 #Hf1 elim Hf1 -f1 +/4 width=3 by le_tl, le_eq, tl_eq_repl, eq_trans/ +qed-. + +lemma le_eq_repl_fwd_dx: ∀f1. eq_repl_fwd (λf2. f1 ≤ f2). +#f1 @eq_repl_sym /2 width=3 by le_eq_repl_back_dx/ +qed-. + +lemma le_eq_repl_back_sn: ∀f2. eq_repl_back (λf1. f1 ≤ f2). +#f #f1 #Hf1 elim Hf1 -f +/4 width=3 by le_tl, le_eq, tl_eq_repl, eq_canc_sn/ +qed-. + +lemma le_eq_repl_fwd_sn: ∀f2. eq_repl_fwd (λf1. f1 ≤ f2). +#f2 @eq_repl_sym /2 width=3 by le_eq_repl_back_sn/ +qed-. + +lemma le_tl_comp: ∀f1,f2. f1 ≤ f2 → ∀g1,g2. ↓f1 = g1 → ↓f2 = g2 → g1 ≤ g2. +#f1 #f2 #H elim H -f2 +/3 width=3 by le_tl, le_eq, tl_eq_repl/ +qed. + +(* Main properties **********************************************************) + +theorem le_trans: Transitive … le. +#f1 #f #H elim H -f +/4 width=5 by le_tl_comp, le_eq_repl_fwd_sn, le_tl/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace.etc new file mode 100644 index 000000000..699942e05 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace.etc @@ -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 "ground_2/notation/functions/norm_1.ma". +include "ground_2/lib/bool.ma". +include "ground_2/lib/list.ma". + +(* RELOCATION TRACE *********************************************************) + +definition trace: Type[0] ≝ list bool. + +let rec colength (cs:trace) on cs ≝ match cs with +[ nil ⇒ 0 +| cons b tl ⇒ match b with [ true ⇒ ⫯(colength tl) | false ⇒ colength tl ] +]. + +interpretation "colength (trace)" + 'Norm cs = (colength cs). + +(* basic properties *********************************************************) + +lemma colength_empty: ∥◊∥ = 0. +// qed. + +lemma colength_true: ∀cs. ∥Ⓣ@cs∥ = ⫯∥cs∥. +// qed. + +lemma colength_false: ∀cs. ∥Ⓕ@cs∥ = ∥cs∥. +// qed. + +lemma colength_cons: ∀cs1,cs2. ∥cs1∥ = ∥cs2∥ → + ∀b. ∥b@cs1∥ = ∥b@cs2∥. +#cs1 #cs2 #H * /2 width=1 by/ +qed. + +lemma colength_le: ∀cs. ∥cs∥ ≤ |cs|. +#cs elim cs -cs // +* /2 width=1 by le_S_S, le_S/ +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_after.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_after.etc new file mode 100644 index 000000000..78dd6fb9a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_after.etc @@ -0,0 +1,271 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/rafter_3.ma". +include "ground_2/relocation/trace_at.ma". + +(* RELOCATION TRACE *********************************************************) + +inductive after: relation3 trace trace trace ≝ + | after_empty: after (◊) (◊) (◊) + | after_true : ∀cs1,cs2,cs. after cs1 cs2 cs → + ∀b. after (Ⓣ @ cs1) (b @ cs2) (b @ cs) + | after_false: ∀cs1,cs2,cs. after cs1 cs2 cs → + after (Ⓕ @ cs1) cs2 (Ⓕ @ cs). + +interpretation "composition (trace)" + 'RAfter cs1 cs2 cs = (after cs1 cs2 cs). + +(* Basic properties *********************************************************) + +lemma after_length: ∀cs1,cs2. ∥cs1∥ = |cs2| → + ∃∃cs. cs1 ⊚ cs2 ≡ cs & |cs| = |cs1| & ∥cs∥ = ∥cs2∥. +#cs1 elim cs1 -cs1 +[ #cs2 #H >(length_inv_zero_sn … H) -cs2 /2 width=4 by after_empty, ex3_intro/ +| * #cs1 #IH #cs2 #Hcs + [ elim (length_inv_succ_sn … Hcs) -Hcs + #tl #b #Hcs #H destruct + ] + elim (IH … Hcs) -IH -Hcs + #cs #Hcs #H1 #H2 [ @(ex3_intro … (b@cs)) | @(ex3_intro … (Ⓕ@cs)) ] /2 width=1 by after_true, after_false, colength_cons/ +] +qed-. + +(* Basic inversion lemmas ***************************************************) + +fact after_inv_empty1_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → cs1 = ◊ → + cs2 = ◊ ∧ cs = ◊. +#cs1 #cs2 #cs * -cs1 -cs2 -cs +[ /2 width=1 by conj/ +| #cs1 #cs2 #cs #_ #b #H destruct +| #cs1 #cs2 #cs #_ #H destruct +] +qed-. + +lemma after_inv_empty1: ∀cs2,cs. ◊ ⊚ cs2 ≡ cs → cs2 = ◊ ∧ cs = ◊. +/2 width=3 by after_inv_empty1_aux/ qed-. + +fact after_inv_true1_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → ∀tl1. cs1 = Ⓣ @ tl1 → + ∃∃tl2,tl,b. cs2 = b @ tl2 & cs = b @ tl & tl1 ⊚ tl2 ≡ tl. +#cs1 #cs2 #cs * -cs1 -cs2 -cs +[ #tl1 #H destruct +| #cs1 #cs2 #cs #H12 #b #tl1 #H destruct + /2 width=6 by ex3_3_intro/ +| #cs1 #cs2 #cs #_ #tl1 #H destruct +] +qed-. + +lemma after_inv_true1: ∀tl1,cs2,cs. (Ⓣ @ tl1) ⊚ cs2 ≡ cs → + ∃∃tl2,tl,b. cs2 = b @ tl2 & cs = b @ tl & tl1 ⊚ tl2 ≡ tl. +/2 width=3 by after_inv_true1_aux/ qed-. + +fact after_inv_false1_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → ∀tl1. cs1 = Ⓕ @ tl1 → + ∃∃tl. cs = Ⓕ @ tl & tl1 ⊚ cs2 ≡ tl. +#cs1 #cs2 #cs * -cs1 -cs2 -cs +[ #tl1 #H destruct +| #cs1 #cs2 #cs #_ #b #tl1 #H destruct +| #cs1 #cs2 #cs #H12 #tl1 #H destruct + /2 width=3 by ex2_intro/ +] +qed-. + +lemma after_inv_false1: ∀tl1,cs2,cs. (Ⓕ @ tl1) ⊚ cs2 ≡ cs → + ∃∃tl. cs = Ⓕ @ tl & tl1 ⊚ cs2 ≡ tl. +/2 width=3 by after_inv_false1_aux/ qed-. + +fact after_inv_empty3_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → cs = ◊ → + cs1 = ◊ ∧ cs2 = ◊. +#cs1 #cs2 #cs * -cs1 -cs2 -cs +[ /2 width=1 by conj/ +| #cs1 #cs2 #cs #_ #b #H destruct +| #cs1 #cs2 #cs #_ #H destruct +] +qed-. + +lemma after_inv_empty3: ∀cs1,cs2. cs1 ⊚ cs2 ≡ ◊ → cs1 = ◊ ∧ cs2 = ◊. +/2 width=3 by after_inv_empty3_aux/ qed-. + +fact after_inv_inh3_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → ∀tl,b. cs = b @ tl → + (∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = b @ tl2 & tl1 ⊚ tl2 ≡ tl) ∨ + ∃∃tl1. cs1 = Ⓕ @ tl1 & b = Ⓕ & tl1 ⊚ cs2 ≡ tl. +#cs1 #cs2 #cs * -cs1 -cs2 -cs +[ #tl #b #H destruct +| #cs1 #cs2 #cs #H12 #b0 #tl #b #H destruct + /3 width=5 by ex3_2_intro, or_introl/ +| #cs1 #cs2 #cs #H12 #tl #b #H destruct + /3 width=3 by ex3_intro, or_intror/ +] +qed-. + +lemma after_inv_inh3: ∀cs1,cs2,tl,b. cs1 ⊚ cs2 ≡ b @ tl → + (∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = b @ tl2 & tl1 ⊚ tl2 ≡ tl) ∨ + ∃∃tl1. cs1 = Ⓕ @ tl1 & b = Ⓕ & tl1 ⊚ cs2 ≡ tl. +/2 width=3 by after_inv_inh3_aux/ qed-. + +lemma after_inv_true3: ∀cs1,cs2,tl. cs1 ⊚ cs2 ≡ Ⓣ @ tl → + ∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = Ⓣ @ tl2 & tl1 ⊚ tl2 ≡ tl. +#cs1 #cs2 #tl #H elim (after_inv_inh3 … H) -H // * +#tl1 #_ #H destruct +qed-. + +lemma after_inv_false3: ∀cs1,cs2,tl. cs1 ⊚ cs2 ≡ Ⓕ @ tl → + (∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = Ⓕ @ tl2 & tl1 ⊚ tl2 ≡ tl) ∨ + ∃∃tl1. cs1 = Ⓕ @ tl1 & tl1 ⊚ cs2 ≡ tl. +#cs1 #cs2 #tl #H elim (after_inv_inh3 … H) -H /2 width=1 by or_introl/ * /3 width=3 by ex2_intro, or_intror/ +qed-. + +lemma after_inv_length: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → + ∧∧ ∥cs1∥ = |cs2| & |cs| = |cs1| & ∥cs∥ = ∥cs2∥. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs /2 width=1 by and3_intro/ +#cs1 #cs2 #cs #_ [ * ] * /2 width=1 by and3_intro/ +qed-. + +(* Basic forward lemmas *****************************************************) + +lemma after_at_fwd: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → ∀i1,i. @⦃i1, cs⦄ ≡ i → + ∃∃i2. @⦃i1, cs1⦄ ≡ i2 & @⦃i2, cs2⦄ ≡ i. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs +[ #i1 #i #H elim (at_inv_empty … H) -H + #H1 #H2 destruct /2 width=3 by at_empty, ex2_intro/ +| #cs1 #cs2 #cs #_ * #IH #i1 #i #H + [ elim (at_inv_true … H) -H * + [ -IH #H1 #H2 destruct /2 width=3 by at_zero, ex2_intro/ + | #j1 #j #H1 #H2 #Hj1 destruct + elim (IH … Hj1) -IH -Hj1 /3 width=3 by at_succ, ex2_intro/ + ] + | elim (at_inv_false … H) -H + #j #H #Hj destruct + elim (IH … Hj) -IH -Hj /3 width=3 by at_succ, at_false, ex2_intro/ + ] +| #cs1 #cs2 #cs #_ #IH #i1 #i #H elim (at_inv_false … H) -H + #j #H #Hj destruct + elim (IH … Hj) -IH -Hj /3 width=3 by at_false, ex2_intro/ +] +qed-. + +lemma after_at1_fwd: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → ∀i1,i2. @⦃i1, cs1⦄ ≡ i2 → + ∃∃i. @⦃i2, cs2⦄ ≡ i & @⦃i1, cs⦄ ≡ i. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs +[ #i1 #i2 #H elim (at_inv_empty … H) -H + #H1 #H2 destruct /2 width=3 by at_empty, ex2_intro/ +| #cs1 #cs2 #cs #_ * #IH #i1 #i2 #H + [ elim (at_inv_true … H) -H * + [ -IH #H1 #H2 destruct /2 width=3 by at_zero, ex2_intro/ + | #j1 #j2 #H1 #H2 #Hj12 destruct + elim (IH … Hj12) -IH -Hj12 /3 width=3 by at_succ, ex2_intro/ + ] + | elim (at_inv_false … H) -H + #j2 #H #Hj2 destruct + elim (IH … Hj2) -IH -Hj2 /3 width=3 by at_succ, at_false, ex2_intro/ + ] +| #cs1 #cs2 #cs #_ #IH #i1 #i2 #H elim (IH … H) -IH -H + /3 width=3 by at_false, ex2_intro/ +] +qed-. + +lemma after_fwd_at: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → + ∀i1,i2,i. @⦃i1, cs1⦄ ≡ i2 → @⦃i2, cs2⦄ ≡ i → @⦃i1, cs⦄ ≡ i. +#cs1 #cs2 #cs #Hcs #i1 #i2 #i #Hi1 #Hi2 elim (after_at1_fwd … Hcs … Hi1) -cs1 +#j #H #Hj >(at_mono … Hi2 … H) -i2 // +qed-. + +lemma after_fwd_at1: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → + ∀i1,i2,i. @⦃i1, cs⦄ ≡ i → @⦃i2, cs2⦄ ≡ i → @⦃i1, cs1⦄ ≡ i2. +#cs1 #cs2 #cs #Hcs #i1 #i2 #i #Hi1 #Hi2 elim (after_at_fwd … Hcs … Hi1) -cs +#j1 #Hij1 #H >(at_inj … Hi2 … H) -i // +qed-. + +lemma after_fwd_at2: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → + ∀i1,i2,i. @⦃i1, cs⦄ ≡ i → @⦃i1, cs1⦄ ≡ i2 → @⦃i2, cs2⦄ ≡ i. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs +[ #i1 #i2 #i #Hi #Hi1 elim (at_inv_empty … Hi1) -Hi1 // +| #cs1 #cs2 #cs #_ * #IH #i1 #i2 #i #Hi #Hi1 + [ elim (at_inv_true … Hi1) -Hi1 * + [ -IH #H1 #H2 destruct >(at_inv_true_zero_sn … Hi) -i // + | #j1 #j2 #H1 #H2 #Hj12 destruct elim (at_inv_true_succ_sn … Hi) -Hi + #j #H #Hj1 destruct /3 width=3 by at_succ/ + ] + | elim (at_inv_false … Hi1) -Hi1 + #j2 #H #Hj2 destruct elim (at_inv_false … Hi) -Hi + #j #H #Hj destruct /3 width=3 by at_succ/ + ] +| #cs1 #cs2 #cs #_ #IH #i1 #i2 #i #Hi #Hi2 elim (at_inv_false … Hi) -Hi + #j #H #Hj destruct /3 width=3 by at_false/ +] +qed-. + +(* Main properties **********************************************************) + +theorem after_trans1: ∀cs1,cs2,cs0. cs1 ⊚ cs2 ≡ cs0 → + ∀cs3, cs4. cs0 ⊚ cs3 ≡ cs4 → + ∃∃cs. cs2 ⊚ cs3 ≡ cs & cs1 ⊚ cs ≡ cs4. +#cs1 #cs2 #cs0 #H elim H -cs1 -cs2 -cs0 +[ #cs3 #cs4 #H elim (after_inv_empty1 … H) -H + #H1 #H2 destruct /2 width=3 by ex2_intro, after_empty/ +| #cs1 #cs2 #cs0 #_ * #IH #cs3 #cs4 #H + [ elim (after_inv_true1 … H) -H + #tl3 #tl4 #b #H1 #H2 #Htl destruct + elim (IH … Htl) -cs0 + /3 width=3 by ex2_intro, after_true/ + | elim (after_inv_false1 … H) -H + #tl4 #H #Htl destruct + elim (IH … Htl) -cs0 + /3 width=3 by ex2_intro, after_true, after_false/ + ] +| #cs1 #cs2 #cs0 #_ #IH #cs3 #cs4 #H + elim (after_inv_false1 … H) -H + #tl4 #H #Htl destruct + elim (IH … Htl) -cs0 + /3 width=3 by ex2_intro, after_false/ +] +qed-. + +theorem after_trans2: ∀cs1,cs0,cs4. cs1 ⊚ cs0 ≡ cs4 → + ∀cs2, cs3. cs2 ⊚ cs3 ≡ cs0 → + ∃∃cs. cs1 ⊚ cs2 ≡ cs & cs ⊚ cs3 ≡ cs4. +#cs1 #cs0 #cs4 #H elim H -cs1 -cs0 -cs4 +[ #cs2 #cs3 #H elim (after_inv_empty3 … H) -H + #H1 #H2 destruct /2 width=3 by ex2_intro, after_empty/ +| #cs1 #cs0 #cs4 #_ #b #IH #cs2 #cs3 #H elim (after_inv_inh3 … H) -H * + [ #tl2 #tl3 #H1 #H2 #Htl destruct + elim (IH … Htl) -cs0 + /3 width=3 by ex2_intro, after_true/ + | #tl2 #H1 #H2 #Htl destruct + elim (IH … Htl) -cs0 + /3 width=3 by ex2_intro, after_true, after_false/ + ] +| #cs1 #cs0 #cs4 #_ #IH #cs2 #cs3 #H elim (IH … H) -cs0 + /3 width=3 by ex2_intro, after_false/ +] +qed-. + +theorem after_mono: ∀cs1,cs2,x. cs1 ⊚ cs2 ≡ x → ∀y. cs1 ⊚ cs2 ≡ y → x = y. +#cs1 #cs2 #x #H elim H -cs1 -cs2 -x +[ #y #H elim (after_inv_empty1 … H) -H // +| #cs1 #cs #x #_ #b #IH #y #H elim (after_inv_true1 … H) -H + #tl #tly #b0 #H1 #H2 #Htl destruct >(IH … Htl) -tl -cs1 -x // +| #cs1 #cs2 #x #_ #IH #y #H elim (after_inv_false1 … H) -H + #tly #H #Htl destruct >(IH … Htl) -cs1 -cs2 -x // +] +qed-. + +theorem after_inj: ∀cs1,x,cs. cs1 ⊚ x ≡ cs → ∀y. cs1 ⊚ y ≡ cs → x = y. +#cs1 #x #cs #H elim H -cs1 -x -cs +[ #y #H elim (after_inv_empty1 … H) -H // +| #cs1 #x #cs #_ #b #IH #y #H elim (after_inv_true1 … H) -H + #tly #tl #b0 #H1 #H2 #Htl destruct >(IH … Htl) -tl -cs1 -x // +| #cs1 #x #cs #_ #IH #y #H elim (after_inv_false1 … H) -H + #tl #H #Htl destruct >(IH … Htl) -tl -cs1 -x // +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_at.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_at.etc new file mode 100644 index 000000000..02d8ac1eb --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_at.etc @@ -0,0 +1,264 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/rat_3.ma". +include "ground_2/relocation/trace.ma". + +(* RELOCATION TRACE *********************************************************) + +inductive at: trace → relation nat ≝ + | at_empty: at (◊) 0 0 + | at_zero : ∀cs. at (Ⓣ @ cs) 0 0 + | at_succ : ∀cs,i1,i2. at cs i1 i2 → at (Ⓣ @ cs) (⫯i1) (⫯i2) + | at_false: ∀cs,i1,i2. at cs i1 i2 → at (Ⓕ @ cs) i1 (⫯i2). + +interpretation "relocation (trace)" + 'RAt i1 cs i2 = (at cs i1 i2). + +(* Basic inversion lemmas ***************************************************) + +fact at_inv_empty_aux: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → cs = ◊ → i1 = 0 ∧ i2 = 0. +#cs #i1 #i2 * -cs -i1 -i2 /2 width=1 by conj/ +#cs #i1 #i2 #_ #H destruct +qed-. + +lemma at_inv_empty: ∀i1,i2. @⦃i1, ◊⦄ ≡ i2 → i1 = 0 ∧ i2 = 0. +/2 width=5 by at_inv_empty_aux/ qed-. + +lemma at_inv_empty_zero_sn: ∀i. @⦃0, ◊⦄ ≡ i → i = 0. +#i #H elim (at_inv_empty … H) -H // +qed-. + +lemma at_inv_empty_zero_dx: ∀i. @⦃i, ◊⦄ ≡ 0 → i = 0. +#i #H elim (at_inv_empty … H) -H // +qed-. + +lemma at_inv_empty_succ_sn: ∀i1,i2. @⦃⫯i1, ◊⦄ ≡ i2 → ⊥. +#i1 #i2 #H elim (at_inv_empty … H) -H #H1 #H2 destruct +qed-. + +lemma at_inv_empty_succ_dx: ∀i1,i2. @⦃i1, ◊⦄ ≡ ⫯i2 → ⊥. +#i1 #i2 #H elim (at_inv_empty … H) -H #H1 #H2 destruct +qed-. + +fact at_inv_true_aux: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∀tl. cs = Ⓣ @ tl → + (i1 = 0 ∧ i2 = 0) ∨ + ∃∃j1,j2. i1 = ⫯j1 & i2 = ⫯j2 & @⦃j1, tl⦄ ≡ j2. +#cs #i1 #i2 * -cs -i1 -i2 +[2,3,4: #cs [2,3: #i1 #i2 #Hij ] ] #tl #H destruct +/3 width=5 by ex3_2_intro, or_introl, or_intror, conj/ +qed-. + +lemma at_inv_true: ∀cs,i1,i2. @⦃i1, Ⓣ @ cs⦄ ≡ i2 → + (i1 = 0 ∧ i2 = 0) ∨ + ∃∃j1,j2. i1 = ⫯j1 & i2 = ⫯j2 & @⦃j1, cs⦄ ≡ j2. +/2 width=3 by at_inv_true_aux/ qed-. + +lemma at_inv_true_zero_sn: ∀cs,i. @⦃0, Ⓣ @ cs⦄ ≡ i → i = 0. +#cs #i #H elim (at_inv_true … H) -H * // +#j1 #j2 #H destruct +qed-. + +lemma at_inv_true_zero_dx: ∀cs,i. @⦃i, Ⓣ @ cs⦄ ≡ 0 → i = 0. +#cs #i #H elim (at_inv_true … H) -H * // +#j1 #j2 #_ #H destruct +qed-. + +lemma at_inv_true_succ_sn: ∀cs,i1,i2. @⦃⫯i1, Ⓣ @ cs⦄ ≡ i2 → + ∃∃j2. i2 = ⫯j2 & @⦃i1, cs⦄ ≡ j2. +#cs #i1 #i2 #H elim (at_inv_true … H) -H * +[ #H destruct +| #j1 #j2 #H1 #H2 destruct /2 width=3 by ex2_intro/ +] +qed-. + +lemma at_inv_true_succ_dx: ∀cs,i1,i2. @⦃i1, Ⓣ @ cs⦄ ≡ ⫯i2 → + ∃∃j1. i1 = ⫯j1 & @⦃j1, cs⦄ ≡ i2. +#cs #i1 #i2 #H elim (at_inv_true … H) -H * +[ #_ #H destruct +| #j1 #j2 #H1 #H2 destruct /2 width=3 by ex2_intro/ +] +qed-. + +lemma at_inv_true_succ: ∀cs,i1,i2. @⦃⫯i1, Ⓣ @ cs⦄ ≡ ⫯i2 → + @⦃i1, cs⦄ ≡ i2. +#cs #i1 #i2 #H elim (at_inv_true … H) -H * +[ #H destruct +| #j1 #j2 #H1 #H2 destruct // +] +qed-. + +lemma at_inv_true_O_S: ∀cs,i. @⦃0, Ⓣ @ cs⦄ ≡ ⫯i → ⊥. +#cs #i #H elim (at_inv_true … H) -H * +[ #_ #H destruct +| #j1 #j2 #H destruct +] +qed-. + +lemma at_inv_true_S_O: ∀cs,i. @⦃⫯i, Ⓣ @ cs⦄ ≡ 0 → ⊥. +#cs #i #H elim (at_inv_true … H) -H * +[ #H destruct +| #j1 #j2 #_ #H destruct +] +qed-. + +fact at_inv_false_aux: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∀tl. cs = Ⓕ @ tl → + ∃∃j2. i2 = ⫯j2 & @⦃i1, tl⦄ ≡ j2. +#cs #i1 #i2 * -cs -i1 -i2 +[2,3,4: #cs [2,3: #i1 #i2 #Hij ] ] #tl #H destruct +/2 width=3 by ex2_intro/ +qed-. + +lemma at_inv_false: ∀cs,i1,i2. @⦃i1, Ⓕ @ cs⦄ ≡ i2 → + ∃∃j2. i2 = ⫯j2 & @⦃i1, cs⦄ ≡ j2. +/2 width=3 by at_inv_false_aux/ qed-. + +lemma at_inv_false_S: ∀cs,i1,i2. @⦃i1, Ⓕ @ cs⦄ ≡ ⫯i2 → @⦃i1, cs⦄ ≡ i2. +#cs #i1 #i2 #H elim (at_inv_false … H) -H +#j2 #H destruct // +qed-. + +lemma at_inv_false_O: ∀cs,i. @⦃i, Ⓕ @ cs⦄ ≡ 0 → ⊥. +#cs #i #H elim (at_inv_false … H) -H +#j2 #H destruct +qed-. + +lemma at_inv_le: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → i1 ≤ ∥cs∥ ∧ i2 ≤ |cs|. +#cs #i1 #i2 #H elim H -cs -i1 -i2 /2 width=1 by conj/ +#cs #i1 #i2 #_ * /3 width=1 by le_S_S, conj/ +qed-. + +lemma at_inv_gt1: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∥cs∥ < i1 → ⊥. +#cs #i1 #i2 #H elim (at_inv_le … H) -H /2 width=4 by lt_le_false/ +qed-. + +lemma at_inv_gt2: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → |cs| < i2 → ⊥. +#cs #i1 #i2 #H elim (at_inv_le … H) -H /2 width=4 by lt_le_false/ +qed-. + +(* Basic properties *********************************************************) + +(* Note: lemma 250 *) +lemma at_le: ∀cs,i1. i1 ≤ ∥cs∥ → + ∃∃i2. @⦃i1, cs⦄ ≡ i2 & i2 ≤ |cs|. +#cs elim cs -cs +[ #i1 #H <(le_n_O_to_eq … H) -i1 /2 width=3 by at_empty, ex2_intro/ +| * #cs #IH + [ * /2 width=3 by at_zero, ex2_intro/ + #i1 #H lapply (le_S_S_to_le … H) -H + #H elim (IH … H) -IH -H /3 width=3 by at_succ, le_S_S, ex2_intro/ + | #i1 #H elim (IH … H) -IH -H /3 width=3 by at_false, le_S_S, ex2_intro/ + ] +] +qed-. + +lemma at_top: ∀cs. @⦃∥cs∥, cs⦄ ≡ |cs|. +#cs elim cs -cs // * /2 width=1 by at_succ, at_false/ +qed. + +lemma at_monotonic: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∀j1. j1 < i1 → + ∃∃j2. @⦃j1, cs⦄ ≡ j2 & j2 < i2. +#cs #i1 #i2 #H elim H -cs -i1 -i2 +[ #j1 #H elim (lt_zero_false … H) +| #cs #j1 #H elim (lt_zero_false … H) +| #cs #i1 #i2 #Hij #IH * /2 width=3 by ex2_intro, at_zero/ + #j1 #H lapply (lt_S_S_to_lt … H) -H + #H elim (IH … H) -i1 + #j2 #Hj12 #H /3 width=3 by le_S_S, ex2_intro, at_succ/ +| #cs #i1 #i2 #_ #IH #j1 #H elim (IH … H) -i1 + /3 width=3 by le_S_S, ex2_intro, at_false/ +] +qed-. + +lemma at_dec: ∀cs,i1,i2. Decidable (@⦃i1, cs⦄ ≡ i2). +#cs elim cs -cs [ | * #cs #IH ] +[ * [2: #i1 ] * [2,4: #i2 ] + [4: /2 width=1 by at_empty, or_introl/ + |*: @or_intror #H elim (at_inv_empty … H) #H1 #H2 destruct + ] +| * [2: #i1 ] * [2,4: #i2 ] + [ elim (IH i1 i2) -IH + /4 width=1 by at_inv_true_succ, at_succ, or_introl, or_intror/ + | -IH /3 width=3 by at_inv_true_O_S, or_intror/ + | -IH /3 width=3 by at_inv_true_S_O, or_intror/ + | -IH /2 width=1 by or_introl, at_zero/ + ] +| #i1 * [2: #i2 ] + [ elim (IH i1 i2) -IH + /4 width=1 by at_inv_false_S, at_false, or_introl, or_intror/ + | -IH /3 width=3 by at_inv_false_O, or_intror/ + ] +] +qed-. + +lemma is_at_dec: ∀cs,i2. Decidable (∃i1. @⦃i1, cs⦄ ≡ i2). +#cs elim cs -cs +[ * /3 width=2 by ex_intro, or_introl/ + #i2 @or_intror * /2 width=3 by at_inv_empty_succ_dx/ +| * #cs #IH * [2,4: #i2 ] + [ elim (IH i2) -IH + [ * /4 width=2 by at_succ, ex_intro, or_introl/ + | #H @or_intror * #x #Hx + elim (at_inv_true_succ_dx … Hx) -Hx + /3 width=2 by ex_intro/ + ] + | elim (IH i2) -IH + [ * /4 width=2 by at_false, ex_intro, or_introl/ + | #H @or_intror * /4 width=2 by at_inv_false_S, ex_intro/ + ] + | /3 width=2 by at_zero, ex_intro, or_introl/ + | @or_intror * /2 width=3 by at_inv_false_O/ + ] +] +qed-. + +(* Basic forward lemmas *****************************************************) + +lemma at_increasing: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → i1 ≤ i2. +#cs #i1 elim i1 -i1 // +#j1 #IHi #i2 #H elim (at_monotonic … H j1) -H +/3 width=3 by le_to_lt_to_lt/ +qed-. + +lemma at_increasing_strict: ∀cs,i1,i2. @⦃i1, Ⓕ @ cs⦄ ≡ i2 → + i1 < i2 ∧ @⦃i1, cs⦄ ≡ ⫰i2. +#cs #i1 #i2 #H elim (at_inv_false … H) -H +#j2 #H #Hj2 destruct /4 width=2 by conj, at_increasing, le_S_S/ +qed-. + +(* Main properties **********************************************************) + +theorem at_mono: ∀cs,i,i1. @⦃i, cs⦄ ≡ i1 → ∀i2. @⦃i, cs⦄ ≡ i2 → i1 = i2. +#cs #i #i1 #H elim H -cs -i -i1 +[2,3,4: #cs [2,3: #i #i1 #_ #IH ] ] #i2 #H +[ elim (at_inv_true_succ_sn … H) -H + #j2 #H destruct #H >(IH … H) -cs -i -i1 // +| elim (at_inv_false … H) -H + #j2 #H destruct #H >(IH … H) -cs -i -i1 // +| /2 width=2 by at_inv_true_zero_sn/ +| /2 width=1 by at_inv_empty_zero_sn/ +] +qed-. + +theorem at_inj: ∀cs,i1,i. @⦃i1, cs⦄ ≡ i → ∀i2. @⦃i2, cs⦄ ≡ i → i1 = i2. +#cs #i1 #i #H elim H -cs -i1 -i +[2,3,4: #cs [ |2,3: #i1 #i #_ #IH ] ] #i2 #H +[ /2 width=2 by at_inv_true_zero_dx/ +| elim (at_inv_true_succ_dx … H) -H + #j2 #H destruct #H >(IH … H) -cs -i1 -i // +| elim (at_inv_false … H) -H + #j #H destruct #H >(IH … H) -cs -i1 -j // +| /2 width=1 by at_inv_empty_zero_dx/ +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_isid.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_isid.etc new file mode 100644 index 000000000..6dce9e0a2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_isid.etc @@ -0,0 +1,114 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/isidentity_1.ma". +include "ground_2/relocation/trace_after.ma". +include "ground_2/relocation/trace_sle.ma". + +(* RELOCATION TRACE *********************************************************) + +definition isid: predicate trace ≝ λcs. ∥cs∥ = |cs|. + +interpretation "test for identity (trace)" + 'IsIdentity cs = (isid cs). + +definition t_reflexive: ∀S:Type[0]. predicate (trace → relation S) ≝ + λS,R. ∀a. ∃∃t. 𝐈⦃t⦄ & R t a a. + +(* Basic properties *********************************************************) + +lemma isid_empty: 𝐈⦃◊⦄. +// qed. + +lemma isid_true: ∀cs. 𝐈⦃cs⦄ → 𝐈⦃Ⓣ @ cs⦄. +// qed. + +(* Basic inversion lemmas ***************************************************) + +lemma isid_inv_true: ∀cs. 𝐈⦃Ⓣ @ cs⦄ → 𝐈⦃cs⦄. +/2 width=1 by injective_S/ qed-. + +lemma isid_inv_false: ∀cs. 𝐈⦃Ⓕ @ cs⦄ → ⊥. +/3 width=4 by colength_le, lt_le_false/ qed-. + +lemma isid_inv_cons: ∀cs,b. 𝐈⦃b @ cs⦄ → 𝐈⦃cs⦄ ∧ b = Ⓣ. +#cs * #H /3 width=1 by isid_inv_true, conj/ +elim (isid_inv_false … H) +qed-. + +(* Properties on application ************************************************) + +lemma isid_at: ∀cs. (∀i1,i2. @⦃i1, cs⦄ ≡ i2 → i1 = i2) → 𝐈⦃cs⦄. +#cs elim cs -cs // * /2 width=1 by/ +qed. + +(* Inversion lemmas on application ******************************************) + +lemma isid_inv_at: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → 𝐈⦃cs⦄ → i1 = i2. +#cs #i1 #i2 #H elim H -cs -i1 -i2 /4 width=1 by isid_inv_true, eq_f/ +#cs #i1 #i2 #_ #IH #H elim (isid_inv_false … H) +qed-. + +(* Properties on composition ************************************************) + +lemma isid_after_sn: ∀cs2. ∃∃cs1. 𝐈⦃cs1⦄ & cs1 ⊚ cs2 ≡ cs2. +#cs2 elim cs2 -cs2 /2 width=3 by after_empty, ex2_intro/ +#b #cs2 * /3 width=3 by isid_true, after_true, ex2_intro/ +qed-. + +lemma isid_after_dx: ∀cs1. ∃∃cs2. 𝐈⦃cs2⦄ & cs1 ⊚ cs2 ≡ cs1. +#cs1 elim cs1 -cs1 /2 width=3 by after_empty, ex2_intro/ +* #cs1 * /3 width=3 by isid_true, after_true, after_false, ex2_intro/ +qed-. + +lemma after_isid_sn: ∀cs1,cs2. cs1 ⊚ cs2 ≡ cs2 → 𝐈⦃cs1⦄ . +#cs1 #cs2 #H elim (after_inv_length … H) -H // +qed. + +lemma after_isid_dx: ∀cs1,cs2. cs1 ⊚ cs2 ≡ cs1 → 𝐈⦃cs2⦄ . +#cs1 #cs2 #H elim (after_inv_length … H) -H // +qed. + +(* Inversion lemmas on composition ******************************************) + +lemma after_isid_inv_sn: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → 𝐈⦃cs1⦄ → cs = cs2. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs // +#cs1 #cs2 #cs #_ [ #b ] #IH #H +[ >IH -IH // | elim (isid_inv_false … H) ] +qed-. + +lemma after_isid_inv_dx: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → 𝐈⦃cs2⦄ → cs = cs1. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs // +#cs1 #cs2 #cs #_ [ #b ] #IH #H +[ elim (isid_inv_cons … H) -H #H >IH -IH // | >IH -IH // ] +qed-. + +lemma after_inv_isid3: ∀t1,t2,t. t1 ⊚ t2 ≡ t → 𝐈⦃t⦄ → 𝐈⦃t1⦄ ∧ 𝐈⦃t2⦄. +#t1 #t2 #t #H elim H -t1 -t2 -t +[ /2 width=1 by conj/ +| #t1 #t2 #t #_ #b #IHt #H elim (isid_inv_cons … H) -H + #Ht #H elim (IHt Ht) -t /2 width=1 by isid_true, conj/ +| #t1 #t2 #t #_ #_ #H elim (isid_inv_false … H) +] +qed-. + +(* Forward on inclusion *****************************************************) + +lemma sle_isid1_fwd: ∀t1,t2. t1 ⊆ t2 → 𝐈⦃t1⦄ → t1 = t2. +#t1 #t2 #H elim H -t1 -t2 // +[ #t1 #t2 #_ #IH #H lapply (isid_inv_true … H) -H + #HT1 @eq_f2 // @IH @HT1 (**) (* full auto fails *) +| #t1 #t2 #b #_ #_ #H elim (isid_inv_false … H) +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_isun.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_isun.etc new file mode 100644 index 000000000..bdcb249c5 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_isun.etc @@ -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 "ground_2/notation/relations/isuniform_1.ma". +include "ground_2/relocation/trace_isid.ma". + +(* RELOCATION TRACE *********************************************************) + +inductive isun: predicate trace ≝ +| isun_id : ∀t. 𝐈⦃t⦄ → isun t +| isun_false: ∀t. isun t → isun (Ⓕ@t) +. + +interpretation "test for uniformity (trace)" + 'IsUniform t = (isun t). + +(* Basic inversion lennas ***************************************************) + +fact isun_inv_true_aux: ∀t. 𝐔⦃t⦄ → ∀u. t = Ⓣ@u → 𝐈⦃u⦄. +#t * -t +[ #t #Ht #u #H destruct /2 width=1 by isid_inv_true/ +| #t #_ #u #H destruct +] +qed-. + +lemma isun_inv_true: ∀t. 𝐔⦃Ⓣ@t⦄ → 𝐈⦃t⦄. +/2 width=3 by isun_inv_true_aux/ qed-. + +fact isun_inv_false_aux: ∀t. 𝐔⦃t⦄ → ∀u. t = Ⓕ@u → 𝐔⦃u⦄. +#t * -t +[ #t #Ht #u #H destruct elim (isid_inv_false … Ht) +| #t #Ht #u #H destruct // +] +qed-. + +lemma isun_inv_false: ∀t. 𝐔⦃Ⓕ@t⦄ → 𝐔⦃t⦄. +/2 width=3 by isun_inv_false_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_sle.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_sle.etc new file mode 100644 index 000000000..be738b18e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_sle.etc @@ -0,0 +1,60 @@ +(**************************************************************************) +(* ___ *) +(* ||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/relocation/trace_at.ma". + +(* RELOCATION TRACE *********************************************************) + +inductive sle: relation trace ≝ +| sle_empty: sle (◊) (◊) +| sle_true : ∀t1,t2. sle t1 t2 → sle (Ⓣ @ t1) (Ⓣ @ t2) +| sle_false: ∀t1,t2,b. sle t1 t2 → sle (Ⓕ @ t1) (b @ t2) +. + +interpretation + "inclusion (trace)" + 'subseteq t1 t2 = (sle t1 t2). + +(* Basic properties *********************************************************) + +(* Basic forward lemmas *****************************************************) + +lemma sle_fwd_length: ∀t1,t2. t1 ⊆ t2 → |t1| = |t2|. +#t1 #t2 #H elim H -t1 -t2 // +qed-. + +lemma sle_fwd_colength: ∀t1,t2. t1 ⊆ t2 → ∥t1∥ ≤ ∥t2∥. +#t1 #t2 #H elim H -t1 -t2 /2 width=1 by le_S_S/ +#t1 #t2 * /2 width=1 by le_S/ +qed-. + +(* Inversion lemmas on application ******************************************) + +lemma sle_inv_at: ∀t1,t2. t1 ⊆ t2 → + ∀i,i1,i2. @⦃i, t1⦄ ≡ i1 → @⦃i, t2⦄ ≡ i2 → i2 ≤ i1. +#t1 #t2 #H elim H -t1 -t2 +[ #i #i1 #i2 #_ #H2 elim (at_inv_empty … H2) -H2 // +| #t1 #t2 #_ #IH #i #i1 #i2 #H0 #H2 elim (at_inv_true … H2) -H2 * // + #j1 #j2 #H1 #H2 #Hj destruct elim (at_inv_true_succ_sn … H0) -H0 + /3 width=3 by le_S_S/ +| #t1 #t2 * #_ #IH #i #i1 #i2 #H0 #H2 + [ elim (at_inv_true … H2) -H2 * // + #j #j2 #H1 #H2 #Hj2 destruct elim (at_inv_false … H0) -H0 + #j1 #H #Hj1 destruct elim (at_monotonic … Hj1 j) -Hj1 // + #x #H1x #H2x @le_S_S /4 width=3 by lt_to_le, le_to_lt_to_lt/ (**) (* full auto too slow *) + | elim (at_inv_false … H2) elim (at_inv_false … H0) -H0 -H2 + /3 width=3 by le_S_S/ + ] +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_snot.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_snot.etc new file mode 100644 index 000000000..d1697b9cc --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_snot.etc @@ -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 "ground_2/notation/functions/complement_1.ma". +include "ground_2/relocation/trace.ma". + +(* RELOCATION TRACE *********************************************************) + +let rec snot (t:trace) on t ≝ match t with +[ nil ⇒ ◊ +| cons b t ⇒ (¬ b) @ snot t +]. + +interpretation + "complement (trace)" + 'Complement t = (snot t). + +(* Basic properties *********************************************************) + +lemma snot_empty: ∁ (◊) = ◊. +// qed. + +lemma snot_inh: ∀t,b. ∁ (b@t) = (¬ b) @ ∁ t. +// qed. + +lemma snot_true: ∀t. ∁ (Ⓣ @ t) = Ⓕ @ ∁ t. +// qed. + +lemma snot_false: ∀t. ∁ (Ⓕ @ t) = Ⓣ @ ∁ t. +// qed. + +lemma snot_length: ∀t. |∁ t| = |t|. +#t elim t -t normalize // +qed. + +lemma snot_colength: ∀t. ∥∁ t∥ = |t| - ∥t∥. +#t elim t -t // +* /2 width=1 by minus_Sn_m/ +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_sor.etc b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_sor.etc new file mode 100644 index 000000000..65aba02ac --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/relocation/trace_sor.etc @@ -0,0 +1,62 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/runion_3.ma". +include "ground_2/relocation/trace_isid.ma". + +(* RELOCATION TRACE *********************************************************) + +inductive sor: relation3 trace trace trace ≝ + | sor_empty: sor (◊) (◊) (◊) + | sor_inh : ∀cs1,cs2,cs. sor cs1 cs2 cs → + ∀b1,b2. sor (b1 @ cs1) (b2 @ cs2) ((b1 ∨ b2) @ cs). + +interpretation + "union (trace)" + 'RUnion L1 L2 L = (sor L2 L1 L). + +(* Basic properties *********************************************************) + +lemma sor_length: ∀cs1,cs2. |cs1| = |cs2| → + ∃∃cs. cs2 ⋓ cs1 ≡ cs & |cs| = |cs1| & |cs| = |cs2|. +#cs1 elim cs1 -cs1 +[ #cs2 #H >(length_inv_zero_sn … H) -H /2 width=4 by sor_empty, ex3_intro/ +| #b1 #cs1 #IH #x #H elim (length_inv_succ_sn … H) -H + #cs2 #b2 #H12 #H destruct elim (IH … H12) -IH -H12 + #cs #H12 #H1 #H2 @(ex3_intro … ((b1 ∨ b2) @ cs)) /2 width=1 by sor_inh/ (**) (* explicit constructor *) +] +qed-. + +lemma sor_sym: ∀cs1,cs2,cs. cs1 ⋓ cs2 ≡ cs → cs2 ⋓ cs1 ≡ cs. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs /2 width=1 by sor_inh/ +qed-. + +(* Basic inversion lemmas ***************************************************) + +lemma sor_inv_length: ∀cs1,cs2,cs. cs2 ⋓ cs1 ≡ cs → + ∧∧ |cs1| = |cs2| & |cs| = |cs1| & |cs| = |cs2|. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs /2 width=1 by and3_intro/ +#cs1 #cs2 #cs #_ #b1 #b2 * /2 width=1 by and3_intro/ +qed-. + +(* Basic forward lemmas *****************************************************) + +lemma sor_fwd_isid_sn: ∀cs1,cs2,cs. cs1 ⋓ cs2 ≡ cs → 𝐈⦃cs1⦄ → 𝐈⦃cs⦄. +#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs // +#cs1 #cs2 #cs #_ #b1 #b2 #IH #H elim (isid_inv_cons … H) -H +/3 width=1 by isid_true/ +qed-. + +lemma sor_fwd_isid_dx: ∀cs1,cs2,cs. cs1 ⋓ cs2 ≡ cs → 𝐈⦃cs2⦄ → 𝐈⦃cs⦄. +/3 width=4 by sor_fwd_isid_sn, sor_sym/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat/rplusminus_4.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat/rplusminus_4.etc new file mode 100644 index 000000000..597ff94fb --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat/rplusminus_4.etc @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( x ⊞ break term 46 y1 ⊟ break term 46 y2 ≡ break term 46 z )" + non associative with precedence 45 + for @{ 'RPlusMinus $x $y1 $y2 $z }. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_max.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_max.etc new file mode 100644 index 000000000..acbd31d9d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_max.etc @@ -0,0 +1,58 @@ +(**************************************************************************) +(* ___ *) +(* ||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/ynat/ynat_plus.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +lemma ymax_pre_dx: ∀x,y. x ≤ y → x - y + y = y. +#x #y * -x -y // +#x #y #Hxy >yminus_inj >(eq_minus_O … Hxy) -Hxy // +qed-. + +lemma ymax_pre_sn: ∀x,y. y ≤ x → x - y + y = x. +#x #y * -x -y +[ #x #y #Hxy >yminus_inj /3 width=3 by plus_minus, eq_f/ +| * // +] +qed-. + +lemma ymax_pre_i_dx: ∀y,x. y ≤ x - y + y. +// qed. + +lemma ymax_pre_i_sn: ∀y,x. x ≤ x - y + y. +* // #y * /2 width=1 by yle_inj/ +qed. + +lemma ymax_pre_e: ∀x,z. x ≤ z → ∀y. y ≤ z → x - y + y ≤ z. +#x #z #Hxz #y #Hyz elim (yle_split x y) +[ #Hxy >(ymax_pre_dx … Hxy) -x // +| #Hyx >(ymax_pre_sn … Hyx) -y // +] +qed. + +lemma ymax_pre_dx_comm: ∀x,y. x ≤ y → y + (x - y) = y. +/2 width=1 by ymax_pre_dx/ qed-. + +lemma ymax_pre_sn_comm: ∀x,y. y ≤ x → y + (x - y) = x. +/2 width=1 by ymax_pre_sn/ qed-. + +lemma ymax_pre_i_dx_comm: ∀y,x. y ≤ y + (x - y). +// qed. + +lemma ymax_pre_i_sn_comm: ∀y,x. x ≤ y + (x - y). +/2 width=1 by ymax_pre_i_sn/ qed. + +lemma ymax_pre_e_comm: ∀x,z. x ≤ z → ∀y. y ≤ z → y + (x - y) ≤ z. +/2 width=1 by ymax_pre_e/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_min.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_min.etc new file mode 100644 index 000000000..96b8f2a21 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_min.etc @@ -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 "ground_2/ynat/ynat_plus.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +fact ymin_pre_dx_aux: ∀x,y. y ≤ x → x - (x - y) ≤ y. +#x #y * -x -y +[ #x #y #Hxy >yminus_inj + /3 width=4 by yle_inj, monotonic_le_minus_l/ +| * // +] +qed-. + +lemma ymin_pre_sn: ∀x,y. x ≤ y → x - (x - y) = x. +#x #y * -x -y // +#x #y #Hxy >yminus_inj >(eq_minus_O … Hxy) -Hxy // +qed-. + +lemma ymin_pre_i_dx: ∀x,y. x - (x - y) ≤ y. +#x #y elim (yle_split x y) /2 width=1 by ymin_pre_dx_aux/ +#Hxy >(ymin_pre_sn … Hxy) // +qed. + +lemma ymin_pre_i_sn: ∀x,y. x - (x - y) ≤ x. +// qed. + +lemma ymin_pre_dx: ∀x,y. y ≤ yinj x → yinj x - (yinj x - y) = y. +#x #y #H elim (yle_inv_inj2 … H) -H +#z #Hzx #H destruct >yminus_inj +/3 width=4 by minus_le_minus_minus_comm, eq_f/ +qed-. + +lemma ymin_pre_e: ∀z,x. z ≤ yinj x → ∀y. z ≤ y → + z ≤ yinj x - (yinj x - y). +#z #x #Hzx #y #Hzy elim (yle_split x y) +[ #H >(ymin_pre_sn … H) -y // +| #H >(ymin_pre_dx … H) -x // +] +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_minus.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_minus.etc new file mode 100644 index 000000000..a2f15a8e2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_minus.etc @@ -0,0 +1,227 @@ +(**************************************************************************) +(* ___ *) +(* ||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/ynat/ynat_lt.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* subtraction *) +definition yminus: ynat → ynat → ynat ≝ λx,y. match y with +[ yinj n ⇒ ypred^n x +| Y ⇒ yinj 0 +]. + +interpretation "ynat minus" 'minus x y = (yminus x y). + +lemma yminus_O2: ∀m:ynat. m - 0 = m. +// qed. + +lemma yminus_S2: ∀m:ynat. ∀n:nat. m - S n = ⫰(m - n). +// qed. + +lemma yminus_Y2: ∀m. m - (∞) = 0. +// qed. + +(* Basic properties *********************************************************) + +lemma yminus_inj: ∀m,n. yinj m - yinj n = yinj (m - n). +#m #n elim n -n // +#n #IH >yminus_S2 >IH -IH >eq_minus_S_pred // +qed. + +lemma yminus_Y_inj: ∀n. ∞ - yinj n = ∞. +#n elim n -n // +qed. + +lemma yminus_O1: ∀x:ynat. 0 - x = 0. +* // qed. + +lemma yminus_refl: ∀x:ynat. x - x = 0. +* // qed. + +lemma yminus_minus_comm: ∀y,z,x. x - y - z = x - z - y. +* #y [ * #z [ * // ] ] >yminus_O1 // +qed. + +(* Properties on predecessor ************************************************) + +lemma yminus_SO2: ∀m. m - 1 = ⫰m. +* // +qed. + +lemma yminus_pred1: ∀x,y. ⫰x - y = ⫰(x-y). +#x * // #y elim y -y // +qed. + +lemma yminus_pred: ∀n,m. 0 < m → 0 < n → ⫰m - ⫰n = m - n. +* // #n * +[ #m #Hm #Hn >yminus_inj >yminus_inj + /4 width=1 by ylt_inv_inj, minus_pred_pred, eq_f/ +| >yminus_Y_inj // +] +qed-. + +(* Properties on successor **************************************************) + +lemma yminus_succ: ∀n,m. ⫯m - ⫯n = m - n. +* // qed. + +lemma yminus_succ1_inj: ∀n:nat. ∀m:ynat. n ≤ m → ⫯m - n = ⫯(m - n). +#n * +[ #m #Hmn >yminus_inj >yminus_inj + /4 width=1 by yle_inv_inj, plus_minus, eq_f/ +| >yminus_Y_inj // +] +qed-. + +lemma yminus_succ2: ∀y,x. x - ⫯y = ⫰(x-y). +* // +qed. + +(* Properties on order ******************************************************) + +lemma yle_minus_sn: ∀n,m. m - n ≤ m. +* // #n * /2 width=1 by yle_inj/ +qed. + +lemma yle_to_minus: ∀m:ynat. ∀n:ynat. m ≤ n → m - n = 0. +#m #n * -m -n /3 width=3 by eq_minus_O, eq_f/ +qed-. + +lemma yminus_to_le: ∀n:ynat. ∀m:ynat. m - n = 0 → m ≤ n. +* // #n * +[ #m >yminus_inj #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) + /2 width=1 by yle_inj/ +| >yminus_Y_inj #H destruct +] +qed. + +lemma monotonic_yle_minus_dx: ∀x,y. x ≤ y → ∀z. x - z ≤ y - z. +#x #y #Hxy * // +#z elim z -z /3 width=1 by yle_pred/ +qed. + +(* Properties on strict order ***********************************************) + +lemma ylt_to_minus: ∀x,y:ynat. x < y → 0 < y - x. +#x #y #H elim H -x -y /3 width=1 by ylt_inj, lt_plus_to_minus_r/ +qed. + +lemma yminus_to_lt: ∀x,y:ynat. 0 < y - x → x < y. +* [2: #y #H elim (ylt_yle_false … H) // ] +#m * /4 width=1 by ylt_inv_inj, ylt_inj, lt_minus_to_plus_r/ +qed-. + +lemma monotonic_ylt_minus_dx: ∀x,y:ynat. x < y → ∀z:nat. z ≤ x → x - z < y - z. +#x #y * -x -y +/4 width=1 by ylt_inj, yle_inv_inj, monotonic_lt_minus_l/ +qed. + +(* Properties on minus ******************************************************) + +lemma yplus_minus_inj: ∀m:ynat. ∀n:nat. m + n - n = m. +#m #n elim n -n // +#n #IHn >(yplus_succ2 m n) >(yminus_succ … n) // +qed. + +lemma yplus_minus: ∀m,n. m + n - n ≤ m. +#m * // +qed. + +lemma yminus_plus2: ∀z,y,x:ynat. x - (y + z) = x - y - z. +* // #z * [2: >yplus_Y1 >yminus_O1 // ] #y * +[ #x >yplus_inj >yminus_inj >yminus_inj >yminus_inj /2 width=1 by eq_f/ +| >yplus_inj >yminus_Y_inj // +] +qed. + +(* Forward lemmas on minus **************************************************) + +lemma yle_plus1_to_minus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y. +#x #z #y #H lapply (monotonic_yle_minus_dx … H y) -H // +qed-. + +lemma yle_plus1_to_minus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y. +/2 width=1 by yle_plus1_to_minus_inj2/ qed-. + +lemma yle_plus2_to_minus_inj2: ∀x,y:ynat. ∀z:nat. x ≤ y + z → x - z ≤ y. +/2 width=1 by monotonic_yle_minus_dx/ qed-. + +lemma yle_plus2_to_minus_inj1: ∀x,y:ynat. ∀z:nat. x ≤ z + y → x - z ≤ y. +/2 width=1 by yle_plus2_to_minus_inj2/ qed-. + +lemma yplus_minus_assoc_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z + (y - x) = z + y - x. +#x * +[ #y * // #z >yminus_inj >yplus_inj >yplus_inj + /4 width=1 by yle_inv_inj, plus_minus, eq_f/ +| >yminus_Y_inj // +] +qed-. + +lemma yplus_minus_assoc_comm_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z - (y - x) = z + x - y. +#x * +[ #y * + [ #z >yminus_inj >yminus_inj >yplus_inj >yminus_inj + /4 width=1 by yle_inv_inj, minus_le_minus_minus_comm, eq_f/ + | >yminus_inj >yminus_Y_inj // + ] +| >yminus_Y_inj // +] +qed-. + +lemma yplus_minus_comm_inj: ∀y:nat. ∀x,z:ynat. y ≤ x → x + z - y = x - y + z. +#y * // #x * // +#z #Hxy >yplus_inj >yminus_inj yplus_inj in H0; >yplus_inj >yminus_inj >yminus_inj #H0 +@conj // lapply (yinj_inj … H0) -H0 /3 width=1 by arith_b1, eq_f/ +qed-. + +(* Inversion lemmas on minus ************************************************) + +lemma yle_inv_plus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y ∧ y ≤ z. +/3 width=3 by yle_plus1_to_minus_inj2, yle_trans, conj/ qed-. + +lemma yle_inv_plus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y ∧ y ≤ z. +/2 width=1 by yle_inv_plus_inj2/ qed-. + +lemma yle_inv_plus_inj_dx: ∀x,y:ynat. ∀z:nat. x + y ≤ z → + ∃∃m,n. x = yinj m & y = yinj n & x ≤ z - y & y ≤ z. +#x #y #z #Hz elim (yle_inv_inj2 … Hz) +#z0 #_ #H elim (yplus_inv_inj … H) -H +#m #n #H1 #H2 #H3 destruct +elim (yle_inv_plus_inj2 … Hz) -Hz /2 width=2 by ex4_2_intro/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_minus_dx.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_minus_dx.etc new file mode 100644 index 000000000..d9e343037 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_minus_dx.etc @@ -0,0 +1,236 @@ +(**************************************************************************) +(* ___ *) +(* ||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/ynat/ynat_plus.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* right subtraction *) +definition yminus_dx: nat → ynat → nat ≝ λx,y. match y with +[ yinj n ⇒ x-n +| Y ⇒ 0 +]. + +interpretation "ynat right minus" 'minus x y = (yminus_dx x y). + +lemma yminus_dx_inj (m) (n): m - yinj n = m - n. +// qed. + +lemma yminus_dx_Y2: ∀m. m - (∞) = 0. +// qed. + +lemma yminus_dx_succ_bi (n:ynat) (m): ↑m - ↑n = m - n. +* // qed. + +lemma yminus_dx_S2: ∀n:ynat. ∀m. m - ↑n = ↓(m - n). +* // qed. + +lemma yplus_minus_dx (x) (y): x ≤ yinj y → yinj y = x + yinj (y-x). +* [ #x #y #H >yplus_inj /4 width=1 by yle_inv_inj, minus_to_plus, eq_f/ ] +#y #H lapply (yle_inv_Y1 … H) -H #H destruct +qed-. + +(* + + +(* Basic properties *********************************************************) + +lemma yminus_inj: ∀m,n. yinj m - yinj n = yinj (m - n). +#m #n elim n -n // +#n #IH >yminus_S2 >IH -IH >eq_minus_S_pred // +qed. + +lemma yminus_Y_inj: ∀n. ∞ - yinj n = ∞. +#n elim n -n // +qed. + +lemma yminus_O1: ∀x:ynat. 0 - x = 0. +* // qed. + +lemma yminus_refl: ∀x:ynat. x - x = 0. +* // qed. + +lemma yminus_minus_comm: ∀y,z,x. x - y - z = x - z - y. +* #y [ * #z [ * // ] ] >yminus_O1 // +qed. + +(* Properties on predecessor ************************************************) + +lemma yminus_SO2: ∀m. m - 1 = ⫰m. +* // +qed. + +lemma yminus_pred1: ∀x,y. ⫰x - y = ⫰(x-y). +#x * // #y elim y -y // +qed. + +lemma yminus_pred: ∀n,m. 0 < m → 0 < n → ⫰m - ⫰n = m - n. +* // #n * +[ #m #Hm #Hn >yminus_inj >yminus_inj + /4 width=1 by ylt_inv_inj, minus_pred_pred, eq_f/ +| >yminus_Y_inj // +] +qed-. + +(* Properties on successor **************************************************) + +lemma yminus_succ1_inj: ∀n:nat. ∀m:ynat. n ≤ m → ⫯m - n = ⫯(m - n). +#n * +[ #m #Hmn >yminus_inj >yminus_inj + /4 width=1 by yle_inv_inj, plus_minus, eq_f/ +| >yminus_Y_inj // +] +qed-. + +lemma yminus_succ2: ∀y,x. x - ⫯y = ⫰(x-y). +* // +qed. + +(* Properties on order ******************************************************) + +lemma yle_minus_sn: ∀n,m. m - n ≤ m. +* // #n * /2 width=1 by yle_inj/ +qed. + +lemma yle_to_minus: ∀m:ynat. ∀n:ynat. m ≤ n → m - n = 0. +#m #n * -m -n /3 width=3 by eq_minus_O, eq_f/ +qed-. + +lemma yminus_to_le: ∀n:ynat. ∀m:ynat. m - n = 0 → m ≤ n. +* // #n * +[ #m >yminus_inj #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) + /2 width=1 by yle_inj/ +| >yminus_Y_inj #H destruct +] +qed. + +lemma monotonic_yle_minus_dx: ∀x,y. x ≤ y → ∀z. x - z ≤ y - z. +#x #y #Hxy * // +#z elim z -z /3 width=1 by yle_pred/ +qed. + +(* Properties on strict order ***********************************************) + +lemma ylt_to_minus: ∀x,y:ynat. x < y → 0 < y - x. +#x #y #H elim H -x -y /3 width=1 by ylt_inj, lt_plus_to_minus_r/ +qed. + +lemma yminus_to_lt: ∀x,y:ynat. 0 < y - x → x < y. +* [2: #y #H elim (ylt_yle_false … H) // ] +#m * /4 width=1 by ylt_inv_inj, ylt_inj, lt_minus_to_plus_r/ +qed-. + +lemma monotonic_ylt_minus_dx: ∀x,y:ynat. x < y → ∀z:nat. z ≤ x → x - z < y - z. +#x #y * -x -y +/4 width=1 by ylt_inj, yle_inv_inj, monotonic_lt_minus_l/ +qed. + +(* Properties on minus ******************************************************) + +lemma yplus_minus_inj: ∀m:ynat. ∀n:nat. m + n - n = m. +#m #n elim n -n // +#n #IHn >(yplus_succ2 m n) >(yminus_succ … n) // +qed. + +lemma yplus_minus: ∀m,n. m + n - n ≤ m. +#m * // +qed. + +lemma yminus_plus2: ∀z,y,x:ynat. x - (y + z) = x - y - z. +* // #z * [2: >yplus_Y1 >yminus_O1 // ] #y * +[ #x >yplus_inj >yminus_inj >yminus_inj >yminus_inj /2 width=1 by eq_f/ +| >yplus_inj >yminus_Y_inj // +] +qed. + +(* Forward lemmas on minus **************************************************) + +lemma yle_plus1_to_minus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y. +#x #z #y #H lapply (monotonic_yle_minus_dx … H y) -H // +qed-. + +lemma yle_plus1_to_minus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y. +/2 width=1 by yle_plus1_to_minus_inj2/ qed-. + +lemma yle_plus2_to_minus_inj2: ∀x,y:ynat. ∀z:nat. x ≤ y + z → x - z ≤ y. +/2 width=1 by monotonic_yle_minus_dx/ qed-. + +lemma yle_plus2_to_minus_inj1: ∀x,y:ynat. ∀z:nat. x ≤ z + y → x - z ≤ y. +/2 width=1 by yle_plus2_to_minus_inj2/ qed-. + +lemma yplus_minus_assoc_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z + (y - x) = z + y - x. +#x * +[ #y * // #z >yminus_inj >yplus_inj >yplus_inj + /4 width=1 by yle_inv_inj, plus_minus, eq_f/ +| >yminus_Y_inj // +] +qed-. + +lemma yplus_minus_assoc_comm_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z - (y - x) = z + x - y. +#x * +[ #y * + [ #z >yminus_inj >yminus_inj >yplus_inj >yminus_inj + /4 width=1 by yle_inv_inj, minus_le_minus_minus_comm, eq_f/ + | >yminus_inj >yminus_Y_inj // + ] +| >yminus_Y_inj // +] +qed-. + +lemma yplus_minus_comm_inj: ∀y:nat. ∀x,z:ynat. y ≤ x → x + z - y = x - y + z. +#y * // #x * // +#z #Hxy >yplus_inj >yminus_inj yplus_inj in H0; >yplus_inj >yminus_inj >yminus_inj #H0 +@conj // lapply (yinj_inj … H0) -H0 /3 width=1 by arith_b1, eq_f/ +qed-. + +(* Inversion lemmas on minus ************************************************) + +lemma yle_inv_plus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y ∧ y ≤ z. +/3 width=3 by yle_plus1_to_minus_inj2, yle_trans, conj/ qed-. + +lemma yle_inv_plus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y ∧ y ≤ z. +/2 width=1 by yle_inv_plus_inj2/ qed-. + +lemma yle_inv_plus_inj_dx: ∀x,y:ynat. ∀z:nat. x + y ≤ z → + ∃∃m,n. x = yinj m & y = yinj n & x ≤ z - y & y ≤ z. +#x #y #z #Hz elim (yle_inv_inj2 … Hz) +#z0 #_ #H elim (yplus_inv_inj … H) -H +#m #n #H1 #H2 #H3 destruct +elim (yle_inv_plus_inj2 … Hz) -Hz /2 width=2 by ex4_2_intro/ +qed-. +*) diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_plus.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_plus.etc new file mode 100644 index 000000000..e535b9fe0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_plus.etc @@ -0,0 +1,4 @@ + +lemma pippo: ∀x,y. x + y ≤ x → x = ∞ ∨ y = 0. +/3 width=1 by discr_yplus_xy_x, yle_antisym/ qed-. + diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_rpm.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_rpm.etc new file mode 100644 index 000000000..51aa4968b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat/ynat_rpm.etc @@ -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 "ground_2/notation/relations/rplusminus_4.ma". +include "ground_2/ynat/ynat_plus.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* algebraic x + y1 - y2 = z *) +inductive yrpm (x:ynat) (y1:ynat) (y2:ynat): predicate ynat ≝ +| yrpm_ge: y2 ≤ y1 → yrpm x y1 y2 (x + (y1 - y2)) +| yrpm_lt: y1 < y2 → yrpm x y1 y2 (x - (y2 - y1)) +. + +interpretation "ynat 'algebraic plus-minus' (relational)" + 'RPlusMinus x y1 y2 z = (yrpm x y1 y2 z). + +(* Basic inversion lemmas ***************************************************) + +lemma ypm_inv_ge: ∀x,y1,y2,z. x ⊞ y1 ⊟ y2 ≡ z → + y2 ≤ y1 → z = x + (y1 - y2). +#x #y1 #y2 #z * -z // +#Hy12 #H elim (ylt_yle_false … H) -H // +qed-. + +lemma ypm_inv_lt: ∀x,y1,y2,z. x ⊞ y1 ⊟ y2 ≡ z → + y1 < y2 → z = x - (y2 - y1). +#x #y1 #y2 #z * -z // +#Hy21 #H elim (ylt_yle_false … H) -H // +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma ypm_inv_le: ∀x,y1,y2,z. x ⊞ y1 ⊟ y2 ≡ z → + y1 ≤ y2 → z = x - (y2 - y1). +#x #y1 #y2 #z #H #Hy12 elim (yle_split_eq … Hy12) -Hy12 #Hy12 +[ /2 width=1 by ypm_inv_lt/ +| >(ypm_inv_ge … H) -H // destruct >yminus_refl // +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat.etc new file mode 100644 index 000000000..09df4db8f --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat.etc @@ -0,0 +1,53 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "arithmetics/nat.ma". + +(* INFINITARY NATURAL NUMBERS ***********************************************) + +(* the type of infinitary natural numbers *) +coinductive ynat: Type[0] ≝ +| YO: ynat +| YS: ynat → ynat +. + +interpretation "ynat successor" 'Successor m = (YS m). + +(* the coercion of nat to ynat *) +let rec ynat_of_nat n ≝ match n with +[ O ⇒ YO +| S m ⇒ YS (ynat_of_nat m) +]. + +coercion ynat_of_nat. + +(* the infinity *) +let corec Y : ynat ≝ ⫯Y. + +interpretation "ynat infinity" 'Infinity = Y. + +(* destructing identity on ynat *) +definition yid: ynat → ynat ≝ λm. match m with +[ YO ⇒ 0 +| YS n ⇒ ⫯n +]. + +(* Properties ***************************************************************) + +fact yid_rew: ∀n. yid n = n. +* // qed-. + +lemma Y_rew: ⫯∞ = ∞. +<(yid_rew ∞) in ⊢ (???%); // +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat_iszero.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat_iszero.etc new file mode 100644 index 000000000..3cb47bc21 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat_iszero.etc @@ -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 "ground_2/notation.ma". +include "ground_2/xoa_props.ma". +include "ground_2/ynat/ynat.ma". + +(* INFINITARY NATURAL NUMBERS ***********************************************) + +(* "is_zero" predicate *) +definition yzero: predicate ynat ≝ λx. match x with +[ YO ⇒ ⊤ +| YS _ ⇒ ⊥ +]. + +(* Inversion lemmas *********************************************************) + +lemma discr_YS_YO: ∀n. ⫯n = 0 → ⊥. +#n #H change with (yzero (⫯n)) +>H -H // +qed-. + +lemma discr_YO_YS: ∀n. ynat_of_nat 0 = ⫯n → ⊥. (**) (* explicit coercion *) +/2 width=2 by discr_YS_YO/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat_le.etc b/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat_le.etc new file mode 100644 index 000000000..bde84cf79 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/etc/ynat_old/ynat_le.etc @@ -0,0 +1,84 @@ +(**************************************************************************) +(* ___ *) +(* ||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/star.ma". +include "ground_2/ynat/ynat_iszero.ma". +include "ground_2/ynat/ynat_pred.ma". + +(* INFINITARY NATURAL NUMBERS ***********************************************) + +(* order relation *) +coinductive yle: relation ynat ≝ +| yle_O: ∀n. yle 0 n +| yle_S: ∀m,n. yle m n → yle (⫯m) (⫯n) +. + +interpretation "natural 'less or equal to'" 'leq x y = (yle x y). + +(* Inversion lemmas *********************************************************) + +fact yle_inv_O2_aux: ∀m,x. m ≤ x → x = 0 → m = 0. +#m #x * -m -x // +#m #x #_ #H elim (discr_YS_YO … H) (**) (* destructing lemma needed *) +qed-. + +lemma yle_inv_O2: ∀m. m ≤ 0 → m = 0. +/2 width =3 by yle_inv_O2_aux/ qed-. + +fact yle_inv_S1_aux: ∀x,y. x ≤ y → ∀m. x = ⫯m → ∃∃n. m ≤ n & y = ⫯n. +#x #y * -x -y +[ #y #m #H elim (discr_YO_YS … H) (**) (* destructing lemma needed *) +| #x #y #Hxy #m #H destruct /2 width=3 by ex2_intro/ +] +qed-. + +lemma yle_inv_S1: ∀m,y. ⫯m ≤ y → ∃∃n. m ≤ n & y = ⫯n. +/2 width=3 by yle_inv_S1_aux/ qed-. + +lemma yle_inv_S: ∀m,n. ⫯m ≤ ⫯n → m ≤ n. +#m #n #H elim (yle_inv_S1 … H) -H +#x #Hx #H destruct // +qed-. + +(* Properties ***************************************************************) + +let corec yle_refl: reflexive … yle ≝ ?. +* [ @yle_O | #x @yle_S // ] +qed. + +let corec yle_Y: ∀m. m ≤ ∞ ≝ ?. +* [ @yle_O | #m (le_to_leb_true … H) | >(not_le_to_leb_false … H) ] -H // +qed. + +(* Equalities ***************************************************************) + +lemma plus_SO_sn (n): 1 + n = ↑n. +// qed-. + +lemma plus_SO_dx (n): n + 1 = ↑n. +// qed. + +lemma minus_SO_dx (n): n-1 = ↓n. +// qed. + +lemma minus_plus_m_m_commutative: ∀n,m:nat. n = m + n - m. +// qed-. + +lemma plus_minus_m_m_commutative (n) (m): m ≤ n → n = m+(n-m). +/2 width=1 by plus_minus_associative/ qed-. + +lemma plus_to_minus_2: ∀m1,m2,n1,n2. n1 ≤ m1 → n2 ≤ m2 → + m1+n2 = m2+n1 → m1-n1 = m2-n2. +#m1 #m2 #n1 #n2 #H1 #H2 #H +@plus_to_minus >plus_minus_associative // +qed-. + +(* Note: uses minus_minus_comm, minus_plus_m_m, commutative_plus, plus_minus *) +lemma plus_minus_minus_be: ∀x,y,z. y ≤ z → z ≤ x → (x - z) + (z - y) = x - y. +#x #z #y #Hzy #Hyx >plus_minus // >commutative_plus >plus_minus // +qed-. + +lemma lt_succ_pred: ∀m,n. n < m → m = ↑↓m. +#m #n #Hm >S_pred /2 width=2 by ltn_to_ltO/ +qed-. + +fact plus_minus_minus_be_aux: ∀i,x,y,z. y ≤ z → z ≤ x → i = z - y → x - z + i = x - y. +/2 width=1 by plus_minus_minus_be/ qed-. + +lemma le_plus_minus: ∀m,n,p. p ≤ n → m + n - p = m + (n - p). +/2 by plus_minus/ qed-. + +lemma le_plus_minus_comm: ∀n,m,p. p ≤ m → m + n - p = m - p + n. +/2 by plus_minus/ qed-. + +lemma minus_minus_comm3: ∀n,x,y,z. n-x-y-z = n-y-z-x. +// qed. + +lemma idempotent_max: ∀n:nat. n = (n ∨ n). +#n normalize >le_to_leb_true // +qed. + +lemma associative_max: associative … max. +#x #y #z normalize +@(leb_elim x y) normalize #Hxy +@(leb_elim y z) normalize #Hyz // +[1,2: >le_to_leb_true /2 width=3 by transitive_le/ +| >not_le_to_leb_false /4 width=3 by lt_to_not_le, not_le_to_lt, transitive_lt/ + >not_le_to_leb_false // +] +qed. + +(* Properties ***************************************************************) + +lemma eq_nat_dec: ∀n1,n2:nat. Decidable (n1 = n2). +#n1 elim n1 -n1 [| #n1 #IHn1 ] * [2,4: #n2 ] +[1,4: @or_intror #H destruct +| elim (IHn1 n2) -IHn1 /3 width=1 by or_intror, or_introl/ +| /2 width=1 by or_introl/ +] +qed-. + +lemma lt_or_eq_or_gt: ∀m,n. ∨∨ m < n | n = m | n < m. +#m #n elim (lt_or_ge m n) /2 width=1 by or3_intro0/ +#H elim H -m /2 width=1 by or3_intro1/ +#m #Hm * /3 width=1 by not_le_to_lt, le_S_S, or3_intro2/ +qed-. + +lemma monotonic_le_minus_l2: ∀x1,x2,y,z. x1 ≤ x2 → x1 - y - z ≤ x2 - y - z. +/3 width=1 by monotonic_le_minus_l/ qed. + +lemma minus_le_trans_sn: ∀x1,x2. x1 ≤ x2 → ∀x. x1-x ≤ x2. +/2 width=3 by transitive_le/ qed. + +lemma le_plus_to_minus_l: ∀a,b,c. a + b ≤ c → b ≤ c-a. +/2 width=1 by le_plus_to_minus_r/ +qed-. + +lemma le_plus_to_minus_comm: ∀n,m,p. n ≤ p+m → n-p ≤ m. +/2 width=1 by le_plus_to_minus/ qed-. + +lemma le_inv_S1: ∀m,n. ↑m ≤ n → ∃∃p. m ≤ p & ↑p = n. +#m * +[ #H lapply (le_n_O_to_eq … H) -H + #H destruct +| /3 width=3 by monotonic_pred, ex2_intro/ +] +qed-. + +(* Note: this might interfere with nat.ma *) +lemma monotonic_lt_pred: ∀m,n. m < n → 0 < m → pred m < pred n. +#m #n #Hmn #Hm whd >(S_pred … Hm) +@le_S_S_to_le >S_pred /2 width=3 by transitive_lt/ +qed. + +lemma lt_S_S: ∀x,y. x < y → ↑x < ↑y. +/2 width=1 by le_S_S/ qed. + +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-. + +lemma max_S2_le_S: ∀n1,n2,n. (n1 ∨ n2) ≤ n → (n1 ∨ ↑n2) ≤ ↑n. +/2 width=1 by max_S1_le_S/ qed-. + +(* Inversion & forward lemmas ***********************************************) + +lemma lt_refl_false: ∀n. n < n → ⊥. +#n #H elim (lt_to_not_eq … H) -H /2 width=1 by/ +qed-. + +lemma lt_zero_false: ∀n. n < 0 → ⊥. +#n #H elim (lt_to_not_le … H) -H /2 width=1 by/ +qed-. + +lemma lt_le_false: ∀x,y. x < y → y ≤ x → ⊥. +/3 width=4 by lt_refl_false, lt_to_le_to_lt/ qed-. + +lemma le_dec (n) (m): Decidable (n≤m). +#n elim n -n [ /2 width=1 by or_introl/ ] +#n #IH * [ /3 width=2 by lt_zero_false, or_intror/ ] +#m elim (IH m) -IH +[ /3 width=1 by or_introl, le_S_S/ +| /4 width=1 by or_intror, le_S_S_to_le/ +] +qed-. + +lemma succ_inv_refl_sn: ∀x. ↑x = x → ⊥. +#x #H @(lt_le_false x (↑x)) // +qed-. + +lemma le_plus_xSy_O_false: ∀x,y. x + S y ≤ 0 → ⊥. +#x #y #H lapply (le_n_O_to_eq … H) -H H -H +/2 width=2 by le_plus_to_le/ +qed-. + +lemma plus2_le_sn_dx: ∀m1,m2,n1,n2. m1 + n1 = n2 + m2 → m1 ≤ m2 → n2 ≤ n1. +/2 width=4 by plus2_le_sn_sn/ qed-. + +lemma plus2_le_dx_sn: ∀m1,m2,n1,n2. n1 + m1 = m2 + n2 → m1 ≤ m2 → n2 ≤ n1. +/2 width=4 by plus2_le_sn_sn/ qed-. + +lemma plus2_le_dx_dx: ∀m1,m2,n1,n2. n1 + m1 = n2 + m2 → m1 ≤ m2 → n2 ≤ n1. +/2 width=4 by plus2_le_sn_sn/ qed-. + +lemma lt_S_S_to_lt: ∀x,y. ↑x < ↑y → x < y. +/2 width=1 by le_S_S_to_le/ qed-. + +(* Note this should go in nat.ma *) +lemma discr_x_minus_xy: ∀x,y. x = x - y → x = 0 ∨ y = 0. +#x @(nat_ind_plus … x) -x /2 width=1 by or_introl/ +#x #_ #y @(nat_ind_plus … y) -y /2 width=1 by or_intror/ +#y #_ >minus_plus_plus_l +#H lapply (discr_plus_xy_minus_xz … H) -H +#H destruct +qed-. + +lemma lt_inv_O1: ∀n. 0 < n → ∃m. ↑m = n. +* /2 width=2 by ex_intro/ +#H cases (lt_le_false … H) -H // +qed-. + +lemma lt_inv_S1: ∀m,n. ↑m < n → ∃∃p. m < p & ↑p = n. +#m * /3 width=3 by lt_S_S_to_lt, ex2_intro/ +#H cases (lt_le_false … H) -H // +qed-. + +lemma lt_inv_gen: ∀y,x. x < y → ∃∃z. x ≤ z & ↑z = y. +* /3 width=3 by le_S_S_to_le, ex2_intro/ +#x #H elim (lt_le_false … H) -H // +qed-. + +lemma plus_inv_O3: ∀x,y. x + y = 0 → x = 0 ∧ y = 0. +/2 width=1 by plus_le_0/ qed-. + +lemma plus_inv_S3_sn: ∀x1,x2,x3. x1+x2 = ↑x3 → + ∨∨ ∧∧ x1 = 0 & x2 = ↑x3 + | ∃∃y1. x1 = ↑y1 & y1 + x2 = x3. +* /3 width=1 by or_introl, conj/ +#x1 #x2 #x3 minus_minus_comm >minus_le_minus_minus_comm // +qed-. + +lemma arith_b2: ∀a,b,c1,c2. c1 + c2 ≤ b → a - c1 - c2 - (b - c1 - c2) = a - b. +#a #b #c1 #c2 #H >minus_plus >minus_plus >minus_plus /2 width=1 by arith_b1/ +qed-. + +lemma arith_c1x: ∀x,a,b,c1. x + c1 + a - (b + c1) = x + a - b. +/3 by monotonic_le_minus_l, le_to_le_to_eq, le_n/ qed. + +lemma arith_h1: ∀a1,a2,b,c1. c1 ≤ a1 → c1 ≤ b → + a1 - c1 + a2 - (b - c1) = a1 + a2 - b. +#a1 #a2 #b #c1 #H1 #H2 >plus_minus /2 width=1 by arith_b2/ +qed-. + +lemma arith_i: ∀x,y,z. y < x → x+z-y-1 = x-y-1+z. +/2 width=1 by plus_minus/ qed-. + +(* Properties ***************************************************************) + +fact le_repl_sn_conf_aux: ∀x,y,z:nat. x ≤ z → x = y → y ≤ z. +// qed-. + +fact le_repl_sn_trans_aux: ∀x,y,z:nat. x ≤ z → y = x → y ≤ z. +// qed-. + +lemma arith_j: ∀x,y,z. x-y-1 ≤ x-(y-z)-1. +/3 width=1 by monotonic_le_minus_l, monotonic_le_minus_r/ qed. + +lemma arith_k_sn: ∀z,x,y,n. z < x → x+n ≤ y → x-z-1+n ≤ y-z-1. +#z #x #y #n #Hzx #Hxny +>plus_minus [2: /2 width=1 by monotonic_le_minus_r/ ] +>plus_minus [2: /2 width=1 by lt_to_le/ ] +/2 width=1 by monotonic_le_minus_l2/ +qed. + +lemma arith_k_dx: ∀z,x,y,n. z < x → y ≤ x+n → y-z-1 ≤ x-z-1+n. +#z #x #y #n #Hzx #Hyxn +>plus_minus [2: /2 width=1 by monotonic_le_minus_r/ ] +>plus_minus [2: /2 width=1 by lt_to_le/ ] +/2 width=1 by monotonic_le_minus_l2/ +qed. + +(* Inversion & forward lemmas ***********************************************) + +lemma lt_plus_SO_to_le: ∀x,y. x < y + 1 → x ≤ y. +/2 width=1 by monotonic_pred/ qed-. + +(* Iterators ****************************************************************) + +lemma iter_SO: ∀B:Type[0]. ∀f:B→B. ∀b,l. f^(l+1) b = f (f^l b). +#B #f #b #l >commutative_plus // +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/lib/arith_2b.ma b/matita/matita/contribs/lambdadelta/ground/lib/arith_2b.ma new file mode 100644 index 000000000..f9df115e1 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/lib/arith_2b.ma @@ -0,0 +1,44 @@ +(**************************************************************************) +(* ___ *) +(* ||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/lib/arith.ma". + +(* ARITHMETICAL PROPERTIES FOR λδ-2B ****************************************) + +lemma arith_l4 (m11) (m12) (m21) (m22): + m21+m22-(m11+m12) = m21-m11-m12+(m22-(m11-m21)-(m12-(m21-m11))). +#m11 #m12 #m21 #m22 >minus_plus +elim (le_or_ge (m11+m12) m21) #Hm1121 +[ lapply (transitive_le m11 ??? Hm1121) // #Hm121 + lapply (le_plus_to_minus_l … Hm1121) #Hm12211 + (eq_minus_O m11 ?) // >(eq_minus_O m12 ?) // +| >(eq_minus_O m21 ?) // (eq_minus_O m11 ?) // (eq_minus_O m21 ?) // length_cons #H destruct +qed-. + +lemma length_inv_zero_sn (A:Type[0]) (l:list A): 0 = |l| → l = Ⓔ. +/2 width=1 by length_inv_zero_dx/ qed-. + +lemma length_inv_succ_dx (A:Type[0]) (l:list A) (x): |l| = ↑x → + ∃∃tl,a. x = |tl| & l = a ⨮ tl. +#A * +[ #x >length_nil #H destruct +| #a #l #x >length_cons #H destruct /2 width=4 by ex2_2_intro/ +] +qed-. + +lemma length_inv_succ_sn (A:Type[0]) (l:list A) (x): ↑x = |l| → + ∃∃tl,a. x = |tl| & l = a ⨮ tl. +/2 width=1 by length_inv_succ_dx/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground/lib/logic.ma b/matita/matita/contribs/lambdadelta/ground/lib/logic.ma new file mode 100644 index 000000000..dc7216480 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/lib/logic.ma @@ -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 "basics/logic.ma". +include "ground/notation/xoa/false_0.ma". +include "ground/notation/xoa/true_0.ma". +include "ground/notation/xoa/or_2.ma". +include "ground/notation/xoa/and_2.ma". + +interpretation "logical false" 'false = False. + +interpretation "logical true" 'true = True. + +(* Logical properties missing in the basic library **************************) + +lemma commutative_and: ∀A,B. A ∧ B → B ∧ A. +#A #B * /2 width=1 by conj/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/lib/lstar_2a.ma b/matita/matita/contribs/lambdadelta/ground/lib/lstar_2a.ma new file mode 100644 index 000000000..ae707f2b9 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/lib/lstar_2a.ma @@ -0,0 +1,20 @@ +(**************************************************************************) +(* ___ *) +(* ||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 "arithmetics/lstar.ma". + +(* PROPERTIES OF NAT-LABELED REFLEXIVE AND TRANSITIVE CLOSURE ***************) + +definition llstar: ∀A:Type[0]. ∀B. (A→relation B) → nat → (A→relation B) ≝ + λA,B,R,l,a. lstar … (R a) l. diff --git a/matita/matita/contribs/lambdadelta/ground/lib/ltc.ma b/matita/matita/contribs/lambdadelta/ground/lib/ltc.ma new file mode 100644 index 000000000..4f3962671 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/lib/ltc.ma @@ -0,0 +1,89 @@ +(**************************************************************************) +(* ___ *) +(* ||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/insert_eq/insert_eq_0.ma". +include "ground/lib/functions.ma". + +(* LABELLED TRANSITIVE CLOSURE **********************************************) + +inductive ltc (A:Type[0]) (f) (B) (R:relation3 A B B): relation3 A B B ≝ +| ltc_rc : ∀a,b1,b2. R a b1 b2 → ltc … a b1 b2 +| ltc_trans: ∀a1,a2,b1,b,b2. ltc … a1 b1 b → ltc … a2 b b2 → ltc … (f a1 a2) b1 b2 +. + +(* Basic properties *********************************************************) + +lemma ltc_sn (A) (f) (B) (R): ∀a1,b1,b. R a1 b1 b → + ∀a2,b2. ltc A f B R a2 b b2 → ltc … f … R (f a1 a2) b1 b2. +/3 width=3 by ltc_rc, ltc_trans/ qed. + +lemma ltc_dx (A) (f) (B) (R): ∀a1,b1,b. ltc A f B R a1 b1 b → + ∀a2,b2. R a2 b b2 → ltc … f … R (f a1 a2) b1 b2. +/3 width=3 by ltc_rc, ltc_trans/ qed. + +(* Basic eliminators ********************************************************) + +lemma ltc_ind_sn (A) (f) (B) (R) (Q:relation2 A B) (b2): associative … f → + (∀a,b1. R a b1 b2 → Q a b1) → + (∀a1,a2,b1,b. R a1 b1 b → ltc … f … R a2 b b2 → Q a2 b → Q (f a1 a2) b1) → + ∀a,b1. ltc … f … R a b1 b2 → Q a b1. +#A #f #B #R #Q #b2 #Hf #IH1 #IH2 #a #b1 @(insert_eq_0 … b2) +#b0 #H elim H -a -b1 -b0 /2 width=2 by/ +#a1 #a2 #b1 #b #b0 #H #Hb2 #_ +generalize in match Hb2; generalize in match a2; -Hb2 -a2 +elim H -a1 -b1 -b /4 width=4 by ltc_trans/ +qed-. + +lemma ltc_ind_dx (A) (f) (B) (R) (Q:A→predicate B) (b1): associative … f → + (∀a,b2. R a b1 b2 → Q a b2) → + (∀a1,a2,b,b2. ltc … f … R a1 b1 b → Q a1 b → R a2 b b2 → Q (f a1 a2) b2) → + ∀a,b2. ltc … f … R a b1 b2 → Q a b2. +#A #f #B #R #Q #b1 #Hf #IH1 #IH2 #a #b2 @(insert_eq_0 … b1) +#b0 #H elim H -a -b0 -b2 /2 width=2 by/ +#a1 #a2 #b0 #b #b2 #Hb0 #H #IHb0 #_ +generalize in match IHb0; generalize in match Hb0; generalize in match a1; -IHb0 -Hb0 -a1 +elim H -a2 -b -b2 /4 width=4 by ltc_trans/ +qed-. + +(* Advanced elimiators with reflexivity *************************************) + +lemma ltc_ind_sn_refl (A) (i) (f) (B) (R) (Q:relation2 A B) (b2): + associative … f → right_identity … f i → reflexive B (R i) → + Q i b2 → + (∀a1,a2,b1,b. R a1 b1 b → ltc … f … R a2 b b2 → Q a2 b → Q (f a1 a2) b1) → + ∀a,b1. ltc … f … R a b1 b2 → Q a b1. +#A #i #f #B #R #Q #b2 #H1f #H2f #HR #IH1 #IH2 #a #b1 #H +@(ltc_ind_sn … R … H1f … IH2 … H) -a -b1 -H1f #a #b1 #Hb12 +>(H2f a) -H2f /3 width=4 by ltc_rc/ +qed-. + +lemma ltc_ind_dx_refl (A) (i) (f) (B) (R) (Q:A→predicate B) (b1): + associative … f → left_identity … f i → reflexive B (R i) → + Q i b1 → + (∀a1,a2,b,b2. ltc … f … R a1 b1 b → Q a1 b → R a2 b b2 → Q (f a1 a2) b2) → + ∀a,b2. ltc … f … R a b1 b2 → Q a b2. +#A #i #f #B #R #Q #b1 #H1f #H2f #HR #IH1 #IH2 #a #b2 #H +@(ltc_ind_dx … R … H1f … IH2 … H) -a -b2 -H1f #a #b2 #Hb12 +>(H2f a) -H2f /3 width=4 by ltc_rc/ +qed-. + +(* Properties with lsub *****************************************************) + +lemma ltc_lsub_trans: ∀A,f. associative … f → + ∀B,C,R,S. (∀n. lsub_trans B C (λL. R L n) S) → + ∀n. lsub_trans B C (λL. ltc A f … (R L) n) S. +#A #f #Hf #B #C #R #S #HRS #n #L2 #T1 #T2 #H +@(ltc_ind_dx … Hf ???? H) -n -T2 +/3 width=5 by ltc_dx, ltc_rc/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/lib/ltc_ctc.ma b/matita/matita/contribs/lambdadelta/ground/lib/ltc_ctc.ma new file mode 100644 index 000000000..0f8ddd107 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/lib/ltc_ctc.ma @@ -0,0 +1,42 @@ +(**************************************************************************) +(* ___ *) +(* ||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/lib/star.ma". +include "ground/lib/ltc.ma". + +(* LABELLED TRANSITIVE CLOSURE **********************************************) + +alias symbol "subseteq" = "relation inclusion". + +(* Properties with contextual transitive closure ****************************) + +lemma ltc_CTC (C) (A) (i) (f) (B) (R:relation4 C A B B): + left_identity … f i → + ∀c. CTC … (λc. R c i) c ⊆ ltc … f … (R c) i. +#C #A #i #f #B #R #Hf #c #b1 #b2 #H elim H -b2 /2 width=1 by ltc_rc/ +#b #b2 #_ #Hb2 #IH >(Hf i) -Hf /2 width=3 by ltc_dx/ +qed. + +(* Inversion lemmas with contextual transitive closure **********************) + +lemma ltc_inv_CTC (C) (A) (i) (f) (B) (R:relation4 C A B B): + associative … f → annulment_2 … f i → + ∀c. ltc … f … (R c) i ⊆ CTC … (λc. R c i) c. +#C #A #i #f #B #R #H1f #H2f #c #b1 #b2 +@(insert_eq_0 … i) #a #H +@(ltc_ind_dx A f B … H) -a -b2 /2 width=1 by inj/ -H1f +#a1 #a2 #b #b2 #_ #IH #Hb2 #H "hvbox( Ⓔ )" + non associative with precedence 55 + for @{ 'CircledE ? }. + +notation > "hvbox( Ⓔ{ term 46 C } )" + non associative with precedence 55 + for @{ 'CircledE $S }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/cocompose_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/cocompose_2.ma new file mode 100644 index 000000000..252f567bd --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/cocompose_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( f2 ~∘ break f1 )" + right associative with precedence 60 + for @{ 'CoCompose $f2 $f1 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/diamond_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/diamond_0.ma new file mode 100644 index 000000000..4f218dd61 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/diamond_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "◊" + non associative with precedence 55 + for @{ 'Diamond }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/downarrow_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/downarrow_1.ma new file mode 100644 index 000000000..e35058c60 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/downarrow_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ↓ term 70 T )" + non associative with precedence 70 + for @{ 'DownArrow $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/downspoon_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/downspoon_2.ma new file mode 100644 index 000000000..3b7824afc --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/downspoon_2.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation < "hvbox( ⫰ term 46 a )" + non associative with precedence 46 + for @{ 'DownSpoon $S $a }. + +notation > "hvbox( ⫰ term 46 a )" + non associative with precedence 46 + for @{ 'DownSpoon ? $a }. + +notation > "hvbox( ⫰{ term 46 S } break term 46 a )" + non associative with precedence 46 + for @{ 'DownSpoon $S $a }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/downspoonstar_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/downspoonstar_3.ma new file mode 100644 index 000000000..c6ad562a3 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/downspoonstar_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation < "hvbox( ⫰*[ break term 46 n ] break term 46 a )" + non associative with precedence 46 + for @{ 'DownSpoonStar $S $n $a }. + +notation > "hvbox( ⫰*[ break term 46 n ] break term 46 a )" + non associative with precedence 46 + for @{ 'DownSpoonStar ? $n $a }. + +notation > "hvbox( ⫰*{ term 46 S }[ break term 46 n ] break term 46 a )" + non associative with precedence 46 + for @{ 'DownSpoonStar $S $n $a }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/droppred_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/droppred_1.ma new file mode 100644 index 000000000..7e82080a2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/droppred_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ⫱ term 46 T )" + non associative with precedence 46 + for @{ 'DropPred $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/droppreds_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/droppreds_2.ma new file mode 100644 index 000000000..90c206208 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/droppreds_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ⫱ *[ term 46 n ] break term 46 T )" + non associative with precedence 46 + for @{ 'DropPreds $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/identity_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/identity_0.ma new file mode 100644 index 000000000..9d4aea574 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/identity_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐈𝐝 )" + non associative with precedence 90 + for @{ 'Identity }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/infinity_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/infinity_0.ma new file mode 100644 index 000000000..f5c849158 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/infinity_0.ma @@ -0,0 +1,20 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "∞" + non associative with precedence 55 + for @{ 'Infinity }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/no_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/no_0.ma new file mode 100644 index 000000000..af692211e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/no_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "Ⓕ" + non associative with precedence 55 + for @{'no}. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/onezero_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/onezero_0.ma new file mode 100644 index 000000000..5df776e6a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/onezero_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "𝟙𝟘" + non associative with precedence 55 + for @{ 'OneZero }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/oplusright_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/oplusright_3.ma new file mode 100644 index 000000000..e172f4abe --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/oplusright_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation < "hvbox( hd ⨮ break tl )" + right associative with precedence 47 + for @{ 'OPlusRight $S $hd $tl }. + +notation > "hvbox( hd ⨮ break tl )" + right associative with precedence 47 + for @{ 'OPlusRight ? $hd $tl }. + +notation > "hvbox( hd ⨮{ break term 46 S } break term 46 tl )" + non associative with precedence 47 + for @{ 'OPlusRight $S $hd $tl }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/semicolon_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/semicolon_3.ma new file mode 100644 index 000000000..cd884bde6 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/semicolon_3.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ❨ term 46 hd1, break term 46 hd2 ❩; break term 46 tl )" + non associative with precedence 47 + for @{ 'Semicolon $hd1 $hd2 $tl }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/tuple_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/tuple_4.ma new file mode 100644 index 000000000..551ee0d94 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/tuple_4.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox ( 〈 term 46 x1, break term 46 x2 , break term 46 x3, break term 46 x4 〉 )" + non associative with precedence 55 + for @{ 'Tuple $x1 $x2 $x3 $x4 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/uniform_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/uniform_1.ma new file mode 100644 index 000000000..df29e6b1a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/uniform_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐔 ❨ break term 46 a ❩ )" + non associative with precedence 90 + for @{ 'Uniform $a }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/uparrow_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/uparrow_1.ma new file mode 100644 index 000000000..1402237cd --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/uparrow_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ↑ term 70 T )" + non associative with precedence 70 + for @{ 'UpArrow $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/uparrowstar_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/uparrowstar_2.ma new file mode 100644 index 000000000..50e07287a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/uparrowstar_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ↑*[ term 46 n ] break term 70 T )" + non associative with precedence 70 + for @{ 'UpArrowStar $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/updownarrowstar_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/updownarrowstar_1.ma new file mode 100644 index 000000000..26ac82e66 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/updownarrowstar_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ↕* term 46 T )" + non associative with precedence 46 + for @{ 'UpDownArrowStar $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/upspoon_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/upspoon_1.ma new file mode 100644 index 000000000..2c71ef371 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/upspoon_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ⫯ term 46 T )" + non associative with precedence 46 + for @{ 'UpSpoon $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/upspoonstar_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/upspoonstar_2.ma new file mode 100644 index 000000000..c9a1e3184 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/upspoonstar_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( ⫯*[ term 46 n ] break term 46 T )" + non associative with precedence 46 + for @{ 'UpSpoonStar $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/yes_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/yes_0.ma new file mode 100644 index 000000000..c321749ae --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/yes_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "Ⓣ" + non associative with precedence 55 + for @{'yes}. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/zeroone_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/zeroone_0.ma new file mode 100644 index 000000000..ff195abe1 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/zeroone_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "𝟘𝟙" + non associative with precedence 55 + for @{ 'ZeroOne }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/functions/zerozero_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/functions/zerozero_0.ma new file mode 100644 index 000000000..cb4b10dad --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/functions/zerozero_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "𝟘𝟘" + non associative with precedence 55 + for @{ 'ZeroZero }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/doteq_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/doteq_4.ma new file mode 100644 index 000000000..f3a39a720 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/doteq_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation < "hvbox( f1 ≐ break term 46 f2 )" + non associative with precedence 45 + for @{ 'DotEq $A $B $f1 $f2 }. + +notation > "hvbox( f1 ≐ break term 46 f2 )" + non associative with precedence 45 + for @{ 'DotEq ? ? $f1 $f2 }. + +notation > "hvbox( f1 ≐{ break term 46 A, break term 46 B } break term 46 f2 )" + non associative with precedence 45 + for @{ 'DotEq $A $B $f1 $f2 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/ideq_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/ideq_2.ma new file mode 100644 index 000000000..be8260416 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/ideq_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( f1 ≡ break term 46 f2 )" + non associative with precedence 45 + for @{ 'IdEq $f1 $f2 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/isdivergent_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/isdivergent_1.ma new file mode 100644 index 000000000..1a25c7878 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/isdivergent_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝛀❪ term 46 f ❫ )" + non associative with precedence 45 + for @{ 'IsDivergent $f }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/isfinite_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/isfinite_1.ma new file mode 100644 index 000000000..ac60a895b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/isfinite_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐅❪ term 46 f ❫ )" + non associative with precedence 45 + for @{ 'IsFinite $f }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/isidentity_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/isidentity_1.ma new file mode 100644 index 000000000..03fb76098 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/isidentity_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐈❪ term 46 f ❫ )" + non associative with precedence 45 + for @{ 'IsIdentity $f }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/isredtype_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/isredtype_2.ma new file mode 100644 index 000000000..58ac25631 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/isredtype_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐑𝐓❪ term 46 n, break term 46 c ❫ )" + non associative with precedence 45 + for @{ 'IsRedType $n $c }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/istotal_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/istotal_1.ma new file mode 100644 index 000000000..e26e9a3c5 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/istotal_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐓❪ term 46 f ❫ )" + non associative with precedence 45 + for @{ 'IsTotal $f }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/istype_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/istype_2.ma new file mode 100644 index 000000000..04c4927bd --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/istype_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐓❪ term 46 n, break term 46 c ❫ )" + non associative with precedence 45 + for @{ 'IsType $n $c }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/isuniform_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/isuniform_1.ma new file mode 100644 index 000000000..bc66e5c6d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/isuniform_1.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐔❪ term 46 f ❫ )" + non associative with precedence 45 + for @{ 'IsUniform $f }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/parallel_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/parallel_2.ma new file mode 100644 index 000000000..dbbc88185 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/parallel_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( f1 ∥ break term 46 f2 )" + non associative with precedence 45 + for @{ 'Parallel $f1 $f2 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/rafter_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/rafter_3.ma new file mode 100644 index 000000000..c54b60b71 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/rafter_3.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( f1 ⊚ break term 46 f2 ≘ break term 46 f )" + non associative with precedence 45 + for @{ 'RAfter $f1 $f2 $f }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/rat_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/rat_3.ma new file mode 100644 index 000000000..007b7f1a4 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/rat_3.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( @❪ term 46 T1 , break term 46 f ❫ ≘ break term 46 T2 )" + non associative with precedence 45 + for @{ 'RAt $T1 $f $T2 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/rcoafter_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/rcoafter_3.ma new file mode 100644 index 000000000..83fc39664 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/rcoafter_3.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( f1 ~⊚ break term 46 f2 ≘ break term 46 f )" + non associative with precedence 45 + for @{ 'RCoAfter $f1 $f2 $f }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/rcolength_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/rcolength_2.ma new file mode 100644 index 000000000..785c4cbc5 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/rcolength_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( 𝐂❪ term 46 f ❫ ≘ break term 46 n )" + non associative with precedence 45 + for @{ 'RCoLength $f $n }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/ringeq_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/ringeq_3.ma new file mode 100644 index 000000000..e8ca369b7 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/ringeq_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation < "hvbox( v1 ≗ break term 46 v2 )" + non associative with precedence 45 + for @{ 'RingEq $M $v1 $v2 }. + +notation > "hvbox( v1 ≗ break term 46 v2 )" + non associative with precedence 45 + for @{ 'RingEq ? $v1 $v2 }. + +notation > "hvbox( v1 ≗{ break term 46 M } break term 46 v2 )" + non associative with precedence 45 + for @{ 'RingEq $M $v1 $v2 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/rintersection_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/rintersection_3.ma new file mode 100644 index 000000000..e7e93d23c --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/rintersection_3.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( L1 ⋒ break term 46 L2 ≘ break term 46 L )" + non associative with precedence 45 + for @{ 'RIntersection $L1 $L2 $L }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/rminus_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/rminus_3.ma new file mode 100644 index 000000000..87177eb97 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/rminus_3.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( T1 ▭ break term 46 T2 ≘ break term 46 T )" + non associative with precedence 45 + for @{ 'RMinus $T1 $T2 $T }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/relations/runion_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/relations/runion_3.ma new file mode 100644 index 000000000..54b036675 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/relations/runion_3.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "hvbox( L1 ⋓ break term 46 L2 ≘ break term 46 L )" + non associative with precedence 45 + for @{ 'RUnion $L1 $L2 $L }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_2.ma new file mode 100644 index 000000000..854eb7b8c --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation > "hvbox(∧∧ term 34 P0 break & term 34 P1)" + non associative with precedence 35 + for @{ 'and $P0 $P1 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_3.ma new file mode 100644 index 000000000..03b0e7e29 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_3.ma @@ -0,0 +1,22 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple conjunction connective (3) *) + +notation "hvbox(∧∧ term 34 P0 break & term 34 P1 break & term 34 P2)" + non associative with precedence 35 + for @{ 'And $P0 $P1 $P2 }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_4.ma new file mode 100644 index 000000000..78c1f9963 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/and_4.ma @@ -0,0 +1,22 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple conjunction connective (4) *) + +notation "hvbox(∧∧ term 34 P0 break & term 34 P1 break & term 34 P2 break & term 34 P3)" + non associative with precedence 35 + for @{ 'And $P0 $P1 $P2 $P3 }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_2.ma new file mode 100644 index 000000000..77c7366a6 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_2.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (1, 2) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_3.ma new file mode 100644 index 000000000..89cc727bf --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (1, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_4.ma new file mode 100644 index 000000000..0fbf2a458 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_1_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (1, 4) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_2_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_2_2.ma new file mode 100644 index 000000000..ccef16288 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_2_2.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (2, 2) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_2_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_2_3.ma new file mode 100644 index 000000000..5e0dba550 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_2_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (2, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_1.ma new file mode 100644 index 000000000..f5c367157 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_1.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (3, 1) *) + +notation > "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex (λ${ident x0}.$P0) (λ${ident x0}.$P1) (λ${ident x0}.$P2) }. + +notation < "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex (λ${ident x0}:$T0.$P0) (λ${ident x0}:$T0.$P1) (λ${ident x0}:$T0.$P2) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_2.ma new file mode 100644 index 000000000..8ca34d307 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_2.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (3, 2) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) (λ${ident x0}.λ${ident x1}.$P2) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P2) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_3.ma new file mode 100644 index 000000000..6287d1a4e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (3, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_4.ma new file mode 100644 index 000000000..5f34348e3 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (3, 4) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_5.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_5.ma new file mode 100644 index 000000000..fab03970d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_3_5.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (3, 5) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_1.ma new file mode 100644 index 000000000..75ac29f16 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_1.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (4, 1) *) + +notation > "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex (λ${ident x0}.$P0) (λ${ident x0}.$P1) (λ${ident x0}.$P2) (λ${ident x0}.$P3) }. + +notation < "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex (λ${ident x0}:$T0.$P0) (λ${ident x0}:$T0.$P1) (λ${ident x0}:$T0.$P2) (λ${ident x0}:$T0.$P3) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_2.ma new file mode 100644 index 000000000..e8a6e9650 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_2.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (4, 2) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) (λ${ident x0}.λ${ident x1}.$P2) (λ${ident x0}.λ${ident x1}.$P3) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P3) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_3.ma new file mode 100644 index 000000000..2d52220e2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (4, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_4.ma new file mode 100644 index 000000000..9ab7a12d0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (4, 4) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_5.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_5.ma new file mode 100644 index 000000000..ab7b80d49 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_4_5.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (4, 5) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_1.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_1.ma new file mode 100644 index 000000000..a31168095 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_1.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (5, 1) *) + +notation > "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex (λ${ident x0}.$P0) (λ${ident x0}.$P1) (λ${ident x0}.$P2) (λ${ident x0}.$P3) (λ${ident x0}.$P4) }. + +notation < "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex (λ${ident x0}:$T0.$P0) (λ${ident x0}:$T0.$P1) (λ${ident x0}:$T0.$P2) (λ${ident x0}:$T0.$P3) (λ${ident x0}:$T0.$P4) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_2.ma new file mode 100644 index 000000000..52b614c19 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_2.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (5, 2) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) (λ${ident x0}.λ${ident x1}.$P2) (λ${ident x0}.λ${ident x1}.$P3) (λ${ident x0}.λ${ident x1}.$P4) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P4) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_3.ma new file mode 100644 index 000000000..f4a01f23a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (5, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_4.ma new file mode 100644 index 000000000..59e8cb89b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (5, 4) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_5.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_5.ma new file mode 100644 index 000000000..704b9de00 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_5.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (5, 5) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_6.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_6.ma new file mode 100644 index 000000000..d5dd2806c --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_6.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (5, 6) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex6 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P4) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex6 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P4) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_7.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_7.ma new file mode 100644 index 000000000..fb2986fbc --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_5_7.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (5, 7) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex7 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P4) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" + non associative with precedence 20 + for @{ 'Ex7 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P4) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_3.ma new file mode 100644 index 000000000..33dcc0d31 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (6, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P5) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P5) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_4.ma new file mode 100644 index 000000000..5b0aae453 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (6, 4) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P5) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P5) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_5.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_5.ma new file mode 100644 index 000000000..962185ec2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_5.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (6, 5) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P5) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P5) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_6.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_6.ma new file mode 100644 index 000000000..e3351ba35 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_6.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (6, 6) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex6 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P5) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex6 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P5) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_7.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_7.ma new file mode 100644 index 000000000..a699be8e9 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_7.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (6, 7) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex7 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P5) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex7 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P5) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_8.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_8.ma new file mode 100644 index 000000000..b7ba4f5c2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_8.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (6, 8) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex8 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P5) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex8 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P5) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_9.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_9.ma new file mode 100644 index 000000000..c7d473828 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_6_9.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (6, 9) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex9 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P5) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" + non associative with precedence 20 + for @{ 'Ex9 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P5) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_10.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_10.ma new file mode 100644 index 000000000..d6285b86b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_10.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (7, 10) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 , ident x9 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex10 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P6) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 , ident x9 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex10 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P6) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_3.ma new file mode 100644 index 000000000..35cf4ecc8 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (7, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P6) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P6) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_4.ma new file mode 100644 index 000000000..b40af123a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (7, 4) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P6) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P6) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_5.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_5.ma new file mode 100644 index 000000000..4ec1b7cce --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_5.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (7, 5) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P6) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P6) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_6.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_6.ma new file mode 100644 index 000000000..24892462d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_6.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (7, 6) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex6 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P6) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex6 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P6) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_7.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_7.ma new file mode 100644 index 000000000..9be29b5c1 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_7_7.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (7, 7) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex7 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P6) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" + non associative with precedence 20 + for @{ 'Ex7 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P6) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_8_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_8_4.ma new file mode 100644 index 000000000..baa422aaf --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_8_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (8, 4) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P6) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P7) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" + non associative with precedence 20 + for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P6) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P7) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_8_5.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_8_5.ma new file mode 100644 index 000000000..8a7bb8f14 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_8_5.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (8, 5) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P6) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P7) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" + non associative with precedence 20 + for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P6) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P7) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_9_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_9_3.ma new file mode 100644 index 000000000..609f6974d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/ex_9_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple existental quantifier (9, 3) *) + +notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7 break & term 19 P8)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P6) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P7) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P8) }. + +notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7 break & term 19 P8)" + non associative with precedence 20 + for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P6) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P7) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P8) }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/false_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/false_0.ma new file mode 100644 index 000000000..b96432510 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/false_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "⊥" + non associative with precedence 19 + for @{'false}. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_2.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_2.ma new file mode 100644 index 000000000..c5da136f2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_2.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation > "hvbox(∨∨ term 29 P0 break | term 29 P1)" + non associative with precedence 30 + for @{ 'or $P0 $P1 }. diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_3.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_3.ma new file mode 100644 index 000000000..3f8265443 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_3.ma @@ -0,0 +1,22 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple disjunction connective (3) *) + +notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2)" + non associative with precedence 30 + for @{ 'Or $P0 $P1 $P2 }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_4.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_4.ma new file mode 100644 index 000000000..5d5be50a4 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_4.ma @@ -0,0 +1,22 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple disjunction connective (4) *) + +notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2 break | term 29 P3)" + non associative with precedence 30 + for @{ 'Or $P0 $P1 $P2 $P3 }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_5.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_5.ma new file mode 100644 index 000000000..7f558933e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/or_5.ma @@ -0,0 +1,22 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +(* multiple disjunction connective (5) *) + +notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2 break | term 29 P3 break | term 29 P4)" + non associative with precedence 30 + for @{ 'Or $P0 $P1 $P2 $P3 $P4 }. + diff --git a/matita/matita/contribs/lambdadelta/ground/notation/xoa/true_0.ma b/matita/matita/contribs/lambdadelta/ground/notation/xoa/true_0.ma new file mode 100644 index 000000000..7a9ad4366 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/notation/xoa/true_0.ma @@ -0,0 +1,19 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) + +notation "⊤" + non associative with precedence 19 + for @{'true}. diff --git a/matita/matita/contribs/lambdadelta/ground/pull/pull_2.ma b/matita/matita/contribs/lambdadelta/ground/pull/pull_2.ma new file mode 100644 index 000000000..dd1411ebb --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/pull/pull_2.ma @@ -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 "basics/pts.ma". + +(* GENERATED LIBRARY ********************************************************) + +lemma pull_2 (A1:Type[0]) + (A2:Type[0]) + (A:A1→A2→Type[0]): + (∀x2,x1. A x1 x2) → + (∀x1,x2. A x1 x2). +/2 width=1 by/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/pull/pull_4.ma b/matita/matita/contribs/lambdadelta/ground/pull/pull_4.ma new file mode 100644 index 000000000..a2e0baffb --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/pull/pull_4.ma @@ -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 "basics/pts.ma". + +(* GENERATED LIBRARY ********************************************************) + +lemma pull_4 (A1:Type[0]) + (A2:A1→Type[0]) + (A3:∀x1.A2 x1→Type[0]) + (A4:Type[0]) + (A:∀x1:A1.∀x2:A2 x1.A3 x1 x2 → A4 → Type[0]): + (∀x4,x1,x2,x3. A x1 x2 x3 x4) → + (∀x1,x2,x3,x4. A x1 x2 x3 x4). +/2 width=1 by/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/mr2.ma b/matita/matita/contribs/lambdadelta/ground/relocation/mr2.ma new file mode 100644 index 000000000..0016e8c0d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/mr2.ma @@ -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 "ground/notation/functions/diamond_0.ma". +include "ground/notation/functions/semicolon_3.ma". +include "ground/lib/arith.ma". + +(* MULTIPLE RELOCATION WITH PAIRS *******************************************) + +inductive mr2: Type[0] := + | nil2 : mr2 + | cons2: nat → nat → mr2 → mr2. + +interpretation "nil (multiple relocation with pairs)" + 'Diamond = (nil2). + +interpretation "cons (multiple relocation with pairs)" + 'Semicolon hd1 hd2 tl = (cons2 hd1 hd2 tl). diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/mr2_append.ma b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_append.ma new file mode 100644 index 000000000..4be291f7c --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_append.ma @@ -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 "ground/notation/functions/append_2.ma". +include "ground/relocation/mr2.ma". + +(* MULTIPLE RELOCATION WITH PAIRS *******************************************) + +let rec mr2_append cs1 cs2 on cs1 ≝ + match cs1 with + [ nil2 ⇒ cs2 + | cons2 l m cs1 ⇒ ❨l, m❩; mr2_append cs1 cs2 + ]. + +interpretation "append (multiple relocation with pairs)" + 'Append cs1 cs2 = (mr2_append cs1 cs2). + +(* Basic properties *********************************************************) + +lemma mr2_append_nil (cs2): cs2 = ◊ @@ cs2. +// qed. + +lemma mr2_append_cons (l) (m) (cs1) (cs2): + ❨l, m❩; (cs1 @@ cs2) = (❨l, m❩; cs1) @@ cs2. +// qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/mr2_at.ma b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_at.ma new file mode 100644 index 000000000..51ac826b0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_at.ma @@ -0,0 +1,84 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/rat_3.ma". +include "ground/relocation/mr2.ma". + +(* MULTIPLE RELOCATION WITH PAIRS *******************************************) + +inductive at: mr2 → relation nat ≝ +| at_nil: ∀i. at (◊) i i +| at_lt : ∀cs,l,m,i1,i2. i1 < l → + at cs i1 i2 → at (❨l, m❩;cs) i1 i2 +| at_ge : ∀cs,l,m,i1,i2. l ≤ i1 → + at cs (i1 + m) i2 → at (❨l, m❩;cs) i1 i2 +. + +interpretation "application (multiple relocation with pairs)" + 'RAt i1 cs i2 = (at cs i1 i2). + +(* Basic inversion lemmas ***************************************************) + +fact at_inv_nil_aux: ∀cs,i1,i2. @❪i1, cs❫ ≘ i2 → cs = ◊ → i1 = i2. +#cs #i1 #i2 * -cs -i1 -i2 +[ // +| #cs #l #m #i1 #i2 #_ #_ #H destruct +| #cs #l #m #i1 #i2 #_ #_ #H destruct +] +qed-. + +lemma at_inv_nil: ∀i1,i2. @❪i1, ◊❫ ≘ i2 → i1 = i2. +/2 width=3 by at_inv_nil_aux/ qed-. + +fact at_inv_cons_aux: ∀cs,i1,i2. @❪i1, cs❫ ≘ i2 → + ∀l,m,cs0. cs = ❨l, m❩;cs0 → + i1 < l ∧ @❪i1, cs0❫ ≘ i2 ∨ + l ≤ i1 ∧ @❪i1 + m, cs0❫ ≘ i2. +#cs #i1 #i2 * -cs -i1 -i2 +[ #i #l #m #cs #H destruct +| #cs1 #l1 #m1 #i1 #i2 #Hil1 #Hi12 #l2 #m2 #cs2 #H destruct /3 width=1 by or_introl, conj/ +| #cs1 #l1 #m1 #i1 #i2 #Hli1 #Hi12 #l2 #m2 #cs2 #H destruct /3 width=1 by or_intror, conj/ +] +qed-. + +lemma at_inv_cons: ∀cs,l,m,i1,i2. @❪i1, ❨l, m❩;cs❫ ≘ i2 → + i1 < l ∧ @❪i1, cs❫ ≘ i2 ∨ + l ≤ i1 ∧ @❪i1 + m, cs❫ ≘ i2. +/2 width=3 by at_inv_cons_aux/ qed-. + +lemma at_inv_cons_lt: ∀cs,l,m,i1,i2. @❪i1, ❨l, m❩;cs❫ ≘ i2 → + i1 < l → @❪i1, cs❫ ≘ i2. +#cs #l #m #i1 #m2 #H +elim (at_inv_cons … H) -H * // #Hli1 #_ #Hi1l +elim (lt_le_false … Hi1l Hli1) +qed-. + +lemma at_inv_cons_ge: ∀cs,l,m,i1,i2. @❪i1, ❨l, m❩;cs❫ ≘ i2 → + l ≤ i1 → @❪i1 + m, cs❫ ≘ i2. +#cs #l #m #i1 #m2 #H +elim (at_inv_cons … H) -H * // #Hi1l #_ #Hli1 +elim (lt_le_false … Hi1l Hli1) +qed-. + +(* Main properties **********************************************************) + +theorem at_mono: ∀cs,i,i1. @❪i, cs❫ ≘ i1 → ∀i2. @❪i, cs❫ ≘ i2 → i1 = i2. +#cs #i #i1 #H elim H -cs -i -i1 +[ #i #x #H <(at_inv_nil … H) -x // +| #cs #l #m #i #i1 #Hil #_ #IHi1 #x #H + lapply (at_inv_cons_lt … H Hil) -H -Hil /2 width=1 by/ +| #cs #l #m #i #i1 #Hli #_ #IHi1 #x #H + lapply (at_inv_cons_ge … H Hli) -H -Hli /2 width=1 by/ +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/mr2_minus.ma b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_minus.ma new file mode 100644 index 000000000..422a635dc --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_minus.ma @@ -0,0 +1,74 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/rminus_3.ma". +include "ground/relocation/mr2.ma". + +(* MULTIPLE RELOCATION WITH PAIRS *******************************************) + +inductive minuss: nat → relation mr2 ≝ +| minuss_nil: ∀i. minuss i (◊) (◊) +| minuss_lt : ∀cs1,cs2,l,m,i. i < l → minuss i cs1 cs2 → + minuss i (❨l, m❩;cs1) (❨l - i, m❩;cs2) +| minuss_ge : ∀cs1,cs2,l,m,i. l ≤ i → minuss (m + i) cs1 cs2 → + minuss i (❨l, m❩;cs1) cs2 +. + +interpretation "minus (multiple relocation with pairs)" + 'RMinus cs1 i cs2 = (minuss i cs1 cs2). + +(* Basic inversion lemmas ***************************************************) + +fact minuss_inv_nil1_aux: ∀cs1,cs2,i. cs1 ▭ i ≘ cs2 → cs1 = ◊ → cs2 = ◊. +#cs1 #cs2 #i * -cs1 -cs2 -i +[ // +| #cs1 #cs2 #l #m #i #_ #_ #H destruct +| #cs1 #cs2 #l #m #i #_ #_ #H destruct +] +qed-. + +lemma minuss_inv_nil1: ∀cs2,i. ◊ ▭ i ≘ cs2 → cs2 = ◊. +/2 width=4 by minuss_inv_nil1_aux/ qed-. + +fact minuss_inv_cons1_aux: ∀cs1,cs2,i. cs1 ▭ i ≘ cs2 → + ∀l,m,cs. cs1 = ❨l, m❩;cs → + l ≤ i ∧ cs ▭ m + i ≘ cs2 ∨ + ∃∃cs0. i < l & cs ▭ i ≘ cs0 & + cs2 = ❨l - i, m❩;cs0. +#cs1 #cs2 #i * -cs1 -cs2 -i +[ #i #l #m #cs #H destruct +| #cs1 #cs #l1 #m1 #i1 #Hil1 #Hcs #l2 #m2 #cs2 #H destruct /3 width=3 by ex3_intro, or_intror/ +| #cs1 #cs #l1 #m1 #i1 #Hli1 #Hcs #l2 #m2 #cs2 #H destruct /3 width=1 by or_introl, conj/ +] +qed-. + +lemma minuss_inv_cons1: ∀cs1,cs2,l,m,i. ❨l, m❩;cs1 ▭ i ≘ cs2 → + l ≤ i ∧ cs1 ▭ m + i ≘ cs2 ∨ + ∃∃cs. i < l & cs1 ▭ i ≘ cs & + cs2 = ❨l - i, m❩;cs. +/2 width=3 by minuss_inv_cons1_aux/ qed-. + +lemma minuss_inv_cons1_ge: ∀cs1,cs2,l,m,i. ❨l, m❩;cs1 ▭ i ≘ cs2 → + l ≤ i → cs1 ▭ m + i ≘ cs2. +#cs1 #cs2 #l #m #i #H +elim (minuss_inv_cons1 … H) -H * // #cs #Hil #_ #_ #Hli +elim (lt_le_false … Hil Hli) +qed-. + +lemma minuss_inv_cons1_lt: ∀cs1,cs2,l,m,i. ❨l, m❩;cs1 ▭ i ≘ cs2 → + i < l → + ∃∃cs. cs1 ▭ i ≘ cs & cs2 = ❨l - i, m❩;cs. +#cs1 #cs2 #l #m #i #H elim (minuss_inv_cons1 … H) -H * /2 width=3 by ex2_intro/ +#Hli #_ #Hil elim (lt_le_false … Hil Hli) +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/mr2_plus.ma b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_plus.ma new file mode 100644 index 000000000..07374a027 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/mr2_plus.ma @@ -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 "ground/relocation/mr2.ma". + +(* MULTIPLE RELOCATION WITH PAIRS *******************************************) + +rec definition pluss (cs:mr2) (i:nat) on cs ≝ match cs with +[ nil2 ⇒ ◊ +| cons2 l m cs ⇒ ❨l + i,m❩;pluss cs i +]. + +interpretation "plus (multiple relocation with pairs)" + 'plus x y = (pluss x y). + +(* Basic properties *********************************************************) + +lemma pluss_SO2: ∀l,m,cs. (❨l,m❩;cs) + 1 = ❨↑l,m❩;cs + 1. +normalize // qed. + +(* Basic inversion lemmas ***************************************************) + +lemma pluss_inv_nil2: ∀i,cs. cs + i = ◊ → cs = ◊. +#i * // normalize +#l #m #cs #H destruct +qed. + +lemma pluss_inv_cons2: ∀i,l,m,cs2,cs. cs + i = ❨l,m❩;cs2 → + ∃∃cs1. cs1 + i = cs2 & cs = ❨l - i,m❩;cs1. +#i #l #m #cs2 * +[ normalize #H destruct +| #l1 #m1 #cs1 whd in ⊢ (??%?→?); #H destruct + next_rew #H cases (compose_inv_S1 … H) -H * -n /3 width=5 by after_next/ +] +qed-. + +theorem after_total: ∀f1,f2. f2 ⊚ f1 ≘ f2 ∘ f1. +/2 width=1 by after_total_aux/ qed. + +(* Specific inversion lemmas on after ***************************************) + +lemma after_inv_xpx: ∀f2,g2,f,n2,n. n2⨮f2 ⊚ g2 ≘ n⨮f → ∀f1. ⫯f1 = g2 → + f2 ⊚ f1 ≘ f ∧ n2 = n. +#f2 #g2 #f #n2 elim n2 -n2 +[ #n #Hf #f1 #H2 elim (after_inv_ppx … Hf … H2) -g2 [2,3: // ] + #g #Hf #H elim (push_inv_seq_dx … H) -H destruct /2 width=1 by conj/ +| #n2 #IH #n #Hf #f1 #H2 elim (after_inv_nxx … Hf) -Hf [2,3: // ] + #g1 #Hg #H1 elim (next_inv_seq_dx … H1) -H1 + #x #Hx #H destruct elim (IH … Hg) [2,3: // ] -IH -Hg + #H destruct /2 width=1 by conj/ +] +qed-. + +lemma after_inv_xnx: ∀f2,g2,f,n2,n. n2⨮f2 ⊚ g2 ≘ n⨮f → ∀f1. ↑f1 = g2 → + ∃∃m. f2 ⊚ f1 ≘ m⨮f & ↑(n2+m) = n. +#f2 #g2 #f #n2 elim n2 -n2 +[ #n #Hf #f1 #H2 elim (after_inv_pnx … Hf … H2) -g2 [2,3: // ] + #g #Hf #H elim (next_inv_seq_dx … H) -H + #x #Hx #Hg destruct /2 width=3 by ex2_intro/ +| #n2 #IH #n #Hf #f1 #H2 elim (after_inv_nxx … Hf) -Hf [2,3: // ] + #g #Hg #H elim (next_inv_seq_dx … H) -H + #x #Hx #H destruct elim (IH … Hg) -IH -Hg [2,3: // ] + #m #Hf #Hm destruct /2 width=3 by ex2_intro/ +] +qed-. + +lemma after_inv_const: ∀f2,f1,f,n1,n. n⨮f2 ⊚ n1⨮f1 ≘ n⨮f → f2 ⊚ f1 ≘ f ∧ 0 = n1. +#f2 #f1 #f #n1 #n elim n -n +[ #H elim (after_inv_pxp … H) -H [ |*: // ] + #g2 #Hf #H elim (push_inv_seq_dx … H) -H /2 width=1 by conj/ +| #n #IH #H lapply (after_inv_nxn … H ????) -H /2 width=5 by/ +] +qed-. + +lemma after_inv_total: ∀f2,f1,f. f2 ⊚ f1 ≘ f → f2 ∘ f1 ≡ f. +/2 width=4 by after_mono/ qed-. + +(* Specific forward lemmas on after *****************************************) + +lemma after_fwd_hd: ∀f2,f1,f,n1,n. f2 ⊚ n1⨮f1 ≘ n⨮f → f2@❨n1❩ = n. +#f2 #f1 #f #n1 #n #H lapply (after_fwd_at ? n1 0 … H) -H [1,2,3: // ] +/3 width=2 by at_inv_O1, sym_eq/ +qed-. + +lemma after_fwd_tls: ∀f,f1,n1,f2,n2,n. n2⨮f2 ⊚ n1⨮f1 ≘ n⨮f → + (⫰*[n1]f2) ⊚ f1 ≘ f. +#f #f1 #n1 elim n1 -n1 +[ #f2 #n2 #n #H elim (after_inv_xpx … H) -H // +| #n1 #IH * #m1 #f2 #n2 #n #H elim (after_inv_xnx … H) -H [2,3: // ] + #m #Hm #H destruct /2 width=3 by/ +] +qed-. + +lemma after_inv_apply: ∀f2,f1,f,n2,n1,n. n2⨮f2 ⊚ n1⨮f1 ≘ n⨮f → + (n2⨮f2)@❨n1❩ = n ∧ (⫰*[n1]f2) ⊚ f1 ≘ f. +/3 width=3 by after_fwd_tls, after_fwd_hd, conj/ qed-. + +(* Properties on apply ******************************************************) + +lemma compose_apply (f2) (f1) (i): f2@❨f1@❨i❩❩ = (f2∘f1)@❨i❩. +/4 width=6 by after_fwd_at, at_inv_total, sym_eq/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/nstream_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_basic.ma new file mode 100644 index 000000000..703bee03d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_basic.ma @@ -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 "ground/relocation/rtmap_basic.ma". +include "ground/relocation/nstream_after.ma". + +(* RELOCATION N-STREAM ******************************************************) + +(* Specific properties on basic relocation **********************************) + +lemma apply_basic_lt: ∀m,n,i. i < m → 𝐁❨m,n❩@❨i❩ = i. +/3 width=1 by at_inv_total, at_basic_lt/ qed-. + +lemma apply_basic_ge: ∀m,n,i. m ≤ i → 𝐁❨m,n❩@❨i❩ = n+i. +/3 width=1 by at_inv_total, at_basic_ge/ qed-. + +(* Specific main properties on basic relocation *****************************) + +theorem basic_swap: ∀d1,d2. d2 ≤ d1 → + ∀h1,h2. 𝐁❨d2,h2❩∘𝐁❨d1,h1❩ ≡ 𝐁❨h2+d1,h1❩∘𝐁❨d2,h2❩. +#d1 #d2 #Hd21 #h1 #h2 +@nstream_inv_eq +@nstream_eq_inv_ext #i +(apply_basic_lt … Hd1) >(apply_basic_lt … Hd2) >apply_basic_lt + /2 width=1 by le_plus_a/ +| elim (lt_or_ge i d1) -Hd21 #Hd1 + [ >(apply_basic_lt … Hd1) >(apply_basic_ge … Hd2) >apply_basic_lt + /2 width=1 by monotonic_lt_plus_r/ + | >(apply_basic_ge … Hd1) >(apply_basic_ge … Hd2) + >apply_basic_ge [2: /2 width=1 by le_plus_a/ ] + >apply_basic_ge /2 width=1 by monotonic_le_plus_r/ + ] +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/nstream_coafter.ma b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_coafter.ma new file mode 100644 index 000000000..368647aee --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_coafter.ma @@ -0,0 +1,103 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/functions/cocompose_2.ma". +include "ground/relocation/rtmap_coafter.ma". + +(* RELOCATION N-STREAM ******************************************************) + +rec definition fun0 (n1:nat) on n1: rtmap → nat. +* * [ | #n2 #f2 @0 ] +#f2 cases n1 -n1 [ @0 ] +#n1 @(↑(fun0 n1 f2)) +defined. + +rec definition fun2 (n1:nat) on n1: rtmap → rtmap. +* * [ | #n2 #f2 @(n2⨮f2) ] +#f2 cases n1 -n1 [ @f2 ] +#n1 @(fun2 n1 f2) +defined. + +rec definition fun1 (n1:nat) (f1:rtmap) on n1: rtmap → rtmap. +* * [ | #n2 #f2 @(n1⨮f1) ] +#f2 cases n1 -n1 [ @f1 ] +#n1 @(fun1 n1 f1 f2) +defined. + +corec definition cocompose: rtmap → rtmap → rtmap. +#f2 * #n1 #f1 @(seq … (fun0 n1 f2)) @(cocompose (fun2 n1 f2) (fun1 n1 f1 f2)) +defined. + +interpretation "functional co-composition (nstream)" + 'CoCompose f1 f2 = (cocompose f1 f2). + +(* Basic properties on funs *************************************************) + +(* Note: we need theese since matita blocks recursive δ when ι is blocked *) +lemma fun0_xn: ∀f2,n1. 0 = fun0 n1 (↑f2). +* #n2 #f2 * // +qed. + +lemma fun2_xn: ∀f2,n1. f2 = fun2 n1 (↑f2). +* #n2 #f2 * // +qed. + +lemma fun1_xxn: ∀f2,f1,n1. fun1 n1 f1 (↑f2) = n1⨮f1. +* #n2 #f2 #f1 * // +qed. + +(* Basic properies on cocompose *********************************************) + +lemma cocompose_rew: ∀f2,f1,n1. (fun0 n1 f2)⨮(fun2 n1 f2)~∘(fun1 n1 f1 f2) = f2 ~∘ (n1⨮f1). +#f2 #f1 #n1 <(stream_rew … (f2~∘(n1⨮f1))) normalize // +qed. + +(* Basic inversion lemmas on compose ****************************************) + +lemma cocompose_inv_ppx: ∀f2,f1,f,x. (⫯f2) ~∘ (⫯f1) = x⨮f → + 0 = x ∧ f2 ~∘ f1 = f. +#f2 #f1 #f #x +next_rew #H cases (cocompose_inv_nxx … H) -H /3 width=5 by coafter_next/ +] +qed-. + +theorem coafter_total: ∀f2,f1. f2 ~⊚ f1 ≘ f2 ~∘ f1. +/2 width=1 by coafter_total_aux/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/nstream_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_eq.ma new file mode 100644 index 000000000..9678dcc5b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_eq.ma @@ -0,0 +1,55 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.tcs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +include "ground/relocation/rtmap_eq.ma". + +(* RELOCATION N-STREAM ******************************************************) + +(* Specific properties ******************************************************) + +fact eq_inv_seq_aux: ∀f1,f2,n1,n2. n1⨮f1 ≡ n2⨮f2 → n1 = n2 ∧ f1 ≡ f2. +#f1 #f2 #n1 #n2 @(nat_elim2 … n1 n2) -n1 -n2 +[ #n2 #H elim (eq_inv_px … H) -H [2,3: // ] + #g1 #H1 #H elim (push_inv_seq_dx … H) -H /2 width=1 by conj/ +| #n1 #H elim (eq_inv_np … H) -H // +| #n1 #n2 #IH #H lapply (eq_inv_nn … H ????) -H [1,2,3,4: // ] + #H elim (IH H) -IH -H /2 width=1 by conj/ +] +qed-. + +lemma eq_inv_seq: ∀g1,g2. g1 ≡ g2 → ∀f1,f2,n1,n2. n1⨮f1 = g1 → n2⨮f2 = g2 → + n1 = n2 ∧ f1 ≡ f2. +/2 width=1 by eq_inv_seq_aux/ qed-. + +corec lemma nstream_eq: ∀f1,f2. f1 ≡ f2 → f1 ≗ f2. +* #n1 #f1 * #n2 #f2 #Hf cases (eq_inv_gen … Hf) -Hf * +#g1 #g2 #Hg #H1 #H2 +[ cases (push_inv_seq_dx … H1) -H1 * -n1 #H1 + cases (push_inv_seq_dx … H2) -H2 * -n2 #H2 + @eq_seq /2 width=1 by/ +| cases (next_inv_seq_dx … H1) -H1 #m1 #H1 * -n1 + cases (next_inv_seq_dx … H2) -H2 #m2 #H2 * -n2 + cases (eq_inv_seq … Hg … H1 H2) -g1 -g2 #Hm #Hf + @eq_seq /2 width=1 by/ +] +qed-. + +corec lemma nstream_inv_eq: ∀f1,f2. f1 ≗ f2 → f1 ≡ f2. +* #n1 #f1 * #n2 #f2 #H cases (eq_stream_inv_seq ??? H) -H [2,3,4,5,6,7: // ] +#Hf * -n2 cases n1 -n1 /3 width=5 by eq_push/ +#n @eq_next /3 width=5 by eq_seq/ +qed. + +lemma eq_seq_id: ∀f1,f2. f1 ≡ f2 → ∀n. n⨮f1 ≡ n⨮f2. +/4 width=1 by nstream_inv_eq, nstream_eq, eq_seq/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/nstream_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_id.ma new file mode 100644 index 000000000..f3a1cce51 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_id.ma @@ -0,0 +1,33 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/functions/identity_0.ma". +include "ground/relocation/rtmap_eq.ma". + +(* RELOCATION N-STREAM ******************************************************) + +corec definition id: rtmap ≝ ⫯id. + +interpretation "identity (nstream)" + 'Identity = (id). + +(* Basic properties *********************************************************) + +lemma id_rew: ⫯𝐈𝐝 = 𝐈𝐝. +<(stream_rew … (𝐈𝐝)) in ⊢ (???%); normalize // +qed. + +lemma id_eq_rew: ⫯𝐈𝐝 ≡ 𝐈𝐝. +cases id_rew in ⊢ (??%); // +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/nstream_isid.ma b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_isid.ma new file mode 100644 index 000000000..48ab9aaa2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_isid.ma @@ -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 "ground/notation/functions/identity_0.ma". +include "ground/relocation/rtmap_isid.ma". + +(* RELOCATION N-STREAM ******************************************************) + +(* Specific inversion lemmas ************************************************) + +lemma isid_inv_seq: ∀f,n. 𝐈❪n⨮f❫ → 𝐈❪f❫ ∧ 0 = n. +#f #n #H elim (isid_inv_gen … H) -H +#g #Hg #H elim (push_inv_seq_dx … H) -H /2 width=1 by conj/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/nstream_istot.ma b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_istot.ma new file mode 100644 index 000000000..e1eaf0f27 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_istot.ma @@ -0,0 +1,120 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.tcs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +include "ground/notation/functions/apply_2.ma". +include "ground/relocation/nstream_eq.ma". +include "ground/relocation/rtmap_istot.ma". + +(* RELOCATION N-STREAM ******************************************************) + +rec definition apply (i: nat) on i: rtmap → nat ≝ ?. +* #n #f cases i -i +[ @n +| #i lapply (apply i f) -apply -i -f + #i @(↑(n+i)) +] +defined. + +interpretation "functional application (nstream)" + 'Apply f i = (apply i f). + +(* Specific properties on at ************************************************) + +lemma at_O1: ∀i2,f. @❪0, i2⨮f❫ ≘ i2. +#i2 elim i2 -i2 /2 width=5 by at_refl, at_next/ +qed. + +lemma at_S1: ∀n,f,i1,i2. @❪i1, f❫ ≘ i2 → @❪↑i1, n⨮f❫ ≘ ↑(n+i2). +#n elim n -n /3 width=7 by at_push, at_next/ +qed. + +lemma at_total: ∀i1,f. @❪i1, f❫ ≘ f@❨i1❩. +#i1 elim i1 -i1 +[ * // | #i #IH * /3 width=1 by at_S1/ ] +qed. + +lemma at_istot: ∀f. 𝐓❪f❫. +/2 width=2 by ex_intro/ qed. + +lemma at_plus2: ∀f,i1,i,n,m. @❪i1, n⨮f❫ ≘ i → @❪i1, (m+n)⨮f❫ ≘ m+i. +#f #i1 #i #n #m #H elim m -m // +#m apply_O1 >apply_O1 #H destruct + lapply (Hf (↑i)) >apply_S1 >apply_S1 #H + /3 width=2 by injective_plus_r, injective_S/ +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/nstream_sor.ma b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_sor.ma new file mode 100644 index 000000000..2e7758110 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/nstream_sor.ma @@ -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 "ground/relocation/rtmap_sor.ma". + +(* RELOCATION N-STREAM ******************************************************) + +axiom union: rtmap → rtmap → rtmap. + +interpretation "union (nstream)" + 'union f1 f2 = (union f1 f2). + +(* Specific properties on sor ***********************************************) + +axiom sor_total: ∀f1,f2. f1 ⋓ f2 ≘ f1 ∪ f2. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap.ma new file mode 100644 index 000000000..dd8e0288a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap.ma @@ -0,0 +1,21 @@ +(**************************************************************************) +(* ___ *) +(* ||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/relocation/nstream.ma". + +(* RELOCATION MAP ***********************************************************) + +lemma pn_split: ∀f. (∃g. ⫯g = f) ∨ (∃g. ↑g = f). +@case_prop /3 width=2 by or_introl, or_intror, ex_intro/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_after.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_after.ma new file mode 100644 index 000000000..ae6c2de4e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_after.ma @@ -0,0 +1,557 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/rafter_3.ma". +include "ground/relocation/rtmap_istot.ma". + +(* RELOCATION MAP ***********************************************************) + +coinductive after: relation3 rtmap rtmap rtmap ≝ +| after_refl: ∀f1,f2,f,g1,g2,g. + after f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → after g1 g2 g +| after_push: ∀f1,f2,f,g1,g2,g. + after f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → after g1 g2 g +| after_next: ∀f1,f2,f,g1,g. + after f1 f2 f → ↑f1 = g1 → ↑f = g → after g1 f2 g +. + +interpretation "relational composition (rtmap)" + 'RAfter f1 f2 f = (after f1 f2 f). + +definition H_after_inj: predicate rtmap ≝ + λf1. 𝐓❪f1❫ → + ∀f,f21,f22. f1 ⊚ f21 ≘ f → f1 ⊚ f22 ≘ f → f21 ≡ f22. + +(* Basic inversion lemmas ***************************************************) + +lemma after_inv_ppx: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → + ∃∃f. f1 ⊚ f2 ≘ f & ⫯f = g. +#g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 +[ #g2 #g #Hf #H1 #H2 #H #x1 #x2 #Hx1 #Hx2 destruct + >(injective_push … Hx1) >(injective_push … Hx2) -x2 -x1 + /2 width=3 by ex2_intro/ +| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct + elim (discr_push_next … Hx2) +| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct + elim (discr_push_next … Hx1) +] +qed-. + +lemma after_inv_pnx: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ⊚ f2 ≘ f & ↑f = g. +#g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 +[ #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct + elim (discr_next_push … Hx2) +| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct + >(injective_push … Hx1) >(injective_next … Hx2) -x2 -x1 + /2 width=3 by ex2_intro/ +| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct + elim (discr_push_next … Hx1) +] +qed-. + +lemma after_inv_nxx: ∀g1,f2,g. g1 ⊚ f2 ≘ g → ∀f1. ↑f1 = g1 → + ∃∃f. f1 ⊚ f2 ≘ f & ↑f = g. +#g1 #f2 #g * -g1 -f2 -g #f1 #f2 #f #g1 +[ #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct + elim (discr_next_push … Hx1) +| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct + elim (discr_next_push … Hx1) +| #g #Hf #H1 #H #x1 #Hx1 destruct + >(injective_next … Hx1) -x1 + /2 width=3 by ex2_intro/ +] +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma after_inv_ppp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → f1 ⊚ f2 ≘ f. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_ppx … Hg … H1 H2) -g1 -g2 +#x #Hf #Hx destruct <(injective_push … Hx) -f // +qed-. + +lemma after_inv_ppn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ↑f = g → ⊥. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_ppx … Hg … H1 H2) -g1 -g2 +#x #Hf #Hx destruct elim (discr_push_next … Hx) +qed-. + +lemma after_inv_pnn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ⊚ f2 ≘ f. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_pnx … Hg … H1 H2) -g1 -g2 +#x #Hf #Hx destruct <(injective_next … Hx) -f // +qed-. + +lemma after_inv_pnp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → ⊥. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_pnx … Hg … H1 H2) -g1 -g2 +#x #Hf #Hx destruct elim (discr_next_push … Hx) +qed-. + +lemma after_inv_nxn: ∀g1,f2,g. g1 ⊚ f2 ≘ g → + ∀f1,f. ↑f1 = g1 → ↑f = g → f1 ⊚ f2 ≘ f. +#g1 #f2 #g #Hg #f1 #f #H1 #H elim (after_inv_nxx … Hg … H1) -g1 +#x #Hf #Hx destruct <(injective_next … Hx) -f // +qed-. + +lemma after_inv_nxp: ∀g1,f2,g. g1 ⊚ f2 ≘ g → + ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥. +#g1 #f2 #g #Hg #f1 #f #H1 #H elim (after_inv_nxx … Hg … H1) -g1 +#x #Hf #Hx destruct elim (discr_next_push … Hx) +qed-. + +lemma after_inv_pxp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → + ∀f1,f. ⫯f1 = g1 → ⫯f = g → + ∃∃f2. f1 ⊚ f2 ≘ f & ⫯f2 = g2. +#g1 * * [2: #m2] #g2 #g #Hg #f1 #f #H1 #H +[ elim (after_inv_pnp … Hg … H1 … H) -g1 -g -f1 -f // +| lapply (after_inv_ppp … Hg … H1 … H) -g1 -g /2 width=3 by ex2_intro/ +] +qed-. + +lemma after_inv_pxn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → + ∀f1,f. ⫯f1 = g1 → ↑f = g → + ∃∃f2. f1 ⊚ f2 ≘ f & ↑f2 = g2. +#g1 * * [2: #m2] #g2 #g #Hg #f1 #f #H1 #H +[ lapply (after_inv_pnn … Hg … H1 … H) -g1 -g /2 width=3 by ex2_intro/ +| elim (after_inv_ppn … Hg … H1 … H) -g1 -g -f1 -f // +] +qed-. + +lemma after_inv_xxp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f. ⫯f = g → + ∃∃f1,f2. f1 ⊚ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2. +* * [2: #m1 ] #g1 #g2 #g #Hg #f #H +[ elim (after_inv_nxp … Hg … H) -g2 -g -f // +| elim (after_inv_pxp … Hg … H) -g /2 width=5 by ex3_2_intro/ +] +qed-. + +lemma after_inv_xxn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f. ↑f = g → + (∃∃f1,f2. f1 ⊚ f2 ≘ f & ⫯f1 = g1 & ↑f2 = g2) ∨ + ∃∃f1. f1 ⊚ g2 ≘ f & ↑f1 = g1. +* * [2: #m1 ] #g1 #g2 #g #Hg #f #H +[ /4 width=5 by after_inv_nxn, or_intror, ex2_intro/ +| elim (after_inv_pxn … Hg … H) -g + /3 width=5 by or_introl, ex3_2_intro/ +] +qed-. + +lemma after_inv_pxx: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f1. ⫯f1 = g1 → + (∃∃f2,f. f1 ⊚ f2 ≘ f & ⫯f2 = g2 & ⫯f = g) ∨ + (∃∃f2,f. f1 ⊚ f2 ≘ f & ↑f2 = g2 & ↑f = g). +#g1 * * [2: #m2 ] #g2 #g #Hg #f1 #H +[ elim (after_inv_pnx … Hg … H) -g1 + /3 width=5 by or_intror, ex3_2_intro/ +| elim (after_inv_ppx … Hg … H) -g1 + /3 width=5 by or_introl, ex3_2_intro/ +] +qed-. + +(* Basic properties *********************************************************) + +corec lemma after_eq_repl_back2: ∀f1,f. eq_repl_back (λf2. f2 ⊚ f1 ≘ f). +#f1 #f #f2 * -f2 -f1 -f +#f21 #f1 #f #g21 [1,2: #g1 ] #g #Hf #H21 [1,2: #H1 ] #H #g22 #H0 +[ cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by after_refl/ +| cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by after_push/ +| cases (eq_inv_nx … H0 … H21) -g21 /3 width=5 by after_next/ +] +qed-. + +lemma after_eq_repl_fwd2: ∀f1,f. eq_repl_fwd (λf2. f2 ⊚ f1 ≘ f). +#f1 #f @eq_repl_sym /2 width=3 by after_eq_repl_back2/ +qed-. + +corec lemma after_eq_repl_back1: ∀f2,f. eq_repl_back (λf1. f2 ⊚ f1 ≘ f). +#f2 #f #f1 * -f2 -f1 -f +#f2 #f11 #f #g2 [1,2: #g11 ] #g #Hf #H2 [1,2: #H11 ] #H #g2 #H0 +[ cases (eq_inv_px … H0 … H11) -g11 /3 width=7 by after_refl/ +| cases (eq_inv_nx … H0 … H11) -g11 /3 width=7 by after_push/ +| @(after_next … H2 H) /2 width=5 by/ +] +qed-. + +lemma after_eq_repl_fwd1: ∀f2,f. eq_repl_fwd (λf1. f2 ⊚ f1 ≘ f). +#f2 #f @eq_repl_sym /2 width=3 by after_eq_repl_back1/ +qed-. + +corec lemma after_eq_repl_back0: ∀f1,f2. eq_repl_back (λf. f2 ⊚ f1 ≘ f). +#f2 #f1 #f * -f2 -f1 -f +#f2 #f1 #f01 #g2 [1,2: #g1 ] #g01 #Hf01 #H2 [1,2: #H1 ] #H01 #g02 #H0 +[ cases (eq_inv_px … H0 … H01) -g01 /3 width=7 by after_refl/ +| cases (eq_inv_nx … H0 … H01) -g01 /3 width=7 by after_push/ +| cases (eq_inv_nx … H0 … H01) -g01 /3 width=5 by after_next/ +] +qed-. + +lemma after_eq_repl_fwd0: ∀f2,f1. eq_repl_fwd (λf. f2 ⊚ f1 ≘ f). +#f2 #f1 @eq_repl_sym /2 width=3 by after_eq_repl_back0/ +qed-. + +(* Main properties **********************************************************) + +corec theorem after_trans1: ∀f0,f3,f4. f0 ⊚ f3 ≘ f4 → + ∀f1,f2. f1 ⊚ f2 ≘ f0 → + ∀f. f2 ⊚ f3 ≘ f → f1 ⊚ f ≘ f4. +#f0 #f3 #f4 * -f0 -f3 -f4 #f0 #f3 #f4 #g0 [1,2: #g3 ] #g4 +[ #Hf4 #H0 #H3 #H4 #g1 #g2 #Hg0 #g #Hg + cases (after_inv_xxp … Hg0 … H0) -g0 + #f1 #f2 #Hf0 #H1 #H2 + cases (after_inv_ppx … Hg … H2 H3) -g2 -g3 + #f #Hf #H /3 width=7 by after_refl/ +| #Hf4 #H0 #H3 #H4 #g1 #g2 #Hg0 #g #Hg + cases (after_inv_xxp … Hg0 … H0) -g0 + #f1 #f2 #Hf0 #H1 #H2 + cases (after_inv_pnx … Hg … H2 H3) -g2 -g3 + #f #Hf #H /3 width=7 by after_push/ +| #Hf4 #H0 #H4 #g1 #g2 #Hg0 #g #Hg + cases (after_inv_xxn … Hg0 … H0) -g0 * + [ #f1 #f2 #Hf0 #H1 #H2 + cases (after_inv_nxx … Hg … H2) -g2 + #f #Hf #H /3 width=7 by after_push/ + | #f1 #Hf0 #H1 /3 width=6 by after_next/ + ] +] +qed-. + +corec theorem after_trans2: ∀f1,f0,f4. f1 ⊚ f0 ≘ f4 → + ∀f2, f3. f2 ⊚ f3 ≘ f0 → + ∀f. f1 ⊚ f2 ≘ f → f ⊚ f3 ≘ f4. +#f1 #f0 #f4 * -f1 -f0 -f4 #f1 #f0 #f4 #g1 [1,2: #g0 ] #g4 +[ #Hf4 #H1 #H0 #H4 #g2 #g3 #Hg0 #g #Hg + cases (after_inv_xxp … Hg0 … H0) -g0 + #f2 #f3 #Hf0 #H2 #H3 + cases (after_inv_ppx … Hg … H1 H2) -g1 -g2 + #f #Hf #H /3 width=7 by after_refl/ +| #Hf4 #H1 #H0 #H4 #g2 #g3 #Hg0 #g #Hg + cases (after_inv_xxn … Hg0 … H0) -g0 * + [ #f2 #f3 #Hf0 #H2 #H3 + cases (after_inv_ppx … Hg … H1 H2) -g1 -g2 + #f #Hf #H /3 width=7 by after_push/ + | #f2 #Hf0 #H2 + cases (after_inv_pnx … Hg … H1 H2) -g1 -g2 + #f #Hf #H /3 width=6 by after_next/ + ] +| #Hf4 #H1 #H4 #f2 #f3 #Hf0 #g #Hg + cases (after_inv_nxx … Hg … H1) -g1 + #f #Hg #H /3 width=6 by after_next/ +] +qed-. + +(* Main inversion lemmas ****************************************************) + +corec theorem after_mono: ∀f1,f2,x,y. f1 ⊚ f2 ≘ x → f1 ⊚ f2 ≘ y → x ≡ y. +#f1 #f2 #x #y * -f1 -f2 -x +#f1 #f2 #x #g1 [1,2: #g2 ] #g #Hx #H1 [1,2: #H2 ] #H0x #Hy +[ cases (after_inv_ppx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_push/ +| cases (after_inv_pnx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_next/ +| cases (after_inv_nxx … Hy … H1) -g1 /3 width=8 by eq_next/ +] +qed-. + +lemma after_mono_eq: ∀f1,f2,f. f1 ⊚ f2 ≘ f → ∀g1,g2,g. g1 ⊚ g2 ≘ g → + f1 ≡ g1 → f2 ≡ g2 → f ≡ g. +/4 width=4 by after_mono, after_eq_repl_back1, after_eq_repl_back2/ qed-. + +(* Properties on tls ********************************************************) + +lemma after_tls: ∀n,f1,f2,f. @❪0, f1❫ ≘ n → + f1 ⊚ f2 ≘ f → ⫱*[n]f1 ⊚ f2 ≘ ⫱*[n]f. +#n elim n -n // +#n #IH #f1 #f2 #f #Hf1 #Hf +cases (at_inv_pxn … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 +cases (after_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct +(injective_push … Hf) -g destruct /2 width=3 by ex2_intro/ +| #f #i1 #i2 #_ #g #j2 * #_ #x #x1 #_ #H elim (discr_push_next … H) +] +qed-. + +lemma at_inv_xnx: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g. ↑g = f → + ∃∃j2. @❪i1,g❫ ≘ j2 & ↑j2 = i2. +#f #i1 #i2 * -f -i1 -i2 +[ #f #g #j1 #j2 * #_ #_ #x #H elim (discr_next_push … H) +| #f #i1 #i2 #_ #g #j1 #j2 * #_ #_ #x #H elim (discr_next_push … H) +| #f #i1 #i2 #Hi #g #j2 * * #x #H >(injective_next … H) -g /2 width=3 by ex2_intro/ +] +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma at_inv_ppn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → + ∀g,j2. 0 = i1 → ⫯g = f → ↑j2 = i2 → ⊥. +#f #i1 #i2 #Hf #g #j2 #H1 #H <(at_inv_ppx … Hf … H1 H) -f -g -i1 -i2 +#H destruct +qed-. + +lemma at_inv_npp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → + ∀g,j1. ↑j1 = i1 → ⫯g = f → 0 = i2 → ⊥. +#f #i1 #i2 #Hf #g #j1 #H1 #H elim (at_inv_npx … Hf … H1 H) -f -i1 +#x2 #Hg * -i2 #H destruct +qed-. + +lemma at_inv_npn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → + ∀g,j1,j2. ↑j1 = i1 → ⫯g = f → ↑j2 = i2 → @❪j1,g❫ ≘ j2. +#f #i1 #i2 #Hf #g #j1 #j2 #H1 #H elim (at_inv_npx … Hf … H1 H) -f -i1 +#x2 #Hg * -i2 #H destruct // +qed-. + +lemma at_inv_xnp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → + ∀g. ↑g = f → 0 = i2 → ⊥. +#f #i1 #i2 #Hf #g #H elim (at_inv_xnx … Hf … H) -f +#x2 #Hg * -i2 #H destruct +qed-. + +lemma at_inv_xnn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → + ∀g,j2. ↑g = f → ↑j2 = i2 → @❪i1,g❫ ≘ j2. +#f #i1 #i2 #Hf #g #j2 #H elim (at_inv_xnx … Hf … H) -f +#x2 #Hg * -i2 #H destruct // +qed-. + +lemma at_inv_pxp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → 0 = i1 → 0 = i2 → ∃g. ⫯g = f. +#f elim (pn_split … f) * /2 width=2 by ex_intro/ +#g #H #i1 #i2 #Hf #H1 #H2 cases (at_inv_xnp … Hf … H H2) +qed-. + +lemma at_inv_pxn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀j2. 0 = i1 → ↑j2 = i2 → + ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f. +#f elim (pn_split … f) * +#g #H #i1 #i2 #Hf #j2 #H1 #H2 +[ elim (at_inv_ppn … Hf … H1 H H2) +| /3 width=5 by at_inv_xnn, ex2_intro/ +] +qed-. + +lemma at_inv_nxp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → + ∀j1. ↑j1 = i1 → 0 = i2 → ⊥. +#f elim (pn_split f) * +#g #H #i1 #i2 #Hf #j1 #H1 #H2 +[ elim (at_inv_npp … Hf … H1 H H2) +| elim (at_inv_xnp … Hf … H H2) +] +qed-. + +lemma at_inv_nxn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀j1,j2. ↑j1 = i1 → ↑j2 = i2 → + (∃∃g. @❪j1,g❫ ≘ j2 & ⫯g = f) ∨ + ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f. +#f elim (pn_split f) * +/4 width=7 by at_inv_xnn, at_inv_npn, ex2_intro, or_intror, or_introl/ +qed-. + +(* Note: the following inversion lemmas must be checked *) +lemma at_inv_xpx: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f → + (0 = i1 ∧ 0 = i2) ∨ + ∃∃j1,j2. @❪j1,g❫ ≘ j2 & ↑j1 = i1 & ↑j2 = i2. +#f * [2: #i1 ] #i2 #Hf #g #H +[ elim (at_inv_npx … Hf … H) -f /3 width=5 by or_intror, ex3_2_intro/ +| >(at_inv_ppx … Hf … H) -f /3 width=1 by conj, or_introl/ +] +qed-. + +lemma at_inv_xpp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f → 0 = i2 → 0 = i1. +#f #i1 #i2 #Hf #g #H elim (at_inv_xpx … Hf … H) -f * // +#j1 #j2 #_ #_ * -i2 #H destruct +qed-. + +lemma at_inv_xpn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g,j2. ⫯g = f → ↑j2 = i2 → + ∃∃j1. @❪j1,g❫ ≘ j2 & ↑j1 = i1. +#f #i1 #i2 #Hf #g #j2 #H elim (at_inv_xpx … Hf … H) -f * +[ #_ * -i2 #H destruct +| #x1 #x2 #Hg #H1 * -i2 #H destruct /2 width=3 by ex2_intro/ +] +qed-. + +lemma at_inv_xxp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → 0 = i2 → + ∃∃g. 0 = i1 & ⫯g = f. +#f elim (pn_split f) * +#g #H #i1 #i2 #Hf #H2 +[ /3 width=6 by at_inv_xpp, ex2_intro/ +| elim (at_inv_xnp … Hf … H H2) +] +qed-. + +lemma at_inv_xxn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀j2. ↑j2 = i2 → + (∃∃g,j1. @❪j1,g❫ ≘ j2 & ↑j1 = i1 & ⫯g = f) ∨ + ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f. +#f elim (pn_split f) * +#g #H #i1 #i2 #Hf #j2 #H2 +[ elim (at_inv_xpn … Hf … H H2) -i2 /3 width=5 by or_introl, ex3_2_intro/ +| lapply (at_inv_xnn … Hf … H H2) -i2 /3 width=3 by or_intror, ex2_intro/ +] +qed-. + +(* Basic forward lemmas *****************************************************) + +lemma at_increasing: ∀i2,i1,f. @❪i1,f❫ ≘ i2 → i1 ≤ i2. +#i2 elim i2 -i2 +[ #i1 #f #Hf elim (at_inv_xxp … Hf) -Hf // +| #i2 #IH * // + #i1 #f #Hf elim (at_inv_nxn … Hf) -Hf [1,4: * |*: // ] + /3 width=2 by le_S_S, le_S/ +] +qed-. + +lemma at_increasing_strict: ∀g,i1,i2. @❪i1,g❫ ≘ i2 → ∀f. ↑f = g → + i1 < i2 ∧ @❪i1,f❫ ≘ ↓i2. +#g #i1 #i2 #Hg #f #H elim (at_inv_xnx … Hg … H) -Hg -H +/4 width=2 by conj, at_increasing, le_S_S/ +qed-. + +lemma at_fwd_id_ex: ∀f,i. @❪i,f❫ ≘ i → ∃g. ⫯g = f. +#f elim (pn_split f) * /2 width=2 by ex_intro/ +#g #H #i #Hf elim (at_inv_xnx … Hf … H) -Hf -H +#j2 #Hg #H destruct lapply (at_increasing … Hg) -Hg +#H elim (lt_le_false … H) -H // +qed-. + +(* Basic properties *********************************************************) + +corec lemma at_eq_repl_back: ∀i1,i2. eq_repl_back (λf. @❪i1,f❫ ≘ i2). +#i1 #i2 #f1 #H1 cases H1 -f1 -i1 -i2 +[ #f1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12 cases (eq_inv_px … H12 … H) -g1 /2 width=2 by at_refl/ +| #f1 #i1 #i2 #Hf1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12 cases (eq_inv_px … H12 … H) -g1 /3 width=7 by at_push/ +| #f1 #i1 #i2 #Hf1 #g1 #j2 #H #H2 #f2 #H12 cases (eq_inv_nx … H12 … H) -g1 /3 width=5 by at_next/ +] +qed-. + +lemma at_eq_repl_fwd: ∀i1,i2. eq_repl_fwd (λf. @❪i1,f❫ ≘ i2). +#i1 #i2 @eq_repl_sym /2 width=3 by at_eq_repl_back/ +qed-. + +lemma at_le_ex: ∀j2,i2,f. @❪i2,f❫ ≘ j2 → ∀i1. i1 ≤ i2 → + ∃∃j1. @❪i1,f❫ ≘ j1 & j1 ≤ j2. +#j2 elim j2 -j2 [2: #j2 #IH ] #i2 #f #Hf +[ elim (at_inv_xxn … Hf) -Hf [1,3: * |*: // ] + #g [ #x2 ] #Hg [ #H2 ] #H0 + [ * /3 width=3 by at_refl, ex2_intro/ + #i1 #Hi12 destruct lapply (le_S_S_to_le … Hi12) -Hi12 + #Hi12 elim (IH … Hg … Hi12) -x2 -IH + /3 width=7 by at_push, ex2_intro, le_S_S/ + | #i1 #Hi12 elim (IH … Hg … Hi12) -IH -i2 + /3 width=5 by at_next, ex2_intro, le_S_S/ + ] +| elim (at_inv_xxp … Hf) -Hf // + #g * -i2 #H2 #i1 #Hi12 <(le_n_O_to_eq … Hi12) + /3 width=3 by at_refl, ex2_intro/ +] +qed-. + +lemma at_id_le: ∀i1,i2. i1 ≤ i2 → ∀f. @❪i2,f❫ ≘ i2 → @❪i1,f❫ ≘ i1. +#i1 #i2 #H @(le_elim … H) -i1 -i2 [ #i2 | #i1 #i2 #IH ] +#f #Hf elim (at_fwd_id_ex … Hf) /4 width=7 by at_inv_npn, at_push, at_refl/ +qed-. + +(* Main properties **********************************************************) + +theorem at_monotonic: ∀j2,i2,f. @❪i2,f❫ ≘ j2 → ∀j1,i1. @❪i1,f❫ ≘ j1 → + i1 < i2 → j1 < j2. +#j2 elim j2 -j2 +[ #i2 #f #H2f elim (at_inv_xxp … H2f) -H2f // + #g #H21 #_ #j1 #i1 #_ #Hi elim (lt_le_false … Hi) -Hi // +| #j2 #IH #i2 #f #H2f * // + #j1 #i1 #H1f #Hi elim (lt_inv_gen … Hi) + #x2 #_ #H21 elim (at_inv_nxn … H2f … H21) -H2f [1,3: * |*: // ] + #g #H2g #H + [ elim (at_inv_xpn … H1f … H) -f + /4 width=8 by lt_S_S_to_lt, lt_S_S/ + | /4 width=8 by at_inv_xnn, lt_S_S/ + ] +] +qed-. + +theorem at_inv_monotonic: ∀j1,i1,f. @❪i1,f❫ ≘ j1 → ∀j2,i2. @❪i2,f❫ ≘ j2 → + j1 < j2 → i1 < i2. +#j1 elim j1 -j1 +[ #i1 #f #H1f elim (at_inv_xxp … H1f) -H1f // + #g * -i1 #H #j2 #i2 #H2f #Hj elim (lt_inv_O1 … Hj) -Hj + #x2 #H22 elim (at_inv_xpn … H2f … H H22) -f // +| #j1 #IH * + [ #f #H1f elim (at_inv_pxn … H1f) -H1f [ |*: // ] + #g #H1g #H #j2 #i2 #H2f #Hj elim (lt_inv_S1 … Hj) -Hj + /3 width=7 by at_inv_xnn/ + | #i1 #f #H1f #j2 #i2 #H2f #Hj elim (lt_inv_S1 … Hj) -Hj + #y2 #Hj #H22 elim (at_inv_nxn … H1f) -H1f [1,4: * |*: // ] + #g #Hg #H + [ elim (at_inv_xpn … H2f … H H22) -f -H22 + /3 width=7 by lt_S_S/ + | /3 width=7 by at_inv_xnn/ + ] + ] +] +qed-. + +theorem at_mono: ∀f,i,i1. @❪i,f❫ ≘ i1 → ∀i2. @❪i,f❫ ≘ i2 → i2 = i1. +#f #i #i1 #H1 #i2 #H2 elim (lt_or_eq_or_gt i2 i1) // +#Hi elim (lt_le_false i i) /3 width=6 by at_inv_monotonic, eq_sym/ +qed-. + +theorem at_inj: ∀f,i1,i. @❪i1,f❫ ≘ i → ∀i2. @❪i2,f❫ ≘ i → i1 = i2. +#f #i1 #i #H1 #i2 #H2 elim (lt_or_eq_or_gt i2 i1) // +#Hi elim (lt_le_false i i) /3 width=6 by at_monotonic, eq_sym/ +qed-. + +theorem at_div_comm: ∀f2,g2,f1,g1. + H_at_div f2 g2 f1 g1 → H_at_div g2 f2 g1 f1. +#f2 #g2 #f1 #g1 #IH #jg #jf #j #Hg #Hf +elim (IH … Hf Hg) -IH -j /2 width=3 by ex2_intro/ +qed-. + +theorem at_div_pp: ∀f2,g2,f1,g1. + H_at_div f2 g2 f1 g1 → H_at_div (⫯f2) (⫯g2) (⫯f1) (⫯g1). +#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg +elim (at_inv_xpx … Hf) -Hf [1,2: * |*: // ] +[ #H1 #H2 destruct -IH + lapply (at_inv_xpp … Hg ???) -Hg [4: |*: // ] #H destruct + /3 width=3 by at_refl, ex2_intro/ +| #xf #i #Hf2 #H1 #H2 destruct + lapply (at_inv_xpn … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct + elim (IH … Hf2 Hg2) -IH -i /3 width=9 by at_push, ex2_intro/ +] +qed-. + +theorem at_div_nn: ∀f2,g2,f1,g1. + H_at_div f2 g2 f1 g1 → H_at_div (↑f2) (↑g2) (f1) (g1). +#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg +elim (at_inv_xnx … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct +lapply (at_inv_xnn … Hg ????) -Hg [5: |*: // ] #Hg2 +elim (IH … Hf2 Hg2) -IH -i /2 width=3 by ex2_intro/ +qed-. + +theorem at_div_np: ∀f2,g2,f1,g1. + H_at_div f2 g2 f1 g1 → H_at_div (↑f2) (⫯g2) (f1) (↑g1). +#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg +elim (at_inv_xnx … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct +lapply (at_inv_xpn … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct +elim (IH … Hf2 Hg2) -IH -i /3 width=7 by at_next, ex2_intro/ +qed-. + +theorem at_div_pn: ∀f2,g2,f1,g1. + H_at_div f2 g2 f1 g1 → H_at_div (⫯f2) (↑g2) (↑f1) (g1). +/4 width=6 by at_div_np, at_div_comm/ qed-. + +(* Properties on tls ********************************************************) + +lemma at_pxx_tls: ∀n,f. @❪0,f❫ ≘ n → @❪0,⫱*[n]f❫ ≘ 0. +#n elim n -n // +#n #IH #f #Hf +cases (at_inv_pxn … Hf) -Hf [ |*: // ] #g #Hg #H0 destruct +(injective_push … Hx1) >(injective_push … Hx2) -x2 -x1 + /2 width=3 by ex2_intro/ +| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct + elim (discr_push_next … Hx2) +| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct + elim (discr_push_next … Hx1) +] +qed-. + +lemma coafter_inv_pnx: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ~⊚ f2 ≘ f & ↑f = g. +#g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 +[ #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct + elim (discr_next_push … Hx2) +| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct + >(injective_push … Hx1) >(injective_next … Hx2) -x2 -x1 + /2 width=3 by ex2_intro/ +| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct + elim (discr_push_next … Hx1) +] +qed-. + +lemma coafter_inv_nxx: ∀g1,f2,g. g1 ~⊚ f2 ≘ g → ∀f1. ↑f1 = g1 → + ∃∃f. f1 ~⊚ f2 ≘ f & ⫯f = g. +#g1 #f2 #g * -g1 -f2 -g #f1 #f2 #f #g1 +[ #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct + elim (discr_next_push … Hx1) +| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct + elim (discr_next_push … Hx1) +| #g #Hf #H1 #H #x1 #Hx1 destruct + >(injective_next … Hx1) -x1 + /2 width=3 by ex2_intro/ +] +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma coafter_inv_ppp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → f1 ~⊚ f2 ≘ f. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H +elim (coafter_inv_ppx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct +<(injective_push … Hx) -f // +qed-. + +lemma coafter_inv_ppn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ↑f = g → ⊥. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H +elim (coafter_inv_ppx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct +elim (discr_push_next … Hx) +qed-. + +lemma coafter_inv_pnn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ~⊚ f2 ≘ f. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H +elim (coafter_inv_pnx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct +<(injective_next … Hx) -f // +qed-. + +lemma coafter_inv_pnp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → ⊥. +#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H +elim (coafter_inv_pnx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct +elim (discr_next_push … Hx) +qed-. + +lemma coafter_inv_nxp: ∀g1,f2,g. g1 ~⊚ f2 ≘ g → + ∀f1,f. ↑f1 = g1 → ⫯f = g → f1 ~⊚ f2 ≘ f. +#g1 #f2 #g #Hg #f1 #f #H1 #H +elim (coafter_inv_nxx … Hg … H1) -g1 #x #Hf #Hx destruct +<(injective_push … Hx) -f // +qed-. + +lemma coafter_inv_nxn: ∀g1,f2,g. g1 ~⊚ f2 ≘ g → + ∀f1,f. ↑f1 = g1 → ↑f = g → ⊥. +#g1 #f2 #g #Hg #f1 #f #H1 #H +elim (coafter_inv_nxx … Hg … H1) -g1 #x #Hf #Hx destruct +elim (discr_push_next … Hx) +qed-. + +lemma coafter_inv_pxp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + ∀f1,f. ⫯f1 = g1 → ⫯f = g → + ∃∃f2. f1 ~⊚ f2 ≘ f & ⫯f2 = g2. +#g1 #g2 #g #Hg #f1 #f #H1 #H elim (pn_split g2) * #f2 #H2 +[ lapply (coafter_inv_ppp … Hg … H1 H2 H) -g1 -g /2 width=3 by ex2_intro/ +| elim (coafter_inv_pnp … Hg … H1 H2 H) +] +qed-. + +lemma coafter_inv_pxn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + ∀f1,f. ⫯f1 = g1 → ↑f = g → + ∃∃f2. f1 ~⊚ f2 ≘ f & ↑f2 = g2. +#g1 #g2 #g #Hg #f1 #f #H1 #H elim (pn_split g2) * #f2 #H2 +[ elim (coafter_inv_ppn … Hg … H1 H2 H) +| lapply (coafter_inv_pnn … Hg … H1 … H) -g1 -g /2 width=3 by ex2_intro/ +] +qed-. + +lemma coafter_inv_xxn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f. ↑f = g → + ∃∃f1,f2. f1 ~⊚ f2 ≘ f & ⫯f1 = g1 & ↑f2 = g2. +#g1 #g2 #g #Hg #f #H elim (pn_split g1) * #f1 #H1 +[ elim (coafter_inv_pxn … Hg … H1 H) -g /2 width=5 by ex3_2_intro/ +| elim (coafter_inv_nxn … Hg … H1 H) +] +qed-. + +lemma coafter_inv_xnn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + ∀f2,f. ↑f2 = g2 → ↑f = g → + ∃∃f1. f1 ~⊚ f2 ≘ f & ⫯f1 = g1. +#g1 #g2 #g #Hg #f2 #f #H2 destruct #H +elim (coafter_inv_xxn … Hg … H) -g +#z1 #z2 #Hf #H1 #H2 destruct /2 width=3 by ex2_intro/ +qed-. + +lemma coafter_inv_xxp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f. ⫯f = g → + (∃∃f1,f2. f1 ~⊚ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2) ∨ + ∃∃f1. f1 ~⊚ g2 ≘ f & ↑f1 = g1. +#g1 #g2 #g #Hg #f #H elim (pn_split g1) * #f1 #H1 +[ elim (coafter_inv_pxp … Hg … H1 H) -g + /3 width=5 by or_introl, ex3_2_intro/ +| /4 width=5 by coafter_inv_nxp, or_intror, ex2_intro/ +] +qed-. + +lemma coafter_inv_pxx: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f1. ⫯f1 = g1 → + (∃∃f2,f. f1 ~⊚ f2 ≘ f & ⫯f2 = g2 & ⫯f = g) ∨ + (∃∃f2,f. f1 ~⊚ f2 ≘ f & ↑f2 = g2 & ↑f = g). +#g1 #g2 #g #Hg #f1 #H1 elim (pn_split g2) * #f2 #H2 +[ elim (coafter_inv_ppx … Hg … H1 H2) -g1 + /3 width=5 by or_introl, ex3_2_intro/ +| elim (coafter_inv_pnx … Hg … H1 H2) -g1 + /3 width=5 by or_intror, ex3_2_intro/ +] +qed-. + +(* Basic properties *********************************************************) + +corec lemma coafter_eq_repl_back2: ∀f1,f. eq_repl_back (λf2. f2 ~⊚ f1 ≘ f). +#f1 #f #f2 * -f2 -f1 -f +#f21 #f1 #f #g21 [1,2: #g1 ] #g #Hf #H21 [1,2: #H1 ] #H #g22 #H0 +[ cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by coafter_refl/ +| cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by coafter_push/ +| cases (eq_inv_nx … H0 … H21) -g21 /3 width=5 by coafter_next/ +] +qed-. + +lemma coafter_eq_repl_fwd2: ∀f1,f. eq_repl_fwd (λf2. f2 ~⊚ f1 ≘ f). +#f1 #f @eq_repl_sym /2 width=3 by coafter_eq_repl_back2/ +qed-. + +corec lemma coafter_eq_repl_back1: ∀f2,f. eq_repl_back (λf1. f2 ~⊚ f1 ≘ f). +#f2 #f #f1 * -f2 -f1 -f +#f2 #f11 #f #g2 [1,2: #g11 ] #g #Hf #H2 [1,2: #H11 ] #H #g2 #H0 +[ cases (eq_inv_px … H0 … H11) -g11 /3 width=7 by coafter_refl/ +| cases (eq_inv_nx … H0 … H11) -g11 /3 width=7 by coafter_push/ +| @(coafter_next … H2 H) /2 width=5 by/ +] +qed-. + +lemma coafter_eq_repl_fwd1: ∀f2,f. eq_repl_fwd (λf1. f2 ~⊚ f1 ≘ f). +#f2 #f @eq_repl_sym /2 width=3 by coafter_eq_repl_back1/ +qed-. + +corec lemma coafter_eq_repl_back0: ∀f1,f2. eq_repl_back (λf. f2 ~⊚ f1 ≘ f). +#f2 #f1 #f * -f2 -f1 -f +#f2 #f1 #f01 #g2 [1,2: #g1 ] #g01 #Hf01 #H2 [1,2: #H1 ] #H01 #g02 #H0 +[ cases (eq_inv_px … H0 … H01) -g01 /3 width=7 by coafter_refl/ +| cases (eq_inv_nx … H0 … H01) -g01 /3 width=7 by coafter_push/ +| cases (eq_inv_px … H0 … H01) -g01 /3 width=5 by coafter_next/ +] +qed-. + +lemma coafter_eq_repl_fwd0: ∀f2,f1. eq_repl_fwd (λf. f2 ~⊚ f1 ≘ f). +#f2 #f1 @eq_repl_sym /2 width=3 by coafter_eq_repl_back0/ +qed-. + +(* Main inversion lemmas ****************************************************) + +corec theorem coafter_mono: ∀f1,f2,x,y. f1 ~⊚ f2 ≘ x → f1 ~⊚ f2 ≘ y → x ≡ y. +#f1 #f2 #x #y * -f1 -f2 -x +#f1 #f2 #x #g1 [1,2: #g2 ] #g #Hx #H1 [1,2: #H2 ] #H0x #Hy +[ cases (coafter_inv_ppx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_push/ +| cases (coafter_inv_pnx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_next/ +| cases (coafter_inv_nxx … Hy … H1) -g1 /3 width=8 by eq_push/ +] +qed-. + +lemma coafter_mono_eq: ∀f1,f2,f. f1 ~⊚ f2 ≘ f → ∀g1,g2,g. g1 ~⊚ g2 ≘ g → + f1 ≡ g1 → f2 ≡ g2 → f ≡ g. +/4 width=4 by coafter_mono, coafter_eq_repl_back1, coafter_eq_repl_back2/ qed-. + +(* Forward lemmas with pushs ************************************************) + +lemma coafter_fwd_pushs: ∀j,i,g2,f1,g. g2 ~⊚ ⫯*[i]f1 ≘ g → @❪i, g2❫ ≘ j → + ∃f. ⫯*[j] f = g. +#j elim j -j +[ #i #g2 #f1 #g #Hg #H + elim (at_inv_xxp … H) -H [|*: // ] #f2 #H1 #H2 destruct + /2 width=2 by ex_intro/ +| #j #IH * [| #i ] #g2 #f1 #g #Hg #H + [ elim (at_inv_pxn … H) -H [|*: // ] #f2 #Hij #H destruct + elim (coafter_inv_nxx … Hg) -Hg [|*: // ] #f #Hf #H destruct + elim (IH … Hf Hij) -f1 -f2 -IH /2 width=2 by ex_intro/ + | elim (at_inv_nxn … H) -H [1,4: * |*: // ] #f2 #Hij #H destruct + [ elim (coafter_inv_ppx … Hg) -Hg [|*: // ] #f #Hf #H destruct + elim (IH … Hf Hij) -f1 -f2 -i /2 width=2 by ex_intro/ + | elim (coafter_inv_nxx … Hg) -Hg [|*: // ] #f #Hf #H destruct + elim (IH … Hf Hij) -f1 -f2 -i /2 width=2 by ex_intro/ + ] + ] +] +qed-. + +(* Inversion lemmas with tail ***********************************************) + +lemma coafter_inv_tl1: ∀g2,g1,g. g2 ~⊚ ⫱g1 ≘ g → + ∃∃f. ⫯g2 ~⊚ g1 ≘ f & ⫱f = g. +#g2 #g1 #g elim (pn_split g1) * #f1 #H1 #H destruct +[ /3 width=7 by coafter_refl, ex2_intro/ +| @(ex2_intro … (↑g)) /2 width=7 by coafter_push/ (**) (* full auto fails *) +] +qed-. + +lemma coafter_inv_tl0: ∀g2,g1,g. g2 ~⊚ g1 ≘ ⫱g → + ∃∃f1. ⫯g2 ~⊚ f1 ≘ g & ⫱f1 = g1. +#g2 #g1 #g elim (pn_split g) * #f #H0 #H destruct +[ /3 width=7 by coafter_refl, ex2_intro/ +| @(ex2_intro … (↑g1)) /2 width=7 by coafter_push/ (**) (* full auto fails *) +] +qed-. + +(* Properties with iterated tail ********************************************) + +lemma coafter_tls: ∀j,i,f1,f2,f. @❪i, f1❫ ≘ j → + f1 ~⊚ f2 ≘ f → ⫱*[j]f1 ~⊚ ⫱*[i]f2 ≘ ⫱*[j]f. +#j elim j -j [ #i | #j #IH * [| #i ] ] #f1 #f2 #f #Hf1 #Hf +[ elim (at_inv_xxp … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 destruct // +| elim (at_inv_pxn … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 + elim (coafter_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct + lapply (IH … Hg1 Hg) -IH -Hg1 -Hg // +| elim (at_inv_nxn … Hf1) -Hf1 [1,4: * |*: // ] #g1 #Hg1 #H1 + [ elim (coafter_inv_pxx … Hf … H1) -Hf * #g2 #g #Hg #H2 #H0 destruct + lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H // + | elim (coafter_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct + lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H // + ] +] +qed. + +lemma coafter_tls_O: ∀n,f1,f2,f. @❪0, f1❫ ≘ n → + f1 ~⊚ f2 ≘ f → ⫱*[n]f1 ~⊚ f2 ≘ ⫱*[n]f. +/2 width=1 by coafter_tls/ qed. + +lemma coafter_tls_succ: ∀g2,g1,g. g2 ~⊚ g1 ≘ g → + ∀n. @❪0, g2❫ ≘ n → ⫱*[↑n]g2 ~⊚ ⫱g1 ≘ ⫱*[↑n]g. +#g2 #g1 #g #Hg #n #Hg2 +lapply (coafter_tls … Hg2 … Hg) -Hg #Hg +lapply (at_pxx_tls … Hg2) -Hg2 #H +elim (at_inv_pxp … H) -H [ |*: // ] #f2 #H2 +elim (coafter_inv_pxx … Hg … H2) -Hg * #f1 #f #Hf #H1 #H0 destruct +(injective_next … H) -H // +qed-. + +lemma isdiv_inv_push: ∀g. 𝛀❪g❫ → ∀f. ⫯f = g → ⊥. +#g #H elim (isdiv_inv_gen … H) -H +#f #Hf * -g #g #H elim (discr_push_next … H) +qed-. + +(* Main inversion lemmas ****************************************************) + +corec theorem isdiv_inv_eq_repl: ∀f1,f2. 𝛀❪f1❫ → 𝛀❪f2❫ → f1 ≡ f2. +#f1 #f2 #H1 #H2 +cases (isdiv_inv_gen … H1) -H1 +cases (isdiv_inv_gen … H2) -H2 +/3 width=5 by eq_next/ +qed-. + +(* Basic properties *********************************************************) + +corec lemma isdiv_eq_repl_back: eq_repl_back … isdiv. +#f1 #H cases (isdiv_inv_gen … H) -H +#g1 #Hg1 #H1 #f2 #Hf cases (eq_inv_nx … Hf … H1) -f1 +/3 width=3 by isdiv_next/ +qed-. + +lemma isdiv_eq_repl_fwd: eq_repl_fwd … isdiv. +/3 width=3 by isdiv_eq_repl_back, eq_repl_sym/ qed-. + +(* Alternative definition ***************************************************) + +corec lemma eq_next_isdiv: ∀f. ↑f ≡ f → 𝛀❪f❫. +#f #H cases (eq_inv_nx … H) -H /4 width=3 by isdiv_next, eq_trans/ +qed. + +corec lemma eq_next_inv_isdiv: ∀f. 𝛀❪f❫ → ↑f ≡ f. +#f * -f +#f #g #Hf #Hg @(eq_next … Hg) [2: @eq_next_inv_isdiv // | skip ] +@eq_f // +qed-. + +(* Properties with iterated next ********************************************) + +lemma isdiv_nexts: ∀n,f. 𝛀❪f❫ → 𝛀❪↑*[n]f❫. +#n elim n -n /3 width=3 by isdiv_next/ +qed. + +(* Inversion lemmas with iterated next **************************************) + +lemma isdiv_inv_nexts: ∀n,g. 𝛀❪↑*[n]g❫ → 𝛀❪g❫. +#n elim n -n /3 width=3 by isdiv_inv_next/ +qed. + +(* Properties with tail *****************************************************) + +lemma isdiv_tl: ∀f. 𝛀❪f❫ → 𝛀❪⫱f❫. +#f cases (pn_split f) * #g * -f #H +[ elim (isdiv_inv_push … H) -H // +| /2 width=3 by isdiv_inv_next/ +] +qed. + +(* Properties with iterated tail ********************************************) + +lemma isdiv_tls: ∀n,g. 𝛀❪g❫ → 𝛀❪⫱*[n]g❫. +#n elim n -n /3 width=1 by isdiv_tl/ +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isfin.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isfin.ma new file mode 100644 index 000000000..5439f36ee --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isfin.ma @@ -0,0 +1,96 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/isfinite_1.ma". +include "ground/relocation/rtmap_fcla.ma". + +(* RELOCATION MAP ***********************************************************) + +definition isfin: predicate rtmap ≝ + λf. ∃n. 𝐂❪f❫ ≘ n. + +interpretation "test for finite colength (rtmap)" + 'IsFinite f = (isfin f). + +(* Basic eliminators ********************************************************) + +lemma isfin_ind (R:predicate rtmap): (∀f. 𝐈❪f❫ → R f) → + (∀f. 𝐅❪f❫ → R f → R (⫯f)) → + (∀f. 𝐅❪f❫ → R f → R (↑f)) → + ∀f. 𝐅❪f❫ → R f. +#R #IH1 #IH2 #IH3 #f #H elim H -H +#n #H elim H -f -n /3 width=2 by ex_intro/ +qed-. + +(* Basic inversion lemmas ***************************************************) + +lemma isfin_inv_push: ∀g. 𝐅❪g❫ → ∀f. ⫯f = g → 𝐅❪f❫. +#g * /3 width=4 by fcla_inv_px, ex_intro/ +qed-. + +lemma isfin_inv_next: ∀g. 𝐅❪g❫ → ∀f. ↑f = g → 𝐅❪f❫. +#g * #n #H #f #H0 elim (fcla_inv_nx … H … H0) -g +/2 width=2 by ex_intro/ +qed-. + +(* Basic properties *********************************************************) + +lemma isfin_eq_repl_back: eq_repl_back … isfin. +#f1 * /3 width=4 by fcla_eq_repl_back, ex_intro/ +qed-. + +lemma isfin_eq_repl_fwd: eq_repl_fwd … isfin. +/3 width=3 by isfin_eq_repl_back, eq_repl_sym/ qed-. + +lemma isfin_isid: ∀f. 𝐈❪f❫ → 𝐅❪f❫. +/3 width=2 by fcla_isid, ex_intro/ qed. + +lemma isfin_push: ∀f. 𝐅❪f❫ → 𝐅❪⫯f❫. +#f * /3 width=2 by fcla_push, ex_intro/ +qed. + +lemma isfin_next: ∀f. 𝐅❪f❫ → 𝐅❪↑f❫. +#f * /3 width=2 by fcla_next, ex_intro/ +qed. + +(* Properties with iterated push ********************************************) + +lemma isfin_pushs: ∀n,f. 𝐅❪f❫ → 𝐅❪⫯*[n]f❫. +#n elim n -n /3 width=3 by isfin_push/ +qed. + +(* Inversion lemmas with iterated push **************************************) + +lemma isfin_inv_pushs: ∀n,g. 𝐅❪⫯*[n]g❫ → 𝐅❪g❫. +#n elim n -n /3 width=3 by isfin_inv_push/ +qed. + +(* Properties with tail *****************************************************) + +lemma isfin_tl: ∀f. 𝐅❪f❫ → 𝐅❪⫱f❫. +#f elim (pn_split f) * #g #H #Hf destruct +/3 width=3 by isfin_inv_push, isfin_inv_next/ +qed. + +(* Inversion lemmas with tail ***********************************************) + +lemma isfin_inv_tl: ∀f. 𝐅❪⫱f❫ → 𝐅❪f❫. +#f elim (pn_split f) * /2 width=1 by isfin_next, isfin_push/ +qed-. + +(* Inversion lemmas with iterated tail **************************************) + +lemma isfin_inv_tls: ∀n,f. 𝐅❪⫱*[n]f❫ → 𝐅❪f❫. +#n elim n -n /3 width=1 by isfin_inv_tl/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isid.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isid.ma new file mode 100644 index 000000000..e43b0bc08 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isid.ma @@ -0,0 +1,103 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/isidentity_1.ma". +include "ground/relocation/rtmap_tls.ma". + +(* RELOCATION MAP ***********************************************************) + +coinductive isid: predicate rtmap ≝ +| isid_push: ∀f,g. isid f → ⫯f = g → isid g +. + +interpretation "test for identity (rtmap)" + 'IsIdentity f = (isid f). + +(* Basic inversion lemmas ***************************************************) + +lemma isid_inv_gen: ∀g. 𝐈❪g❫ → ∃∃f. 𝐈❪f❫ & ⫯f = g. +#g * -g +#f #g #Hf * /2 width=3 by ex2_intro/ +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma isid_inv_push: ∀g. 𝐈❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫. +#g #H elim (isid_inv_gen … H) -H +#f #Hf * -g #g #H >(injective_push … H) -H // +qed-. + +lemma isid_inv_next: ∀g. 𝐈❪g❫ → ∀f. ↑f = g → ⊥. +#g #H elim (isid_inv_gen … H) -H +#f #Hf * -g #g #H elim (discr_next_push … H) +qed-. + +(* Main inversion lemmas ****************************************************) + +corec theorem isid_inv_eq_repl: ∀f1,f2. 𝐈❪f1❫ → 𝐈❪f2❫ → f1 ≡ f2. +#f1 #f2 #H1 #H2 +cases (isid_inv_gen … H1) -H1 +cases (isid_inv_gen … H2) -H2 +/3 width=5 by eq_push/ +qed-. + +(* Basic properties *********************************************************) + +corec lemma isid_eq_repl_back: eq_repl_back … isid. +#f1 #H cases (isid_inv_gen … H) -H +#g1 #Hg1 #H1 #f2 #Hf cases (eq_inv_px … Hf … H1) -f1 +/3 width=3 by isid_push/ +qed-. + +lemma isid_eq_repl_fwd: eq_repl_fwd … isid. +/3 width=3 by isid_eq_repl_back, eq_repl_sym/ qed-. + +(* Alternative definition ***************************************************) + +corec lemma eq_push_isid: ∀f. ⫯f ≡ f → 𝐈❪f❫. +#f #H cases (eq_inv_px … H) -H /4 width=3 by isid_push, eq_trans/ +qed. + +corec lemma eq_push_inv_isid: ∀f. 𝐈❪f❫ → ⫯f ≡ f. +#f * -f +#f #g #Hf #Hg @(eq_push … Hg) [2: @eq_push_inv_isid // | skip ] +@eq_f // +qed-. + +(* Properties with iterated push ********************************************) + +lemma isid_pushs: ∀n,f. 𝐈❪f❫ → 𝐈❪⫯*[n]f❫. +#n elim n -n /3 width=3 by isid_push/ +qed. + +(* Inversion lemmas with iterated push **************************************) + +lemma isid_inv_pushs: ∀n,g. 𝐈❪⫯*[n]g❫ → 𝐈❪g❫. +#n elim n -n /3 width=3 by isid_inv_push/ +qed. + +(* Properties with tail *****************************************************) + +lemma isid_tl: ∀f. 𝐈❪f❫ → 𝐈❪⫱f❫. +#f cases (pn_split f) * #g * -f #H +[ /2 width=3 by isid_inv_push/ +| elim (isid_inv_next … H) -H // +] +qed. + +(* Properties with iterated tail ********************************************) + +lemma isid_tls: ∀n,g. 𝐈❪g❫ → 𝐈❪⫱*[n]g❫. +#n elim n -n /3 width=1 by isid_tl/ +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_istot.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_istot.ma new file mode 100644 index 000000000..472a66945 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_istot.ma @@ -0,0 +1,103 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/istotal_1.ma". +include "ground/relocation/rtmap_at.ma". + +(* RELOCATION MAP ***********************************************************) + +definition istot: predicate rtmap ≝ λf. ∀i. ∃j. @❪i,f❫ ≘ j. + +interpretation "test for totality (rtmap)" + 'IsTotal f = (istot f). + +(* Basic inversion lemmas ***************************************************) + +lemma istot_inv_push: ∀g. 𝐓❪g❫ → ∀f. ⫯f = g → 𝐓❪f❫. +#g #Hg #f #H #i elim (Hg (↑i)) -Hg +#j #Hg elim (at_inv_npx … Hg … H) -Hg -H /2 width=3 by ex_intro/ +qed-. + +lemma istot_inv_next: ∀g. 𝐓❪g❫ → ∀f. ↑f = g → 𝐓❪f❫. +#g #Hg #f #H #i elim (Hg i) -Hg +#j #Hg elim (at_inv_xnx … Hg … H) -Hg -H /2 width=2 by ex_intro/ +qed-. + +(* Properties on tl *********************************************************) + +lemma istot_tl: ∀f. 𝐓❪f❫ → 𝐓❪⫱f❫. +#f cases (pn_split f) * +#g * -f /2 width=3 by istot_inv_next, istot_inv_push/ +qed. + +(* Properties on tls ********************************************************) + +lemma istot_tls: ∀n,f. 𝐓❪f❫ → 𝐓❪⫱*[n]f❫. +#n elim n -n /3 width=1 by istot_tl/ +qed. + +(* Main forward lemmas on at ************************************************) + +corec theorem at_ext: ∀f1,f2. 𝐓❪f1❫ → 𝐓❪f2❫ → + (∀i,i1,i2. @❪i,f1❫ ≘ i1 → @❪i,f2❫ ≘ i2 → i1 = i2) → + f1 ≡ f2. +#f1 cases (pn_split f1) * #g1 #H1 +#f2 cases (pn_split f2) * #g2 #H2 +#Hf1 #Hf2 #Hi +[ @(eq_push … H1 H2) @at_ext -at_ext /2 width=3 by istot_inv_push/ -Hf1 -Hf2 + #i #i1 #i2 #Hg1 #Hg2 lapply (Hi (↑i) (↑i1) (↑i2) ??) /2 width=7 by at_push/ +| cases (Hf2 0) -Hf1 -Hf2 -at_ext + #j2 #Hf2 cases (at_increasing_strict … Hf2 … H2) -H2 + lapply (Hi 0 0 j2 … Hf2) /2 width=2 by at_refl/ -Hi -Hf2 -H1 + #H2 #H cases (lt_le_false … H) -H // +| cases (Hf1 0) -Hf1 -Hf2 -at_ext + #j1 #Hf1 cases (at_increasing_strict … Hf1 … H1) -H1 + lapply (Hi 0 j1 0 Hf1 ?) /2 width=2 by at_refl/ -Hi -Hf1 -H2 + #H1 #H cases (lt_le_false … H) -H // +| @(eq_next … H1 H2) @at_ext -at_ext /2 width=3 by istot_inv_next/ -Hf1 -Hf2 + #i #i1 #i2 #Hg1 #Hg2 lapply (Hi i (↑i1) (↑i2) ??) /2 width=5 by at_next/ +] +qed-. + +(* Advanced properties on at ************************************************) + +lemma at_dec: ∀f,i1,i2. 𝐓❪f❫ → Decidable (@❪i1,f❫ ≘ i2). +#f #i1 #i2 #Hf lapply (Hf i1) -Hf * +#j2 #Hf elim (eq_nat_dec i2 j2) +[ #H destruct /2 width=1 by or_introl/ +| /4 width=6 by at_mono, or_intror/ +] +qed-. + +lemma is_at_dec_le: ∀f,i2,i. 𝐓❪f❫ → (∀i1. i1 + i ≤ i2 → @❪i1,f❫ ≘ i2 → ⊥) → + Decidable (∃i1. @❪i1,f❫ ≘ i2). +#f #i2 #i #Hf elim i -i +[ #Ht @or_intror * /3 width=3 by at_increasing/ +| #i #IH #Ht elim (at_dec f (i2-i) i2) /3 width=2 by ex_intro, or_introl/ + #Hi2 @IH -IH #i1 #H #Hi elim (le_to_or_lt_eq … H) -H /2 width=3 by/ + #H destruct -Ht /2 width=1 by/ +] +qed-. + +lemma is_at_dec: ∀f,i2. 𝐓❪f❫ → Decidable (∃i1. @❪i1,f❫ ≘ i2). +#f #i2 #Hf @(is_at_dec_le ?? (↑i2)) /2 width=4 by lt_le_false/ +qed-. + +(* Advanced properties on isid **********************************************) + +lemma isid_at_total: ∀f. 𝐓❪f❫ → (∀i1,i2. @❪i1,f❫ ≘ i2 → i1 = i2) → 𝐈❪f❫. +#f #H1f #H2f @isid_at +#i lapply (H1f i) -H1f * +#j #Hf >(H2f … Hf) in ⊢ (???%); -H2f // +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isuni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isuni.ma new file mode 100644 index 000000000..0607f8343 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_isuni.ma @@ -0,0 +1,56 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/isuniform_1.ma". +include "ground/relocation/rtmap_isfin.ma". + +(* RELOCATION MAP ***********************************************************) + +inductive isuni: predicate rtmap ≝ +| isuni_isid: ∀f. 𝐈❪f❫ → isuni f +| isuni_next: ∀f. isuni f → ∀g. ↑f = g → isuni g +. + +interpretation "test for uniformity (rtmap)" + 'IsUniform f = (isuni f). + +(* Basic inversion lemmas ***************************************************) + +lemma isuni_inv_push: ∀g. 𝐔❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫. +#g * -g /2 width=3 by isid_inv_push/ +#f #_ #g #H #x #Hx destruct elim (discr_push_next … Hx) +qed-. + +lemma isuni_inv_next: ∀g. 𝐔❪g❫ → ∀f. ↑f = g → 𝐔❪f❫. +#g * -g #f #Hf +[ #x #Hx elim (isid_inv_next … Hf … Hx) +| #g #H #x #Hx destruct /2 width=1 by injective_push/ +] +qed-. + +lemma isuni_split: ∀g. 𝐔❪g❫ → (∃∃f. 𝐈❪f❫ & ⫯f = g) ∨ (∃∃f.𝐔❪f❫ & ↑f = g). +#g #H elim (pn_split g) * #f #Hf +/4 width=3 by isuni_inv_next, isuni_inv_push, or_introl, or_intror, ex2_intro/ +qed-. + +(* basic forward lemmas *****************************************************) + +lemma isuni_fwd_push: ∀g. 𝐔❪g❫ → ∀f. ⫯f = g → 𝐔❪f❫. +/3 width=3 by isuni_inv_push, isuni_isid/ qed-. + +(* Forward lemmas with test for finite colength *****************************) + +lemma isuni_fwd_isfin: ∀f. 𝐔❪f❫ → 𝐅❪f❫. +#f #H elim H -f /3 width=1 by isfin_next, isfin_isid/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_nexts.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_nexts.ma new file mode 100644 index 000000000..08851ebe6 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_nexts.ma @@ -0,0 +1,59 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/functions/uparrowstar_2.ma". +include "ground/relocation/rtmap_eq.ma". + +(* RELOCATION MAP ***********************************************************) + +rec definition nexts (f:rtmap) (n:nat) on n: rtmap ≝ match n with +[ O ⇒ f | S m ⇒ ↑(nexts f m) ]. + +interpretation "nexts (rtmap)" 'UpArrowStar n f = (nexts f n). + +(* Basic_inversion lemmas *****************************************************) + +lemma eq_inv_nexts_sn: ∀n,f1,g2. ↑*[n] f1 ≡ g2 → + ∃∃f2. f1 ≡ f2 & ↑*[n] f2 = g2. +#n elim n -n /2 width=3 by ex2_intro/ +#n #IH #f1 #g2 #H elim (eq_inv_nx … H) -H [|*: // ] +#f0 #Hf10 #H1 elim (IH … Hf10) -IH -Hf10 #f2 #Hf12 #H2 destruct +/2 width=3 by ex2_intro/ +qed-. + +lemma eq_inv_nexts_dx: ∀n,f2,g1. g1 ≡ ↑*[n] f2 → + ∃∃f1. f1 ≡ f2 & ↑*[n] f1 = g1. +#n elim n -n /2 width=3 by ex2_intro/ +#n #IH #f2 #g1 #H elim (eq_inv_xn … H) -H [|*: // ] +#f0 #Hf02 #H1 elim (IH … Hf02) -IH -Hf02 #f1 #Hf12 #H2 destruct +/2 width=3 by ex2_intro/ +qed-. + +(* Basic properties *********************************************************) + +lemma nexts_O: ∀f. f = ↑*[0] f. +// qed. + +lemma nexts_S: ∀f,n. ↑↑*[n] f = ↑*[↑n] f. +// qed. + +lemma nexts_eq_repl: ∀n. eq_repl (λf1,f2. ↑*[n] f1 ≡ ↑*[n] f2). +#n elim n -n /3 width=5 by eq_next/ +qed. + +(* Advanced properties ******************************************************) + +lemma nexts_xn: ∀n,f. ↑*[n] ↑f = ↑*[↑n] f. +#n elim n -n // +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_pushs.ma new file mode 100644 index 000000000..420143933 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_pushs.ma @@ -0,0 +1,59 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/functions/upspoonstar_2.ma". +include "ground/relocation/rtmap_eq.ma". + +(* RELOCATION MAP ***********************************************************) + +rec definition pushs (f:rtmap) (n:nat) on n: rtmap ≝ match n with +[ O ⇒ f | S m ⇒ ⫯(pushs f m) ]. + +interpretation "pushs (rtmap)" 'UpSpoonStar n f = (pushs f n). + +(* Basic_inversion lemmas *****************************************************) + +lemma eq_inv_pushs_sn: ∀n,f1,g2. ⫯*[n] f1 ≡ g2 → + ∃∃f2. f1 ≡ f2 & ⫯*[n] f2 = g2. +#n elim n -n /2 width=3 by ex2_intro/ +#n #IH #f1 #g2 #H elim (eq_inv_px … H) -H [|*: // ] +#f0 #Hf10 #H1 elim (IH … Hf10) -IH -Hf10 #f2 #Hf12 #H2 destruct +/2 width=3 by ex2_intro/ +qed-. + +lemma eq_inv_pushs_dx: ∀n,f2,g1. g1 ≡ ⫯*[n] f2 → + ∃∃f1. f1 ≡ f2 & ⫯*[n] f1 = g1. +#n elim n -n /2 width=3 by ex2_intro/ +#n #IH #f2 #g1 #H elim (eq_inv_xp … H) -H [|*: // ] +#f0 #Hf02 #H1 elim (IH … Hf02) -IH -Hf02 #f1 #Hf12 #H2 destruct +/2 width=3 by ex2_intro/ +qed-. + +(* Basic properties *********************************************************) + +lemma pushs_O: ∀f. f = ⫯*[0] f. +// qed. + +lemma pushs_S: ∀f,n. ⫯⫯*[n] f = ⫯*[↑n] f. +// qed. + +lemma pushs_eq_repl: ∀n. eq_repl (λf1,f2. ⫯*[n] f1 ≡ ⫯*[n] f2). +#n elim n -n /3 width=5 by eq_push/ +qed. + +(* Advanced properties ******************************************************) + +lemma pushs_xn: ∀n,f. ⫯*[n] ⫯f = ⫯*[↑n] f. +#n elim n -n // +qed. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sand.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sand.ma new file mode 100644 index 000000000..ad8db01d7 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sand.ma @@ -0,0 +1,118 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/rintersection_3.ma". +include "ground/relocation/rtmap_sle.ma". + +coinductive sand: relation3 rtmap rtmap rtmap ≝ +| sand_pp: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → sand g1 g2 g +| sand_np: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ⫯f = g → sand g1 g2 g +| sand_pn: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → sand g1 g2 g +| sand_nn: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → sand g1 g2 g +. + +interpretation "intersection (rtmap)" + 'RIntersection f1 f2 f = (sand f1 f2 f). + +(* Basic inversion lemmas ***************************************************) + +lemma sand_inv_ppx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ⫯f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +lemma sand_inv_npx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ⫯f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +lemma sand_inv_pnx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ⫯f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +lemma sand_inv_nnx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ↑f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +(* Basic properties *********************************************************) + +corec lemma sand_eq_repl_back1: ∀f2,f. eq_repl_back … (λf1. f1 ⋒ f2 ≘ f). +#f2 #f #f1 * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x #Hx +try cases (eq_inv_px … Hx … H1) try cases (eq_inv_nx … Hx … H1) -g1 +/3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ +qed-. + +lemma sand_eq_repl_fwd1: ∀f2,f. eq_repl_fwd … (λf1. f1 ⋒ f2 ≘ f). +#f2 #f @eq_repl_sym /2 width=3 by sand_eq_repl_back1/ +qed-. + +corec lemma sand_eq_repl_back2: ∀f1,f. eq_repl_back … (λf2. f1 ⋒ f2 ≘ f). +#f1 #f #f2 * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx +try cases (eq_inv_px … Hx … H2) try cases (eq_inv_nx … Hx … H2) -g2 +/3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ +qed-. + +lemma sand_eq_repl_fwd2: ∀f1,f. eq_repl_fwd … (λf2. f1 ⋒ f2 ≘ f). +#f1 #f @eq_repl_sym /2 width=3 by sand_eq_repl_back2/ +qed-. + +corec lemma sand_eq_repl_back3: ∀f1,f2. eq_repl_back … (λf. f1 ⋒ f2 ≘ f). +#f1 #f2 #f * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx +try cases (eq_inv_px … Hx … H0) try cases (eq_inv_nx … Hx … H0) -g +/3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ +qed-. + +lemma sand_eq_repl_fwd3: ∀f1,f2. eq_repl_fwd … (λf. f1 ⋒ f2 ≘ f). +#f1 #f2 @eq_repl_sym /2 width=3 by sand_eq_repl_back3/ +qed-. + +corec lemma sand_refl: ∀f. f ⋒ f ≘ f. +#f cases (pn_split f) * #g #H +[ @(sand_pp … H H H) | @(sand_nn … H H H) ] -H // +qed. + +corec lemma sand_sym: ∀f1,f2,f. f1 ⋒ f2 ≘ f → f2 ⋒ f1 ≘ f. +#f1 #f2 #f * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf * * * -g1 -g2 -g +[ @sand_pp | @sand_pn | @sand_np | @sand_nn ] /2 width=7 by/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sdj.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sdj.ma new file mode 100644 index 000000000..f46e66089 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sdj.ma @@ -0,0 +1,146 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.tcs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +include "ground/notation/relations/parallel_2.ma". +include "ground/relocation/rtmap_isid.ma". + +(* RELOCATION MAP ***********************************************************) + +coinductive sdj: relation rtmap ≝ +| sdj_pp: ∀f1,f2,g1,g2. sdj f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → sdj g1 g2 +| sdj_np: ∀f1,f2,g1,g2. sdj f1 f2 → ↑f1 = g1 → ⫯f2 = g2 → sdj g1 g2 +| sdj_pn: ∀f1,f2,g1,g2. sdj f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → sdj g1 g2 +. + +interpretation "disjointness (rtmap)" + 'Parallel f1 f2 = (sdj f1 f2). + +(* Basic properties *********************************************************) + +axiom sdj_eq_repl_back1: ∀f2. eq_repl_back … (λf1. f1 ∥ f2). + +lemma sdj_eq_repl_fwd1: ∀f2. eq_repl_fwd … (λf1. f1 ∥ f2). +#f2 @eq_repl_sym /2 width=3 by sdj_eq_repl_back1/ +qed-. + +axiom sdj_eq_repl_back2: ∀f1. eq_repl_back … (λf2. f1 ∥ f2). + +lemma sdj_eq_repl_fwd2: ∀f1. eq_repl_fwd … (λf2. f1 ∥ f2). +#f1 @eq_repl_sym /2 width=3 by sdj_eq_repl_back2/ +qed-. + +corec lemma sdj_sym: symmetric … sdj. +#f1 #f2 * -f1 -f2 +#f1 #f2 #g1 #g2 #Hf #H1 #H2 +[ @(sdj_pp … H2 H1) | @(sdj_pn … H2 H1) | @(sdj_np … H2 H1) ] -g2 -g1 +/2 width=1 by/ +qed-. + +(* Basic inversion lemmas ***************************************************) + +lemma sdj_inv_pp: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ∥ f2. +#g1 #g2 * -g1 -g2 +#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct +[ lapply (injective_push … Hx1) -Hx1 + lapply (injective_push … Hx2) -Hx2 // +| elim (discr_push_next … Hx1) +| elim (discr_push_next … Hx2) +] +qed-. + +lemma sdj_inv_np: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → f1 ∥ f2. +#g1 #g2 * -g1 -g2 +#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct +[ elim (discr_next_push … Hx1) +| lapply (injective_next … Hx1) -Hx1 + lapply (injective_push … Hx2) -Hx2 // +| elim (discr_push_next … Hx2) +] +qed-. + +lemma sdj_inv_pn: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → f1 ∥ f2. +#g1 #g2 * -g1 -g2 +#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct +[ elim (discr_next_push … Hx2) +| elim (discr_push_next … Hx1) +| lapply (injective_push … Hx1) -Hx1 + lapply (injective_next … Hx2) -Hx2 // +] +qed-. + +lemma sdj_inv_nn: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → ⊥. +#g1 #g2 * -g1 -g2 +#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct +[ elim (discr_next_push … Hx1) +| elim (discr_next_push … Hx2) +| elim (discr_next_push … Hx1) +] +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma sdj_inv_nx: ∀g1,g2. g1 ∥ g2 → ∀f1. ↑f1 = g1 → + ∃∃f2. f1 ∥ f2 & ⫯f2 = g2. +#g1 #g2 elim (pn_split g2) * #f2 #H2 #H #f1 #H1 +[ lapply (sdj_inv_np … H … H1 H2) -H /2 width=3 by ex2_intro/ +| elim (sdj_inv_nn … H … H1 H2) +] +qed-. + +lemma sdj_inv_xn: ∀g1,g2. g1 ∥ g2 → ∀f2. ↑f2 = g2 → + ∃∃f1. f1 ∥ f2 & ⫯f1 = g1. +#g1 #g2 elim (pn_split g1) * #f1 #H1 #H #f2 #H2 +[ lapply (sdj_inv_pn … H … H1 H2) -H /2 width=3 by ex2_intro/ +| elim (sdj_inv_nn … H … H1 H2) +] +qed-. + +lemma sdj_inv_xp: ∀g1,g2. g1 ∥ g2 → ∀f2. ⫯f2 = g2 → + ∨∨ ∃∃f1. f1 ∥ f2 & ⫯f1 = g1 + | ∃∃f1. f1 ∥ f2 & ↑f1 = g1. +#g1 #g2 elim (pn_split g1) * #f1 #H1 #H #f2 #H2 +[ lapply (sdj_inv_pp … H … H1 H2) | lapply (sdj_inv_np … H … H1 H2) ] -H -H2 +/3 width=3 by ex2_intro, or_introl, or_intror/ +qed-. + +lemma sdj_inv_px: ∀g1,g2. g1 ∥ g2 → ∀f1. ⫯f1 = g1 → + ∨∨ ∃∃f2. f1 ∥ f2 & ⫯f2 = g2 + | ∃∃f2. f1 ∥ f2 & ↑f2 = g2. +#g1 #g2 elim (pn_split g2) * #f2 #H2 #H #f1 #H1 +[ lapply (sdj_inv_pp … H … H1 H2) | lapply (sdj_inv_pn … H … H1 H2) ] -H -H1 +/3 width=3 by ex2_intro, or_introl, or_intror/ +qed-. + +(* Properties with isid *****************************************************) + +corec lemma sdj_isid_dx: ∀f2. 𝐈❪f2❫ → ∀f1. f1 ∥ f2. +#f2 * -f2 +#f2 #g2 #Hf2 #H2 #f1 cases (pn_split f1) * +/3 width=5 by sdj_np, sdj_pp/ +qed. + +corec lemma sdj_isid_sn: ∀f1. 𝐈❪f1❫ → ∀f2. f1 ∥ f2. +#f1 * -f1 +#f1 #g1 #Hf1 #H1 #f2 cases (pn_split f2) * +/3 width=5 by sdj_pn, sdj_pp/ +qed. + +(* Inversion lemmas with isid ***********************************************) + +corec lemma sdj_inv_refl: ∀f. f ∥ f → 𝐈❪f❫. +#f cases (pn_split f) * #g #Hg #H +[ lapply (sdj_inv_pp … H … Hg Hg) -H /3 width=3 by isid_push/ +| elim (sdj_inv_nn … H … Hg Hg) +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sle.ma new file mode 100644 index 000000000..edd962354 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sle.ma @@ -0,0 +1,189 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.tcs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +include "ground/relocation/rtmap_isid.ma". +include "ground/relocation/rtmap_isdiv.ma". + +(* RELOCATION MAP ***********************************************************) + +coinductive sle: relation rtmap ≝ +| sle_push: ∀f1,f2,g1,g2. sle f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → sle g1 g2 +| sle_next: ∀f1,f2,g1,g2. sle f1 f2 → ↑f1 = g1 → ↑f2 = g2 → sle g1 g2 +| sle_weak: ∀f1,f2,g1,g2. sle f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → sle g1 g2 +. + +interpretation "inclusion (rtmap)" + 'subseteq f1 f2 = (sle f1 f2). + +(* Basic properties *********************************************************) + +axiom sle_eq_repl_back1: ∀f2. eq_repl_back … (λf1. f1 ⊆ f2). + +lemma sle_eq_repl_fwd1: ∀f2. eq_repl_fwd … (λf1. f1 ⊆ f2). +#f2 @eq_repl_sym /2 width=3 by sle_eq_repl_back1/ +qed-. + +axiom sle_eq_repl_back2: ∀f1. eq_repl_back … (λf2. f1 ⊆ f2). + +lemma sle_eq_repl_fwd2: ∀f1. eq_repl_fwd … (λf2. f1 ⊆ f2). +#f1 @eq_repl_sym /2 width=3 by sle_eq_repl_back2/ +qed-. + +corec lemma sle_refl: ∀f. f ⊆ f. +#f cases (pn_split f) * #g #H +[ @(sle_push … H H) | @(sle_next … H H) ] -H // +qed. + +lemma sle_refl_eq: ∀f1,f2. f1 ≡ f2 → f1 ⊆ f2. +/2 width=3 by sle_eq_repl_back2/ qed. + +(* Basic inversion lemmas ***************************************************) + +lemma sle_inv_xp: ∀g1,g2. g1 ⊆ g2 → ∀f2. ⫯f2 = g2 → + ∃∃f1. f1 ⊆ f2 & ⫯f1 = g1. +#g1 #g2 * -g1 -g2 +#f1 #f2 #g1 #g2 #H #H1 #H2 #x2 #Hx2 destruct +[ lapply (injective_push … Hx2) -Hx2 /2 width=3 by ex2_intro/ ] +elim (discr_push_next … Hx2) +qed-. + +lemma sle_inv_nx: ∀g1,g2. g1 ⊆ g2 → ∀f1. ↑f1 = g1 → + ∃∃f2. f1 ⊆ f2 & ↑f2 = g2. +#g1 #g2 * -g1 -g2 +#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #Hx1 destruct +[2: lapply (injective_next … Hx1) -Hx1 /2 width=3 by ex2_intro/ ] +elim (discr_next_push … Hx1) +qed-. + +lemma sle_inv_pn: ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → f1 ⊆ f2. +#g1 #g2 * -g1 -g2 +#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct +[ elim (discr_next_push … Hx2) +| elim (discr_push_next … Hx1) +| lapply (injective_push … Hx1) -Hx1 + lapply (injective_next … Hx2) -Hx2 // +] +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma sle_inv_pp: ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ⊆ f2. +#g1 #g2 #H #f1 #f2 #H1 #H2 elim (sle_inv_xp … H … H2) -g2 +#x1 #H #Hx1 destruct lapply (injective_push … Hx1) -Hx1 // +qed-. + +lemma sle_inv_nn: ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → f1 ⊆ f2. +#g1 #g2 #H #f1 #f2 #H1 #H2 elim (sle_inv_nx … H … H1) -g1 +#x2 #H #Hx2 destruct lapply (injective_next … Hx2) -Hx2 // +qed-. + +lemma sle_inv_px: ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 → + (∃∃f2. f1 ⊆ f2 & ⫯f2 = g2) ∨ ∃∃f2. f1 ⊆ f2 & ↑f2 = g2. +#g1 #g2 elim (pn_split g2) * #f2 #H2 #H #f1 #H1 +[ lapply (sle_inv_pp … H … H1 H2) | lapply (sle_inv_pn … H … H1 H2) ] -H -H1 +/3 width=3 by ex2_intro, or_introl, or_intror/ +qed-. + +lemma sle_inv_xn: ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 → + (∃∃f1. f1 ⊆ f2 & ⫯f1 = g1) ∨ ∃∃f1. f1 ⊆ f2 & ↑f1 = g1. +#g1 #g2 elim (pn_split g1) * #f1 #H1 #H #f2 #H2 +[ lapply (sle_inv_pn … H … H1 H2) | lapply (sle_inv_nn … H … H1 H2) ] -H -H2 +/3 width=3 by ex2_intro, or_introl, or_intror/ +qed-. + +(* Main properties **********************************************************) + +corec theorem sle_trans: Transitive … sle. +#f1 #f * -f1 -f +#f1 #f #g1 #g #Hf #H1 #H #g2 #H0 +[ cases (sle_inv_px … H0 … H) * |*: cases (sle_inv_nx … H0 … H) ] -g +/3 width=5 by sle_push, sle_next, sle_weak/ +qed-. + +(* Properties with iteraded push ********************************************) + +lemma sle_pushs: ∀f1,f2. f1 ⊆ f2 → ∀i. ⫯*[i] f1 ⊆ ⫯*[i] f2. +#f1 #f2 #Hf12 #i elim i -i /2 width=5 by sle_push/ +qed. + +(* Properties with tail *****************************************************) + +lemma sle_px_tl: ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 → f1 ⊆ ⫱g2. +#g1 #g2 #H #f1 #H1 elim (sle_inv_px … H … H1) -H -H1 * // +qed. + +lemma sle_xn_tl: ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 → ⫱g1 ⊆ f2. +#g1 #g2 #H #f2 #H2 elim (sle_inv_xn … H … H2) -H -H2 * // +qed. + +lemma sle_tl: ∀f1,f2. f1 ⊆ f2 → ⫱f1 ⊆ ⫱f2. +#f1 elim (pn_split f1) * #g1 #H1 #f2 #H +[ lapply (sle_px_tl … H … H1) -H // +| elim (sle_inv_nx … H … H1) -H // +] +qed. + +(* Inversion lemmas with tail ***********************************************) + +lemma sle_inv_tl_sn: ∀f1,f2. ⫱f1 ⊆ f2 → f1 ⊆ ↑f2. +#f1 elim (pn_split f1) * #g1 #H destruct +/2 width=5 by sle_next, sle_weak/ +qed-. + +lemma sle_inv_tl_dx: ∀f1,f2. f1 ⊆ ⫱f2 → ⫯f1 ⊆ f2. +#f1 #f2 elim (pn_split f2) * #g2 #H destruct +/2 width=5 by sle_push, sle_weak/ +qed-. + +(* Properties with iteraded tail ********************************************) + +lemma sle_tls: ∀f1,f2. f1 ⊆ f2 → ∀i. ⫱*[i] f1 ⊆ ⫱*[i] f2. +#f1 #f2 #Hf12 #i elim i -i /2 width=5 by sle_tl/ +qed. + +(* Properties with isid *****************************************************) + +corec lemma sle_isid_sn: ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⊆ f2. +#f1 * -f1 +#f1 #g1 #Hf1 #H1 #f2 cases (pn_split f2) * +/3 width=5 by sle_weak, sle_push/ +qed. + +(* Inversion lemmas with isid ***********************************************) + +corec lemma sle_inv_isid_dx: ∀f1,f2. f1 ⊆ f2 → 𝐈❪f2❫ → 𝐈❪f1❫. +#f1 #f2 * -f1 -f2 +#f1 #f2 #g1 #g2 #Hf * * #H +[2,3: elim (isid_inv_next … H) // ] +lapply (isid_inv_push … H ??) -H +/3 width=3 by isid_push/ +qed-. + +(* Properties with isdiv ****************************************************) + +corec lemma sle_isdiv_dx: ∀f2. 𝛀❪f2❫ → ∀f1. f1 ⊆ f2. +#f2 * -f2 +#f2 #g2 #Hf2 #H2 #f1 cases (pn_split f1) * +/3 width=5 by sle_weak, sle_next/ +qed. + +(* Inversion lemmas with isdiv **********************************************) + +corec lemma sle_inv_isdiv_sn: ∀f1,f2. f1 ⊆ f2 → 𝛀❪f1❫ → 𝛀❪f2❫. +#f1 #f2 * -f1 -f2 +#f1 #f2 #g1 #g2 #Hf * * #H +[1,3: elim (isdiv_inv_push … H) // ] +lapply (isdiv_inv_next … H ??) -H +/3 width=3 by isdiv_next/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sor.ma b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sor.ma new file mode 100644 index 000000000..0b3f0ddaa --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/relocation/rtmap_sor.ma @@ -0,0 +1,552 @@ +(**************************************************************************) +(* ___ *) +(* ||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/xoa/ex_4_2.ma". +include "ground/notation/relations/runion_3.ma". +include "ground/relocation/rtmap_isfin.ma". +include "ground/relocation/rtmap_sle.ma". + +coinductive sor: relation3 rtmap rtmap rtmap ≝ +| sor_pp: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → sor g1 g2 g +| sor_np: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ↑f = g → sor g1 g2 g +| sor_pn: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → sor g1 g2 g +| sor_nn: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → sor g1 g2 g +. + +interpretation "union (rtmap)" + 'RUnion f1 f2 f = (sor f1 f2 f). + +(* Basic inversion lemmas ***************************************************) + +lemma sor_inv_ppx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → + ∃∃f. f1 ⋓ f2 ≘ f & ⫯f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +lemma sor_inv_npx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → + ∃∃f. f1 ⋓ f2 ≘ f & ↑f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +lemma sor_inv_pnx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ⋓ f2 ≘ f & ↑f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +lemma sor_inv_nnx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ⋓ f2 ≘ f & ↑f = g. +#g1 #g2 #g * -g1 -g2 -g +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct +try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) +try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) +try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) +try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) +/2 width=3 by ex2_intro/ +qed-. + +(* Advanced inversion lemmas ************************************************) + +lemma sor_inv_ppn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ↑f = g → ⊥. +#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 +elim (sor_inv_ppx … H … H1 H2) -g1 -g2 #x #_ #H destruct +/2 width=3 by discr_push_next/ +qed-. + +lemma sor_inv_nxp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥. +#g1 #g2 #g #H #f1 #f #H1 #H0 +elim (pn_split g2) * #f2 #H2 +[ elim (sor_inv_npx … H … H1 H2) +| elim (sor_inv_nnx … H … H1 H2) +] -g1 -g2 #x #_ #H destruct +/2 width=3 by discr_next_push/ +qed-. + +lemma sor_inv_xnp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f2,f. ↑f2 = g2 → ⫯f = g → ⊥. +#g1 #g2 #g #H #f2 #f #H2 #H0 +elim (pn_split g1) * #f1 #H1 +[ elim (sor_inv_pnx … H … H1 H2) +| elim (sor_inv_nnx … H … H1 H2) +] -g1 -g2 #x #_ #H destruct +/2 width=3 by discr_next_push/ +qed-. + +lemma sor_inv_ppp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → f1 ⋓ f2 ≘ f. +#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 +elim (sor_inv_ppx … H … H1 H2) -g1 -g2 #x #Hx #H destruct +<(injective_push … H) -f // +qed-. + +lemma sor_inv_npn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f2,f. ↑f1 = g1 → ⫯f2 = g2 → ↑f = g → f1 ⋓ f2 ≘ f. +#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 +elim (sor_inv_npx … H … H1 H2) -g1 -g2 #x #Hx #H destruct +<(injective_next … H) -f // +qed-. + +lemma sor_inv_pnn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ⋓ f2 ≘ f. +#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 +elim (sor_inv_pnx … H … H1 H2) -g1 -g2 #x #Hx #H destruct +<(injective_next … H) -f // +qed-. + +lemma sor_inv_nnn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f2,f. ↑f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ⋓ f2 ≘ f. +#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 +elim (sor_inv_nnx … H … H1 H2) -g1 -g2 #x #Hx #H destruct +<(injective_next … H) -f // +qed-. + +lemma sor_inv_pxp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f. ⫯f1 = g1 → ⫯f = g → + ∃∃f2. f1 ⋓ f2 ≘ f & ⫯f2 = g2. +#g1 #g2 #g #H #f1 #f #H1 #H0 +elim (pn_split g2) * #f2 #H2 +[ /3 width=7 by sor_inv_ppp, ex2_intro/ +| elim (sor_inv_xnp … H … H2 H0) +] +qed-. + +lemma sor_inv_xpp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f2,f. ⫯f2 = g2 → ⫯f = g → + ∃∃f1. f1 ⋓ f2 ≘ f & ⫯f1 = g1. +#g1 #g2 #g #H #f2 #f #H2 #H0 +elim (pn_split g1) * #f1 #H1 +[ /3 width=7 by sor_inv_ppp, ex2_intro/ +| elim (sor_inv_nxp … H … H1 H0) +] +qed-. + +lemma sor_inv_pxn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f. ⫯f1 = g1 → ↑f = g → + ∃∃f2. f1 ⋓ f2 ≘ f & ↑f2 = g2. +#g1 #g2 #g #H #f1 #f #H1 #H0 +elim (pn_split g2) * #f2 #H2 +[ elim (sor_inv_ppn … H … H1 H2 H0) +| /3 width=7 by sor_inv_pnn, ex2_intro/ +] +qed-. + +lemma sor_inv_xpn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f2,f. ⫯f2 = g2 → ↑f = g → + ∃∃f1. f1 ⋓ f2 ≘ f & ↑f1 = g1. +#g1 #g2 #g #H #f2 #f #H2 #H0 +elim (pn_split g1) * #f1 #H1 +[ elim (sor_inv_ppn … H … H1 H2 H0) +| /3 width=7 by sor_inv_npn, ex2_intro/ +] +qed-. + +lemma sor_inv_xxp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f. ⫯f = g → + ∃∃f1,f2. f1 ⋓ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2. +#g1 #g2 #g #H #f #H0 +elim (pn_split g1) * #f1 #H1 +[ elim (sor_inv_pxp … H … H1 H0) -g /2 width=5 by ex3_2_intro/ +| elim (sor_inv_nxp … H … H1 H0) +] +qed-. + +lemma sor_inv_nxn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f1,f. ↑f1 = g1 → ↑f = g → + (∃∃f2. f1 ⋓ f2 ≘ f & ⫯f2 = g2) ∨ + ∃∃f2. f1 ⋓ f2 ≘ f & ↑f2 = g2. +#g1 #g2 elim (pn_split g2) * +/4 width=7 by sor_inv_npn, sor_inv_nnn, ex2_intro, or_intror, or_introl/ +qed-. + +lemma sor_inv_xnn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → + ∀f2,f. ↑f2 = g2 → ↑f = g → + (∃∃f1. f1 ⋓ f2 ≘ f & ⫯f1 = g1) ∨ + ∃∃f1. f1 ⋓ f2 ≘ f & ↑f1 = g1. +#g1 elim (pn_split g1) * +/4 width=7 by sor_inv_pnn, sor_inv_nnn, ex2_intro, or_intror, or_introl/ +qed-. + +lemma sor_inv_xxn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f. ↑f = g → + ∨∨ ∃∃f1,f2. f1 ⋓ f2 ≘ f & ↑f1 = g1 & ⫯f2 = g2 + | ∃∃f1,f2. f1 ⋓ f2 ≘ f & ⫯f1 = g1 & ↑f2 = g2 + | ∃∃f1,f2. f1 ⋓ f2 ≘ f & ↑f1 = g1 & ↑f2 = g2. +#g1 #g2 #g #H #f #H0 +elim (pn_split g1) * #f1 #H1 +[ elim (sor_inv_pxn … H … H1 H0) -g + /3 width=5 by or3_intro1, ex3_2_intro/ +| elim (sor_inv_nxn … H … H1 H0) -g * + /3 width=5 by or3_intro0, or3_intro2, ex3_2_intro/ +] +qed-. + +(* Main inversion lemmas ****************************************************) + +corec theorem sor_mono: ∀f1,f2,x,y. f1 ⋓ f2 ≘ x → f1 ⋓ f2 ≘ y → x ≡ y. +#f1 #f2 #x #y * -f1 -f2 -x +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #H +[ cases (sor_inv_ppx … H … H1 H2) +| cases (sor_inv_npx … H … H1 H2) +| cases (sor_inv_pnx … H … H1 H2) +| cases (sor_inv_nnx … H … H1 H2) +] -g1 -g2 +/3 width=5 by eq_push, eq_next/ +qed-. + +(* Basic properties *********************************************************) + +corec lemma sor_eq_repl_back1: ∀f2,f. eq_repl_back … (λf1. f1 ⋓ f2 ≘ f). +#f2 #f #f1 * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x #Hx +try cases (eq_inv_px … Hx … H1) try cases (eq_inv_nx … Hx … H1) -g1 +/3 width=7 by sor_pp, sor_np, sor_pn, sor_nn/ +qed-. + +lemma sor_eq_repl_fwd1: ∀f2,f. eq_repl_fwd … (λf1. f1 ⋓ f2 ≘ f). +#f2 #f @eq_repl_sym /2 width=3 by sor_eq_repl_back1/ +qed-. + +corec lemma sor_eq_repl_back2: ∀f1,f. eq_repl_back … (λf2. f1 ⋓ f2 ≘ f). +#f1 #f #f2 * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx +try cases (eq_inv_px … Hx … H2) try cases (eq_inv_nx … Hx … H2) -g2 +/3 width=7 by sor_pp, sor_np, sor_pn, sor_nn/ +qed-. + +lemma sor_eq_repl_fwd2: ∀f1,f. eq_repl_fwd … (λf2. f1 ⋓ f2 ≘ f). +#f1 #f @eq_repl_sym /2 width=3 by sor_eq_repl_back2/ +qed-. + +corec lemma sor_eq_repl_back3: ∀f1,f2. eq_repl_back … (λf. f1 ⋓ f2 ≘ f). +#f1 #f2 #f * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx +try cases (eq_inv_px … Hx … H0) try cases (eq_inv_nx … Hx … H0) -g +/3 width=7 by sor_pp, sor_np, sor_pn, sor_nn/ +qed-. + +lemma sor_eq_repl_fwd3: ∀f1,f2. eq_repl_fwd … (λf. f1 ⋓ f2 ≘ f). +#f1 #f2 @eq_repl_sym /2 width=3 by sor_eq_repl_back3/ +qed-. + +corec lemma sor_idem: ∀f. f ⋓ f ≘ f. +#f cases (pn_split f) * #g #H +[ @(sor_pp … H H H) | @(sor_nn … H H H) ] -H // +qed. + +corec lemma sor_comm: ∀f1,f2,f. f1 ⋓ f2 ≘ f → f2 ⋓ f1 ≘ f. +#f1 #f2 #f * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf * * * -g1 -g2 -g +[ @sor_pp | @sor_pn | @sor_np | @sor_nn ] /2 width=7 by/ +qed-. + +(* Properties with tail *****************************************************) + +lemma sor_tl: ∀f1,f2,f. f1 ⋓ f2 ≘ f → ⫱f1 ⋓ ⫱f2 ≘ ⫱f. +#f1 cases (pn_split f1) * #g1 #H1 +#f2 cases (pn_split f2) * #g2 #H2 +#f #Hf +[ cases (sor_inv_ppx … Hf … H1 H2) +| cases (sor_inv_pnx … Hf … H1 H2) +| cases (sor_inv_npx … Hf … H1 H2) +| cases (sor_inv_nnx … Hf … H1 H2) +] -Hf #g #Hg #H destruct // +qed. + +lemma sor_xxn_tl: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f. ↑f = g → + (∃∃f1,f2. f1 ⋓ f2 ≘ f & ↑f1 = g1 & ⫱g2 = f2) ∨ + (∃∃f1,f2. f1 ⋓ f2 ≘ f & ⫱g1 = f1 & ↑f2 = g2). +#g1 #g2 #g #H #f #H0 elim (sor_inv_xxn … H … H0) -H -H0 * +/3 width=5 by ex3_2_intro, or_introl, or_intror/ +qed-. + +lemma sor_xnx_tl: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f2. ↑f2 = g2 → + ∃∃f1,f. f1 ⋓ f2 ≘ f & ⫱g1 = f1 & ↑f = g. +#g1 elim (pn_split g1) * #f1 #H1 #g2 #g #H #f2 #H2 +[ elim (sor_inv_pnx … H … H1 H2) | elim (sor_inv_nnx … H … H1 H2) ] -g2 +/3 width=5 by ex3_2_intro/ +qed-. + +lemma sor_nxx_tl: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1. ↑f1 = g1 → + ∃∃f2,f. f1 ⋓ f2 ≘ f & ⫱g2 = f2 & ↑f = g. +#g1 #g2 elim (pn_split g2) * #f2 #H2 #g #H #f1 #H1 +[ elim (sor_inv_npx … H … H1 H2) | elim (sor_inv_nnx … H … H1 H2) ] -g1 +/3 width=5 by ex3_2_intro/ +qed-. + +(* Properties with iterated tail ********************************************) + +lemma sor_tls: ∀f1,f2,f. f1 ⋓ f2 ≘ f → + ∀n. ⫱*[n]f1 ⋓ ⫱*[n]f2 ≘ ⫱*[n]f. +#f1 #f2 #f #Hf #n elim n -n /2 width=1 by sor_tl/ +qed. + +(* Properies with test for identity *****************************************) + +corec lemma sor_isid_sn: ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⋓ f2 ≘ f2. +#f1 * -f1 +#f1 #g1 #Hf1 #H1 #f2 cases (pn_split f2) * +/3 width=7 by sor_pp, sor_pn/ +qed. + +corec lemma sor_isid_dx: ∀f2. 𝐈❪f2❫ → ∀f1. f1 ⋓ f2 ≘ f1. +#f2 * -f2 +#f2 #g2 #Hf2 #H2 #f1 cases (pn_split f1) * +/3 width=7 by sor_pp, sor_np/ +qed. + +lemma sor_isid: ∀f1,f2,f. 𝐈❪f1❫ → 𝐈❪f2❫ → 𝐈❪f❫ → f1 ⋓ f2 ≘ f. +/4 width=3 by sor_eq_repl_back2, sor_eq_repl_back1, isid_inv_eq_repl/ qed. + +(* Inversion lemmas with tail ***********************************************) + +lemma sor_inv_tl_sn: ∀f1,f2,f. ⫱f1 ⋓ f2 ≘ f → f1 ⋓ ↑f2 ≘ ↑f. +#f1 #f2 #f elim (pn_split f1) * +#g1 #H destruct /2 width=7 by sor_pn, sor_nn/ +qed-. + +lemma sor_inv_tl_dx: ∀f1,f2,f. f1 ⋓ ⫱f2 ≘ f → ↑f1 ⋓ f2 ≘ ↑f. +#f1 #f2 #f elim (pn_split f2) * +#g2 #H destruct /2 width=7 by sor_np, sor_nn/ +qed-. + +(* Inversion lemmas with test for identity **********************************) + +lemma sor_isid_inv_sn: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f. +/3 width=4 by sor_isid_sn, sor_mono/ +qed-. + +lemma sor_isid_inv_dx: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f2❫ → f1 ≡ f. +/3 width=4 by sor_isid_dx, sor_mono/ +qed-. + +corec lemma sor_fwd_isid1: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫. +#f1 #f2 #f * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H #Hg +[ /4 width=6 by isid_inv_push, isid_push/ ] +cases (isid_inv_next … Hg … H) +qed-. + +corec lemma sor_fwd_isid2: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f2❫. +#f1 #f2 #f * -f1 -f2 -f +#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H #Hg +[ /4 width=6 by isid_inv_push, isid_push/ ] +cases (isid_inv_next … Hg … H) +qed-. + +lemma sor_inv_isid3: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫ ∧ 𝐈❪f2❫. +/3 width=4 by sor_fwd_isid2, sor_fwd_isid1, conj/ qed-. + +(* Properties with finite colength assignment *******************************) + +lemma sor_fcla_ex: ∀f1,n1. 𝐂❪f1❫ ≘ n1 → ∀f2,n2. 𝐂❪f2❫ ≘ n2 → + ∃∃f,n. f1 ⋓ f2 ≘ f & 𝐂❪f❫ ≘ n & (n1 ∨ n2) ≤ n & n ≤ n1 + n2. +#f1 #n1 #Hf1 elim Hf1 -f1 -n1 /3 width=6 by sor_isid_sn, ex4_2_intro/ +#f1 #n1 #Hf1 #IH #f2 #n2 * -f2 -n2 /3 width=6 by fcla_push, fcla_next, ex4_2_intro, sor_isid_dx/ +#f2 #n2 #Hf2 elim (IH … Hf2) -IH -Hf2 -Hf1 [2,4: #f #n (max_O2 n) /2 width=1 by isrt_max/ +qed. + +lemma isrt_max_idem1: ∀n,c1,c2. 𝐑𝐓❪n,c1❫ → 𝐑𝐓❪n,c2❫ → 𝐑𝐓❪n,c1∨c2❫. +#n #c1 #c2 #H1 #H2 >(idempotent_max n) /2 width=1 by isrt_max/ +qed. + +(* Inversion properties with test for constrained rt-transition counter *****) + +lemma isrt_inv_max: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → + ∃∃n1,n2. 𝐑𝐓❪n1,c1❫ & 𝐑𝐓❪n2,c2❫ & (n1 ∨ n2) = n. +#n #c1 #c2 * #ri #rs #H +elim (max_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #_ #_ #H1 #H2 #H3 #H4 +elim (max_inv_O3 … H1) -H1 /3 width=5 by ex3_2_intro, ex1_2_intro/ +qed-. + +lemma isrt_O_inv_max: ∀c1,c2. 𝐑𝐓❪0,c1 ∨ c2❫ → ∧∧ 𝐑𝐓❪0,c1❫ & 𝐑𝐓❪0,c2❫. +#c1 #c2 #H +elim (isrt_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H +elim (max_inv_O3 … H) -H #H1 #H2 destruct +/2 width=1 by conj/ +qed-. + +lemma isrt_inv_max_O_dx: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → 𝐑𝐓❪0,c2❫ → 𝐑𝐓❪n,c1❫. +#n #c1 #c2 #H #H2 +elim (isrt_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct +lapply (isrt_inj … Hn2 H2) -c2 #H destruct // +qed-. + +lemma isrt_inv_max_eq_t: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → eq_t c1 c2 → + ∧∧ 𝐑𝐓❪n,c1❫ & 𝐑𝐓❪n,c2❫. +#n #c1 #c2 #H #Hc12 +elim (isrt_inv_max … H) -H #n1 #n2 #Hc1 #Hc2 #H destruct +lapply (isrt_eq_t_trans … Hc1 … Hc12) -Hc12 #H +<(isrt_inj … H … Hc2) -Hc2 +(plus_n_O n) /2 width=1 by isrt_plus/ +qed. + +lemma isrt_succ: ∀n,c. 𝐑𝐓❪n,c❫ → 𝐑𝐓❪↑n,c+𝟘𝟙❫. +/2 width=1 by isrt_plus/ qed. + +(* Inversion properties with test for constrained rt-transition counter *****) + +lemma isrt_inv_plus: ∀n,c1,c2. 𝐑𝐓❪n,c1 + c2❫ → + ∃∃n1,n2. 𝐑𝐓❪n1,c1❫ & 𝐑𝐓❪n2,c2❫ & n1 + n2 = n. +#n #c1 #c2 * #ri #rs #H +elim (plus_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #_ #_ #H1 #H2 #H3 #H4 +elim (plus_inv_O3 … H1) -H1 /3 width=5 by ex3_2_intro, ex1_2_intro/ +qed-. + +lemma isrt_inv_plus_O_dx: ∀n,c1,c2. 𝐑𝐓❪n,c1 + c2❫ → 𝐑𝐓❪0,c2❫ → 𝐑𝐓❪n,c1❫. +#n #c1 #c2 #H #H2 +elim (isrt_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct +lapply (isrt_inj … Hn2 H2) -c2 #H destruct // +qed-. + +lemma isrt_inv_plus_SO_dx: ∀n,c1,c2. 𝐑𝐓❪n,c1 + c2❫ → 𝐑𝐓❪1,c2❫ → + ∃∃m. 𝐑𝐓❪m,c1❫ & n = ↑m. +#n #c1 #c2 #H #H2 +elim (isrt_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct +lapply (isrt_inj … Hn2 H2) -c2 #H destruct +/2 width=3 by ex2_intro/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/steps/rtc_isrt_shift.ma b/matita/matita/contribs/lambdadelta/ground/steps/rtc_isrt_shift.ma new file mode 100644 index 000000000..b9f14a958 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/steps/rtc_isrt_shift.ma @@ -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 "ground/steps/rtc_shift.ma". +include "ground/steps/rtc_isrt.ma". + +(* RT-TRANSITION COUNTER ****************************************************) + +(* Properties with test for costrained rt-transition counter ****************) + +lemma isr_shift: ∀c. 𝐑𝐓❪0,c❫ → 𝐑𝐓❪0,↕*c❫. +#c * #ri #rs #H destruct /2 width=3 by ex1_2_intro/ +qed. + +(* Inversion properties with test for costrained rt-counter *****************) + +lemma isrt_inv_shift: ∀n,c. 𝐑𝐓❪n,↕*c❫ → 𝐑𝐓❪0,c❫ ∧ 0 = n. +#n #c * #ri #rs #H +elim (shift_inv_dx … H) -H #rt0 #rs0 #ti0 #ts0 #_ #_ #H1 #H2 #H3 +elim (max_inv_O3 … H1) -H1 /3 width=3 by ex1_2_intro, conj/ +qed-. + +lemma isr_inv_shift: ∀c. 𝐑𝐓❪0,↕*c❫ → 𝐑𝐓❪0,c❫. +#c #H elim (isrt_inv_shift … H) -H // +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist.ma b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist.ma new file mode 100644 index 000000000..c0bafa7b4 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist.ma @@ -0,0 +1,56 @@ +(**************************************************************************) +(* ___ *) +(* ||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/notation/relations/istype_2.ma". +include "ground/steps/rtc.ma". + +(* T-TRANSITION COUNTER *****************************************************) + +definition ist: relation2 nat rtc ≝ + λts,c. 〈0,0,0,ts〉 = c. + +interpretation "test for t-transition counter (rtc)" + 'IsType ts c = (ist ts c). + +(* Basic properties *********************************************************) + +lemma ist_00: 𝐓❪0,𝟘𝟘❫. +// qed. + +lemma ist_01: 𝐓❪1,𝟘𝟙❫. +// qed. + +(* Basic inversion properties ***********************************************) + +lemma ist_inv_00: ∀n. 𝐓❪n,𝟘𝟘❫ → 0 = n. +#n #H destruct // +qed-. + +lemma ist_inv_01: ∀n. 𝐓❪n,𝟘𝟙❫ → 1 = n. +#n #H destruct // +qed-. + +lemma ist_inv_10: ∀n. 𝐓❪n,𝟙𝟘❫ → ⊥. +#h #H destruct +qed-. + +(* Main inversion properties ************************************************) + +theorem ist_inj: ∀n1,n2,c. 𝐓❪n1,c❫ → 𝐓❪n2,c❫ → n1 = n2. +#n1 #n2 #c #H1 #H2 destruct // +qed-. + +theorem ist_mono: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪n,c2❫ → c1 = c2. +#n #c1 #c2 #H1 #H2 destruct // +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_max.ma b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_max.ma new file mode 100644 index 000000000..72be5b990 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_max.ma @@ -0,0 +1,61 @@ +(**************************************************************************) +(* ___ *) +(* ||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/xoa/ex_3_2.ma". +include "ground/steps/rtc_max.ma". +include "ground/steps/rtc_ist.ma". + +(* RT-TRANSITION COUNTER ****************************************************) + +(* Properties with test for t-transition counter ****************************) + +lemma ist_max: ∀n1,n2,c1,c2. 𝐓❪n1,c1❫ → 𝐓❪n2,c2❫ → 𝐓❪n1∨n2,c1∨c2❫. +#n1 #n2 #c1 #c2 #H1 #H2 destruct // +qed. + +lemma ist_max_O1: ∀n,c1,c2. 𝐓❪0,c1❫ → 𝐓❪n,c2❫ → 𝐓❪n,c1∨c2❫. +/2 width=1 by ist_max/ qed. + +lemma ist_max_O2: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1∨c2❫. +#n #c1 #c2 #H1 #H2 >(max_O2 n) /2 width=1 by ist_max/ +qed. + +lemma ist_max_idem1: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪n,c2❫ → 𝐓❪n,c1∨c2❫. +#n #c1 #c2 #H1 #H2 >(idempotent_max n) /2 width=1 by ist_max/ +qed. + +(* Inversion properties with test for t-transition counter ******************) + +lemma ist_inv_max: + ∀n,c1,c2. 𝐓❪n,c1 ∨ c2❫ → + ∃∃n1,n2. 𝐓❪n1,c1❫ & 𝐓❪n2,c2❫ & (n1 ∨ n2) = n. +#n #c1 #c2 #H +elim (max_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #H1 #H2 #H3 #H4 #H5 #H6 destruct +elim (max_inv_O3 … H1) -H1 #H11 #H12 destruct +elim (max_inv_O3 … H2) -H2 #H21 #H22 destruct +elim (max_inv_O3 … H3) -H3 #H31 #H32 destruct +/2 width=5 by ex3_2_intro/ +qed-. + +lemma ist_O_inv_max: ∀c1,c2. 𝐓❪0,c1 ∨ c2❫ → ∧∧ 𝐓❪0,c1❫ & 𝐓❪0,c2❫. +#c1 #c2 #H +elim (ist_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H +elim (max_inv_O3 … H) -H #H1 #H2 destruct +/2 width=1 by conj/ +qed-. + +lemma ist_inv_max_O_dx: ∀n,c1,c2. 𝐓❪n,c1 ∨ c2❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1❫. +#n #c1 #c2 #H #H2 +elim (ist_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct // +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_plus.ma b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_plus.ma new file mode 100644 index 000000000..44f12f004 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_plus.ma @@ -0,0 +1,67 @@ +(**************************************************************************) +(* ___ *) +(* ||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/xoa/ex_3_2.ma". +include "ground/steps/rtc_plus.ma". +include "ground/steps/rtc_ist.ma". + +(* RT-TRANSITION COUNTER ****************************************************) + +(* Properties with test for t-transition counter ****************************) + +lemma ist_plus: ∀n1,n2,c1,c2. 𝐓❪n1,c1❫ → 𝐓❪n2,c2❫ → 𝐓❪n1+n2,c1+c2❫. +#n1 #n2 #c1 #c2 #H1 #H2 destruct // +qed. + +lemma ist_plus_O1: ∀n,c1,c2. 𝐓❪0,c1❫ → 𝐓❪n,c2❫ → 𝐓❪n,c1+c2❫. +/2 width=1 by ist_plus/ qed. + +lemma ist_plus_O2: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1+c2❫. +#n #c1 #c2 #H1 #H2 >(plus_n_O n) /2 width=1 by ist_plus/ +qed. + +lemma ist_succ: ∀n,c. 𝐓❪n,c❫ → 𝐓❪↑n,c+𝟘𝟙❫. +/2 width=1 by ist_plus/ qed. + +(* Inversion properties with test for constrained rt-transition counter *****) + +lemma ist_inv_plus: + ∀n,c1,c2. 𝐓❪n,c1 + c2❫ → + ∃∃n1,n2. 𝐓❪n1,c1❫ & 𝐓❪n2,c2❫ & n1 + n2 = n. +#n #c1 #c2 #H +elim (plus_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #H1 #H2 #H3 #H4 #H5 #H6 destruct +elim (plus_inv_O3 … H1) -H1 #H11 #H12 destruct +elim (plus_inv_O3 … H2) -H2 #H21 #H22 destruct +elim (plus_inv_O3 … H3) -H3 #H31 #H32 destruct +/3 width=5 by ex3_2_intro/ +qed-. + +lemma ist_inv_plus_O_dx: ∀n,c1,c2. 𝐓❪n,c1 + c2❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1❫. +#n #c1 #c2 #H #H2 +elim (ist_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct // +qed-. + +lemma ist_inv_plus_SO_dx: + ∀n,c1,c2. 𝐓❪n,c1 + c2❫ → 𝐓❪1,c2❫ → + ∃∃m. 𝐓❪m,c1❫ & n = ↑m. +#n #c1 #c2 #H #H2 destruct +elim (ist_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct +/2 width=3 by ex2_intro/ +qed-. + +lemma ist_inv_plus_10_dx: ∀n,c. 𝐓❪n,c+𝟙𝟘❫ → ⊥. +#n #c #H +elim (ist_inv_plus … H) -H #n1 #n2 #_ #H #_ +/2 width=2 by ist_inv_10/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_shift.ma b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_shift.ma new file mode 100644 index 000000000..fcaa4d8ba --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/steps/rtc_ist_shift.ma @@ -0,0 +1,38 @@ +(**************************************************************************) +(* ___ *) +(* ||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/steps/rtc_shift.ma". +include "ground/steps/rtc_ist.ma". + +(* RT-TRANSITION COUNTER ****************************************************) + +(* Properties with test for t-transition counter ****************************) + +lemma ist_zero_shift: ∀c. 𝐓❪0,c❫ → 𝐓❪0,↕*c❫. +#c #H destruct // +qed. + +(* Inversion properties with test for t-transition counter ******************) + +lemma ist_inv_shift: ∀n,c. 𝐓❪n,↕*c❫ → ∧∧ 𝐓❪0,c❫ & 0 = n. +#n #c #H +elim (shift_inv_dx … H) -H #rt0 #rs0 #ti0 #ts0 #H1 #_ #H2 #H3 #H4 destruct +elim (max_inv_O3 … H1) -H1 #H11 #H12 destruct +elim (max_inv_O3 … H2) -H2 #H21 #H22 destruct +/2 width=1 by conj/ +qed-. + +lemma ist_inv_zero_shift: ∀c. 𝐓❪0,↕*c❫ → 𝐓❪0,c❫. +#c #H elim (ist_inv_shift … H) -H // +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/steps/rtc_max.ma b/matita/matita/contribs/lambdadelta/ground/steps/rtc_max.ma new file mode 100644 index 000000000..9e7665524 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/steps/rtc_max.ma @@ -0,0 +1,59 @@ +(**************************************************************************) +(* ___ *) +(* ||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/xoa/ex_6_8.ma". +include "ground/steps/rtc.ma". + +(* RT-TRANSITION COUNTER ****************************************************) + +definition max (c1:rtc) (c2:rtc): rtc ≝ match c1 with [ + mk_rtc ri1 rs1 ti1 ts1 ⇒ match c2 with [ + mk_rtc ri2 rs2 ti2 ts2 ⇒ 〈ri1∨ri2,rs1∨rs2,ti1∨ti2,ts1∨ts2〉 + ] +]. + +interpretation "maximum (rtc)" + 'or c1 c2 = (max c1 c2). + +(* Basic properties *********************************************************) + +lemma max_rew: ∀ri1,ri2,rs1,rs2,ti1,ti2,ts1,ts2. + 〈ri1∨ri2,rs1∨rs2,ti1∨ti2,ts1∨ts2〉 = + (〈ri1,rs1,ti1,ts1〉 ∨ 〈ri2,rs2,ti2,ts2〉). +// qed. + +lemma max_O_dx: ∀c. c = (c ∨ 𝟘𝟘). +* #ri #rs #ti #ts + + + + + Summary of the Specification + Here is a numerical account of the specification's contents + and its timeline. + +
+ + + Specification is released as an independent package (was ground_2). + + + Centralized xoa infrastructure removed. + + + Decentralized xoa infrastructure. + + + Generic rt-transition counter (rtc). + + + Platform-independent multiple relocation (rtmap). + + + Multiple relocation with streams of naturals. + + + Multiple relocation with lists of booleans. + + + Natural numbers with infinity (ynat). + + + Specification starts. + + + Logical Structure of the Specification + This table reports the specification's components and their planes. + +
+ +
+ diff --git a/matita/matita/contribs/lambdadelta/ground/web/ground_src.tbl b/matita/matita/contribs/lambdadelta/ground/web/ground_src.tbl new file mode 100644 index 000000000..0dfbaaecf --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/web/ground_src.tbl @@ -0,0 +1,101 @@ +name "ground_2_src" + +table { + class "gray" + [ { "component" * } { + [ { "plane" * } { + [ "files" * ] + } + ] + } + ] + class "water" + [ { "generic rt-transition counter" * } { + [ { "" * } { + [ "rtc_ist ( 𝐓❪?,?❫ )" "rtc_ist_shift" "rtc_ist_plus" "rtc_ist_max" * ] + [ "rtc_isrc ( 𝐑𝐓❪?,?❫ )" "rtc_isrt_shift" "rtc_isrt_plus" "rtc_isrt_max" "rtc_isrt_max_shift" * ] + [ "rtc ( 〈?,?,?,?〉 ) ( 𝟘𝟘 ) ( 𝟙𝟘 ) ( 𝟘𝟙 )" "rtc_shift ( ↕*? )" "rtc_plus ( ? + ? )" "rtc_max ( ? ∨ ? )" "rtc_max_shift" * ] + } + ] + } + ] + class "green" + [ { "multiple relocation" * } { + [ { "" * } { + [ "rtmap" "rtmap_eq ( ? ≡ ? )" "rtmap_pushs ( ⫯*[?]? )" "rtmap_nexts ( ↑*[?]? )" + "rtmap_tl ( ⫱? )" "rtmap_tls ( ⫱*[?]? )" "rtmap_isid ( 𝐈❪?❫ )" "rtmap_id" "rtmap_isdiv ( 𝛀❪?❫ )" + "rtmap_fcla ( 𝐂❪?❫ ≘ ? )" "rtmap_isfin ( 𝐅❪?❫ )" "rtmap_isuni ( 𝐔❪?❫ )" "rtmap_uni ( 𝐔❨?❩ )" + "rtmap_sle ( ? ⊆ ? )" "rtmap_sdj ( ? ∥ ? )" "rtmap_sand ( ? ⋒ ? ≘ ? )" "rtmap_sor ( ? ⋓ ? ≘ ? )" + "rtmap_at ( @❪?,?❫ ≘ ? )" "rtmap_istot ( 𝐓❪?❫ )" "rtmap_after ( ? ⊚ ? ≘ ? )" "rtmap_coafter ( ? ~⊚ ? ≘ ? )" + "rtmap_basic ( 𝐁❨?,?❩ )" "rtmap_basic_after" + * ] + [ "nstream ( ⫯? ) ( ↑? )" "nstream_eq" "" "" + "" "" "nstream_isid" "nstream_id ( 𝐈𝐝 )" "" + "" "" "" "" + "" "" "" "nstream_sor" + "" "nstream_istot ( ?@❨?❩ )" "nstream_after ( ? ∘ ? )" "nstream_coafter ( ? ~∘ ? )" + "nstream_basic" "" + * ] +(* + [ "trace ( ∥?∥ )" "trace_at ( @❪?,?❫ ≘ ? )" "trace_after ( ? ⊚ ? ≘ ? )" "trace_isid ( 𝐈❪?❫ )" "trace_isun ( 𝐔❪?❫ )" + "trace_sle ( ? ⊆ ? )" "trace_sor ( ? ⋓ ? ≘ ? )" "trace_snot ( ∁ ? )" * ] +*) + [ "mr2 ( ◊ ) ( ❨?,?❩;? )" "mr2_append ( ? @@? )" "mr2_at ( @❪?,?❫ ≘ ? )" "mr2_plus ( ? + ? )" "mr2_minus ( ? ▭ ? ≘ ? )" * ] + } + ] + } + ] + class "grass" + [ { "natural numbers with infinity" * } { + [ { "" * } { + [ "ynat ( ∞ )" "ynat_pred ( ↓? )" "ynat_succ ( ↑? )" + "ynat_le ( ? ≤ ? )" "ynat_lt ( ? < ? )" + "ynat_plus ( ? + ? )" "ynat_minus_sn ( ? - ? )" * + ] + } + ] + } + ] + class "yellow" + [ { "extensions to the library" * } { + [ { "" * } { + [ "stream ( ? ⨮{?} ? )" "stream_eq ( ? ≗{?} ? )" "stream_hdtl ( ⫰{?}? )" "stream_tls ( ⫰*{?}[?]? )" * ] + [ "list ( Ⓔ{?} ) ( ? ⨮{?} ? )" "list_length ( |?| )" * ] + [ "bool ( Ⓕ ) ( Ⓣ )" "arith ( ?^? ) ( ↑? ) ( ↓? ) ( ? ∨ ? ) ( ? ∧ ? )" "arith_2a" "arith_2b" * ] + [ "ltc" "ltc_ctc" * ] + [ "logic ( ⊥ ) ( ⊤ )" "relations ( ? ⊆ ? )" "functions" "exteq ( ? ≐{?,?} ? )" "star" "lstar_2a" * ] + } + ] + } + ] + class "orange" + [ { "generated library" * } { + [ { "generalization with equality" * } { + [ "insert_eq" * ] + } + ] + [ { "permutation of quantifiers" * } { + [ "pull" * ] + } + ] + [ { "logical decomposables" * } { + [ "xoa ( ∃∃ ) ( ∨∨ ) ( ∧∧ )" * ] + } + ] + } + ] + class "red" + [ { "" * } { + [ { "" * } { + [ * ] + } + ] + } + ] +} + +class "top" { * } + +class "capitalize italic" { 0 } + +class "italic" { 1 } diff --git a/matita/matita/contribs/lambdadelta/ground/xoa.conf.xml b/matita/matita/contribs/lambdadelta/ground/xoa.conf.xml new file mode 100644 index 000000000..73adf22c3 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa.conf.xml @@ -0,0 +1,52 @@ + + +
+ . + ground/xoa + ground/notation/xoa + basics/pts.ma + 3 + 4 + 1 2 + 1 3 + 1 4 + 2 2 + 2 3 + 3 1 + 3 2 + 3 3 + 3 4 + 3 5 + 4 1 + 4 2 + 4 3 + 4 4 + 4 5 + 5 1 + 5 2 + 5 3 + 5 4 + 5 5 + 5 6 + 5 7 + 6 3 + 6 4 + 6 5 + 6 6 + 6 7 + 6 8 + 6 9 + 7 3 + 7 4 + 7 5 + 7 6 + 7 7 + 7 10 + 8 4 + 8 5 + 9 3 + 3 + 4 + 5 +
+
diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/and_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/and_3.ma new file mode 100644 index 000000000..f99e0da9d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/and_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/and_3.ma". + +(* multiple conjunction connective (3) *) + +inductive and3 (P0,P1,P2:Prop) : Prop ≝ + | and3_intro: P0 → P1 → P2 → and3 ? ? ? +. + +interpretation "multiple conjunction connective (3)" 'And P0 P1 P2 = (and3 P0 P1 P2). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/and_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/and_4.ma new file mode 100644 index 000000000..aeee4617f --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/and_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/and_4.ma". + +(* multiple conjunction connective (4) *) + +inductive and4 (P0,P1,P2,P3:Prop) : Prop ≝ + | and4_intro: P0 → P1 → P2 → P3 → and4 ? ? ? ? +. + +interpretation "multiple conjunction connective (4)" 'And P0 P1 P2 P3 = (and4 P0 P1 P2 P3). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_2.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_2.ma new file mode 100644 index 000000000..0d6b9e4f2 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_2.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_1_2.ma". + +(* multiple existental quantifier (1, 2) *) + +inductive ex1_2 (A0,A1:Type[0]) (P0:A0→A1→Prop) : Prop ≝ + | ex1_2_intro: ∀x0,x1. P0 x0 x1 → ex1_2 ? ? ? +. + +interpretation "multiple existental quantifier (1, 2)" 'Ex2 P0 = (ex1_2 ? ? P0). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_3.ma new file mode 100644 index 000000000..7e195cd3a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_1_3.ma". + +(* multiple existental quantifier (1, 3) *) + +inductive ex1_3 (A0,A1,A2:Type[0]) (P0:A0→A1→A2→Prop) : Prop ≝ + | ex1_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → ex1_3 ? ? ? ? +. + +interpretation "multiple existental quantifier (1, 3)" 'Ex3 P0 = (ex1_3 ? ? ? P0). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_4.ma new file mode 100644 index 000000000..77f1dd696 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_1_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_1_4.ma". + +(* multiple existental quantifier (1, 4) *) + +inductive ex1_4 (A0,A1,A2,A3:Type[0]) (P0:A0→A1→A2→A3→Prop) : Prop ≝ + | ex1_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → ex1_4 ? ? ? ? ? +. + +interpretation "multiple existental quantifier (1, 4)" 'Ex4 P0 = (ex1_4 ? ? ? ? P0). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_2_2.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_2_2.ma new file mode 100644 index 000000000..055cee51a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_2_2.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_2_2.ma". + +(* multiple existental quantifier (2, 2) *) + +inductive ex2_2 (A0,A1:Type[0]) (P0,P1:A0→A1→Prop) : Prop ≝ + | ex2_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → ex2_2 ? ? ? ? +. + +interpretation "multiple existental quantifier (2, 2)" 'Ex2 P0 P1 = (ex2_2 ? ? P0 P1). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_2_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_2_3.ma new file mode 100644 index 000000000..bcbee747a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_2_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_2_3.ma". + +(* multiple existental quantifier (2, 3) *) + +inductive ex2_3 (A0,A1,A2:Type[0]) (P0,P1:A0→A1→A2→Prop) : Prop ≝ + | ex2_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → ex2_3 ? ? ? ? ? +. + +interpretation "multiple existental quantifier (2, 3)" 'Ex3 P0 P1 = (ex2_3 ? ? ? P0 P1). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_1.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_1.ma new file mode 100644 index 000000000..3ce615636 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_1.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_3_1.ma". + +(* multiple existental quantifier (3, 1) *) + +inductive ex3 (A0:Type[0]) (P0,P1,P2:A0→Prop) : Prop ≝ + | ex3_intro: ∀x0. P0 x0 → P1 x0 → P2 x0 → ex3 ? ? ? ? +. + +interpretation "multiple existental quantifier (3, 1)" 'Ex P0 P1 P2 = (ex3 ? P0 P1 P2). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_2.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_2.ma new file mode 100644 index 000000000..e7fc185d1 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_2.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_3_2.ma". + +(* multiple existental quantifier (3, 2) *) + +inductive ex3_2 (A0,A1:Type[0]) (P0,P1,P2:A0→A1→Prop) : Prop ≝ + | ex3_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → P2 x0 x1 → ex3_2 ? ? ? ? ? +. + +interpretation "multiple existental quantifier (3, 2)" 'Ex2 P0 P1 P2 = (ex3_2 ? ? P0 P1 P2). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_3.ma new file mode 100644 index 000000000..cfa954454 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_3_3.ma". + +(* multiple existental quantifier (3, 3) *) + +inductive ex3_3 (A0,A1,A2:Type[0]) (P0,P1,P2:A0→A1→A2→Prop) : Prop ≝ + | ex3_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → ex3_3 ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (3, 3)" 'Ex3 P0 P1 P2 = (ex3_3 ? ? ? P0 P1 P2). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_4.ma new file mode 100644 index 000000000..672102b2e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_3_4.ma". + +(* multiple existental quantifier (3, 4) *) + +inductive ex3_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2:A0→A1→A2→A3→Prop) : Prop ≝ + | ex3_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → ex3_4 ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (3, 4)" 'Ex4 P0 P1 P2 = (ex3_4 ? ? ? ? P0 P1 P2). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_5.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_5.ma new file mode 100644 index 000000000..e1fa69fbf --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_3_5.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_3_5.ma". + +(* multiple existental quantifier (3, 5) *) + +inductive ex3_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2:A0→A1→A2→A3→A4→Prop) : Prop ≝ + | ex3_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → ex3_5 ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (3, 5)" 'Ex5 P0 P1 P2 = (ex3_5 ? ? ? ? ? P0 P1 P2). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_1.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_1.ma new file mode 100644 index 000000000..055f6954d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_1.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_4_1.ma". + +(* multiple existental quantifier (4, 1) *) + +inductive ex4 (A0:Type[0]) (P0,P1,P2,P3:A0→Prop) : Prop ≝ + | ex4_intro: ∀x0. P0 x0 → P1 x0 → P2 x0 → P3 x0 → ex4 ? ? ? ? ? +. + +interpretation "multiple existental quantifier (4, 1)" 'Ex P0 P1 P2 P3 = (ex4 ? P0 P1 P2 P3). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_1_props.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_1_props.ma new file mode 100644 index 000000000..e13197cb0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_1_props.ma @@ -0,0 +1,22 @@ +(**************************************************************************) +(* ___ *) +(* ||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/xoa/ex_4_1.ma". + +(* Properties with multiple existental quantifier (4, 1) ********************) + +lemma ex4_commute (A0) (P0,P1,P2,P3:A0→Prop): + (∃∃x0. P0 x0 & P1 x0 & P2 x0 & P3 x0) → ∃∃x0. P2 x0 & P3 x0 & P0 x0 & P1 x0. +#A0 #P0 #P1 #P2 #P3 * /2 width=5 by ex4_intro/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_2.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_2.ma new file mode 100644 index 000000000..288fa6c90 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_2.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_4_2.ma". + +(* multiple existental quantifier (4, 2) *) + +inductive ex4_2 (A0,A1:Type[0]) (P0,P1,P2,P3:A0→A1→Prop) : Prop ≝ + | ex4_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → P2 x0 x1 → P3 x0 x1 → ex4_2 ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (4, 2)" 'Ex2 P0 P1 P2 P3 = (ex4_2 ? ? P0 P1 P2 P3). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_3.ma new file mode 100644 index 000000000..6c9e5ce61 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_4_3.ma". + +(* multiple existental quantifier (4, 3) *) + +inductive ex4_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3:A0→A1→A2→Prop) : Prop ≝ + | ex4_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → ex4_3 ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (4, 3)" 'Ex3 P0 P1 P2 P3 = (ex4_3 ? ? ? P0 P1 P2 P3). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_4.ma new file mode 100644 index 000000000..775ce5840 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_4_4.ma". + +(* multiple existental quantifier (4, 4) *) + +inductive ex4_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3:A0→A1→A2→A3→Prop) : Prop ≝ + | ex4_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → ex4_4 ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (4, 4)" 'Ex4 P0 P1 P2 P3 = (ex4_4 ? ? ? ? P0 P1 P2 P3). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_5.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_5.ma new file mode 100644 index 000000000..4f3cd76c1 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_4_5.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_4_5.ma". + +(* multiple existental quantifier (4, 5) *) + +inductive ex4_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3:A0→A1→A2→A3→A4→Prop) : Prop ≝ + | ex4_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → ex4_5 ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (4, 5)" 'Ex5 P0 P1 P2 P3 = (ex4_5 ? ? ? ? ? P0 P1 P2 P3). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_1.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_1.ma new file mode 100644 index 000000000..af0e36ebc --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_1.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_5_1.ma". + +(* multiple existental quantifier (5, 1) *) + +inductive ex5 (A0:Type[0]) (P0,P1,P2,P3,P4:A0→Prop) : Prop ≝ + | ex5_intro: ∀x0. P0 x0 → P1 x0 → P2 x0 → P3 x0 → P4 x0 → ex5 ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (5, 1)" 'Ex P0 P1 P2 P3 P4 = (ex5 ? P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_2.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_2.ma new file mode 100644 index 000000000..80dff2b36 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_2.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_5_2.ma". + +(* multiple existental quantifier (5, 2) *) + +inductive ex5_2 (A0,A1:Type[0]) (P0,P1,P2,P3,P4:A0→A1→Prop) : Prop ≝ + | ex5_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → P2 x0 x1 → P3 x0 x1 → P4 x0 x1 → ex5_2 ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (5, 2)" 'Ex2 P0 P1 P2 P3 P4 = (ex5_2 ? ? P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_3.ma new file mode 100644 index 000000000..f476e84cb --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_5_3.ma". + +(* multiple existental quantifier (5, 3) *) + +inductive ex5_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→Prop) : Prop ≝ + | ex5_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → ex5_3 ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (5, 3)" 'Ex3 P0 P1 P2 P3 P4 = (ex5_3 ? ? ? P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_4.ma new file mode 100644 index 000000000..0ab21d1fa --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_5_4.ma". + +(* multiple existental quantifier (5, 4) *) + +inductive ex5_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→Prop) : Prop ≝ + | ex5_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → ex5_4 ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (5, 4)" 'Ex4 P0 P1 P2 P3 P4 = (ex5_4 ? ? ? ? P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_5.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_5.ma new file mode 100644 index 000000000..45ff6c303 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_5.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_5_5.ma". + +(* multiple existental quantifier (5, 5) *) + +inductive ex5_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→A4→Prop) : Prop ≝ + | ex5_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → ex5_5 ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (5, 5)" 'Ex5 P0 P1 P2 P3 P4 = (ex5_5 ? ? ? ? ? P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_6.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_6.ma new file mode 100644 index 000000000..35d154c56 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_6.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_5_6.ma". + +(* multiple existental quantifier (5, 6) *) + +inductive ex5_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→A4→A5→Prop) : Prop ≝ + | ex5_6_intro: ∀x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 → P1 x0 x1 x2 x3 x4 x5 → P2 x0 x1 x2 x3 x4 x5 → P3 x0 x1 x2 x3 x4 x5 → P4 x0 x1 x2 x3 x4 x5 → ex5_6 ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (5, 6)" 'Ex6 P0 P1 P2 P3 P4 = (ex5_6 ? ? ? ? ? ? P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_7.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_7.ma new file mode 100644 index 000000000..b35818aa4 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_5_7.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_5_7.ma". + +(* multiple existental quantifier (5, 7) *) + +inductive ex5_7 (A0,A1,A2,A3,A4,A5,A6:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→A4→A5→A6→Prop) : Prop ≝ + | ex5_7_intro: ∀x0,x1,x2,x3,x4,x5,x6. P0 x0 x1 x2 x3 x4 x5 x6 → P1 x0 x1 x2 x3 x4 x5 x6 → P2 x0 x1 x2 x3 x4 x5 x6 → P3 x0 x1 x2 x3 x4 x5 x6 → P4 x0 x1 x2 x3 x4 x5 x6 → ex5_7 ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (5, 7)" 'Ex7 P0 P1 P2 P3 P4 = (ex5_7 ? ? ? ? ? ? ? P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_3.ma new file mode 100644 index 000000000..27e0824b3 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_6_3.ma". + +(* multiple existental quantifier (6, 3) *) + +inductive ex6_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→Prop) : Prop ≝ + | ex6_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → P5 x0 x1 x2 → ex6_3 ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (6, 3)" 'Ex3 P0 P1 P2 P3 P4 P5 = (ex6_3 ? ? ? P0 P1 P2 P3 P4 P5). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_4.ma new file mode 100644 index 000000000..374f4997d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_6_4.ma". + +(* multiple existental quantifier (6, 4) *) + +inductive ex6_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→Prop) : Prop ≝ + | ex6_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → P5 x0 x1 x2 x3 → ex6_4 ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (6, 4)" 'Ex4 P0 P1 P2 P3 P4 P5 = (ex6_4 ? ? ? ? P0 P1 P2 P3 P4 P5). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_5.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_5.ma new file mode 100644 index 000000000..b68890ba8 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_5.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_6_5.ma". + +(* multiple existental quantifier (6, 5) *) + +inductive ex6_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→Prop) : Prop ≝ + | ex6_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → P5 x0 x1 x2 x3 x4 → ex6_5 ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (6, 5)" 'Ex5 P0 P1 P2 P3 P4 P5 = (ex6_5 ? ? ? ? ? P0 P1 P2 P3 P4 P5). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_6.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_6.ma new file mode 100644 index 000000000..17f909431 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_6.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_6_6.ma". + +(* multiple existental quantifier (6, 6) *) + +inductive ex6_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→Prop) : Prop ≝ + | ex6_6_intro: ∀x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 → P1 x0 x1 x2 x3 x4 x5 → P2 x0 x1 x2 x3 x4 x5 → P3 x0 x1 x2 x3 x4 x5 → P4 x0 x1 x2 x3 x4 x5 → P5 x0 x1 x2 x3 x4 x5 → ex6_6 ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (6, 6)" 'Ex6 P0 P1 P2 P3 P4 P5 = (ex6_6 ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_7.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_7.ma new file mode 100644 index 000000000..48f53406e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_7.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_6_7.ma". + +(* multiple existental quantifier (6, 7) *) + +inductive ex6_7 (A0,A1,A2,A3,A4,A5,A6:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→A6→Prop) : Prop ≝ + | ex6_7_intro: ∀x0,x1,x2,x3,x4,x5,x6. P0 x0 x1 x2 x3 x4 x5 x6 → P1 x0 x1 x2 x3 x4 x5 x6 → P2 x0 x1 x2 x3 x4 x5 x6 → P3 x0 x1 x2 x3 x4 x5 x6 → P4 x0 x1 x2 x3 x4 x5 x6 → P5 x0 x1 x2 x3 x4 x5 x6 → ex6_7 ? ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (6, 7)" 'Ex7 P0 P1 P2 P3 P4 P5 = (ex6_7 ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_8.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_8.ma new file mode 100644 index 000000000..811b39f04 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_8.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_6_8.ma". + +(* multiple existental quantifier (6, 8) *) + +inductive ex6_8 (A0,A1,A2,A3,A4,A5,A6,A7:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→A6→A7→Prop) : Prop ≝ + | ex6_8_intro: ∀x0,x1,x2,x3,x4,x5,x6,x7. P0 x0 x1 x2 x3 x4 x5 x6 x7 → P1 x0 x1 x2 x3 x4 x5 x6 x7 → P2 x0 x1 x2 x3 x4 x5 x6 x7 → P3 x0 x1 x2 x3 x4 x5 x6 x7 → P4 x0 x1 x2 x3 x4 x5 x6 x7 → P5 x0 x1 x2 x3 x4 x5 x6 x7 → ex6_8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (6, 8)" 'Ex8 P0 P1 P2 P3 P4 P5 = (ex6_8 ? ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_9.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_9.ma new file mode 100644 index 000000000..f94349580 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_6_9.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_6_9.ma". + +(* multiple existental quantifier (6, 9) *) + +inductive ex6_9 (A0,A1,A2,A3,A4,A5,A6,A7,A8:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→A6→A7→A8→Prop) : Prop ≝ + | ex6_9_intro: ∀x0,x1,x2,x3,x4,x5,x6,x7,x8. P0 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P1 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P2 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P3 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P4 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P5 x0 x1 x2 x3 x4 x5 x6 x7 x8 → ex6_9 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (6, 9)" 'Ex9 P0 P1 P2 P3 P4 P5 = (ex6_9 ? ? ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_10.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_10.ma new file mode 100644 index 000000000..f3e001c26 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_10.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_7_10.ma". + +(* multiple existental quantifier (7, 10) *) + +inductive ex7_10 (A0,A1,A2,A3,A4,A5,A6,A7,A8,A9:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→A5→A6→A7→A8→A9→Prop) : Prop ≝ + | ex7_10_intro: ∀x0,x1,x2,x3,x4,x5,x6,x7,x8,x9. P0 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P1 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P2 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P3 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P4 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P5 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P6 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → ex7_10 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (7, 10)" 'Ex10 P0 P1 P2 P3 P4 P5 P6 = (ex7_10 ? ? ? ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_3.ma new file mode 100644 index 000000000..96eee3e68 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_7_3.ma". + +(* multiple existental quantifier (7, 3) *) + +inductive ex7_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→Prop) : Prop ≝ + | ex7_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → P5 x0 x1 x2 → P6 x0 x1 x2 → ex7_3 ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (7, 3)" 'Ex3 P0 P1 P2 P3 P4 P5 P6 = (ex7_3 ? ? ? P0 P1 P2 P3 P4 P5 P6). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_4.ma new file mode 100644 index 000000000..15316cda4 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_7_4.ma". + +(* multiple existental quantifier (7, 4) *) + +inductive ex7_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→Prop) : Prop ≝ + | ex7_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → P5 x0 x1 x2 x3 → P6 x0 x1 x2 x3 → ex7_4 ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (7, 4)" 'Ex4 P0 P1 P2 P3 P4 P5 P6 = (ex7_4 ? ? ? ? P0 P1 P2 P3 P4 P5 P6). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_5.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_5.ma new file mode 100644 index 000000000..89794476a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_5.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_7_5.ma". + +(* multiple existental quantifier (7, 5) *) + +inductive ex7_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→Prop) : Prop ≝ + | ex7_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → P5 x0 x1 x2 x3 x4 → P6 x0 x1 x2 x3 x4 → ex7_5 ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (7, 5)" 'Ex5 P0 P1 P2 P3 P4 P5 P6 = (ex7_5 ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_6.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_6.ma new file mode 100644 index 000000000..f6ea7b068 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_6.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_7_6.ma". + +(* multiple existental quantifier (7, 6) *) + +inductive ex7_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→A5→Prop) : Prop ≝ + | ex7_6_intro: ∀x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 → P1 x0 x1 x2 x3 x4 x5 → P2 x0 x1 x2 x3 x4 x5 → P3 x0 x1 x2 x3 x4 x5 → P4 x0 x1 x2 x3 x4 x5 → P5 x0 x1 x2 x3 x4 x5 → P6 x0 x1 x2 x3 x4 x5 → ex7_6 ? ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (7, 6)" 'Ex6 P0 P1 P2 P3 P4 P5 P6 = (ex7_6 ? ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_7.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_7.ma new file mode 100644 index 000000000..688fd96f0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_7_7.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_7_7.ma". + +(* multiple existental quantifier (7, 7) *) + +inductive ex7_7 (A0,A1,A2,A3,A4,A5,A6:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→A5→A6→Prop) : Prop ≝ + | ex7_7_intro: ∀x0,x1,x2,x3,x4,x5,x6. P0 x0 x1 x2 x3 x4 x5 x6 → P1 x0 x1 x2 x3 x4 x5 x6 → P2 x0 x1 x2 x3 x4 x5 x6 → P3 x0 x1 x2 x3 x4 x5 x6 → P4 x0 x1 x2 x3 x4 x5 x6 → P5 x0 x1 x2 x3 x4 x5 x6 → P6 x0 x1 x2 x3 x4 x5 x6 → ex7_7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (7, 7)" 'Ex7 P0 P1 P2 P3 P4 P5 P6 = (ex7_7 ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_8_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_8_4.ma new file mode 100644 index 000000000..680782088 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_8_4.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_8_4.ma". + +(* multiple existental quantifier (8, 4) *) + +inductive ex8_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4,P5,P6,P7:A0→A1→A2→A3→Prop) : Prop ≝ + | ex8_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → P5 x0 x1 x2 x3 → P6 x0 x1 x2 x3 → P7 x0 x1 x2 x3 → ex8_4 ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (8, 4)" 'Ex4 P0 P1 P2 P3 P4 P5 P6 P7 = (ex8_4 ? ? ? ? P0 P1 P2 P3 P4 P5 P6 P7). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_8_5.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_8_5.ma new file mode 100644 index 000000000..31e65ee36 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_8_5.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_8_5.ma". + +(* multiple existental quantifier (8, 5) *) + +inductive ex8_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4,P5,P6,P7:A0→A1→A2→A3→A4→Prop) : Prop ≝ + | ex8_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → P5 x0 x1 x2 x3 x4 → P6 x0 x1 x2 x3 x4 → P7 x0 x1 x2 x3 x4 → ex8_5 ? ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (8, 5)" 'Ex5 P0 P1 P2 P3 P4 P5 P6 P7 = (ex8_5 ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6 P7). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/ex_9_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/ex_9_3.ma new file mode 100644 index 000000000..80e5c885b --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/ex_9_3.ma @@ -0,0 +1,28 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/ex_9_3.ma". + +(* multiple existental quantifier (9, 3) *) + +inductive ex9_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4,P5,P6,P7,P8:A0→A1→A2→Prop) : Prop ≝ + | ex9_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → P5 x0 x1 x2 → P6 x0 x1 x2 → P7 x0 x1 x2 → P8 x0 x1 x2 → ex9_3 ? ? ? ? ? ? ? ? ? ? ? ? +. + +interpretation "multiple existental quantifier (9, 3)" 'Ex3 P0 P1 P2 P3 P4 P5 P6 P7 P8 = (ex9_3 ? ? ? P0 P1 P2 P3 P4 P5 P6 P7 P8). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/or_3.ma b/matita/matita/contribs/lambdadelta/ground/xoa/or_3.ma new file mode 100644 index 000000000..77ddcdfe0 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/or_3.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/or_3.ma". + +(* multiple disjunction connective (3) *) + +inductive or3 (P0,P1,P2:Prop) : Prop ≝ + | or3_intro0: P0 → or3 ? ? ? + | or3_intro1: P1 → or3 ? ? ? + | or3_intro2: P2 → or3 ? ? ? +. + +interpretation "multiple disjunction connective (3)" 'Or P0 P1 P2 = (or3 P0 P1 P2). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/or_4.ma b/matita/matita/contribs/lambdadelta/ground/xoa/or_4.ma new file mode 100644 index 000000000..e1d6a7b4f --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/or_4.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/or_4.ma". + +(* multiple disjunction connective (4) *) + +inductive or4 (P0,P1,P2,P3:Prop) : Prop ≝ + | or4_intro0: P0 → or4 ? ? ? ? + | or4_intro1: P1 → or4 ? ? ? ? + | or4_intro2: P2 → or4 ? ? ? ? + | or4_intro3: P3 → or4 ? ? ? ? +. + +interpretation "multiple disjunction connective (4)" 'Or P0 P1 P2 P3 = (or4 P0 P1 P2 P3). + diff --git a/matita/matita/contribs/lambdadelta/ground/xoa/or_5.ma b/matita/matita/contribs/lambdadelta/ground/xoa/or_5.ma new file mode 100644 index 000000000..98ea46816 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/xoa/or_5.ma @@ -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 *) +(* *) +(**************************************************************************) + +(* This file was generated by xoa.native: do not edit *********************) + +include "basics/pts.ma". + +include "ground/notation/xoa/or_5.ma". + +(* multiple disjunction connective (5) *) + +inductive or5 (P0,P1,P2,P3,P4:Prop) : Prop ≝ + | or5_intro0: P0 → or5 ? ? ? ? ? + | or5_intro1: P1 → or5 ? ? ? ? ? + | or5_intro2: P2 → or5 ? ? ? ? ? + | or5_intro3: P3 → or5 ? ? ? ? ? + | or5_intro4: P4 → or5 ? ? ? ? ? +. + +interpretation "multiple disjunction connective (5)" 'Or P0 P1 P2 P3 P4 = (or5 P0 P1 P2 P3 P4). + diff --git a/matita/matita/contribs/lambdadelta/ground/ynat/ynat.ma b/matita/matita/contribs/lambdadelta/ground/ynat/ynat.ma new file mode 100644 index 000000000..d2729ca69 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/ynat/ynat.ma @@ -0,0 +1,42 @@ +(**************************************************************************) +(* ___ *) +(* ||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/lib/arith.ma". +include "ground/notation/functions/infinity_0.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* the type of natural numbers with infinity *) +inductive ynat: Type[0] ≝ +| yinj: nat → ynat +| Y : ynat +. + +coercion yinj. + +interpretation "ynat infinity" 'Infinity = Y. + +(* Inversion lemmas *********************************************************) + +lemma yinj_inj: ∀m,n. yinj m = yinj n → m = n. +#m #n #H destruct // +qed-. + +(* Basic properties *********************************************************) + +lemma eq_ynat_dec: ∀n1,n2:ynat. Decidable (n1 = n2). +* [ #n1 ] * [1,3: #n2 ] /2 width=1 by or_introl/ +[2,3: @or_intror #H destruct ] +elim (eq_nat_dec n1 n2) /4 width=1 by yinj_inj, or_intror, or_introl/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/ynat/ynat_le.ma b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_le.ma new file mode 100644 index 000000000..29e11ce3c --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_le.ma @@ -0,0 +1,155 @@ +(**************************************************************************) +(* ___ *) +(* ||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/ynat/ynat_succ.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* order relation *) +inductive yle: relation ynat ≝ +| yle_inj: ∀m,n. m ≤ n → yle m n +| yle_Y : ∀m. yle m (∞) +. + +interpretation "ynat 'less or equal to'" 'leq x y = (yle x y). + +(* Basic inversion lemmas ***************************************************) + +fact yle_inv_inj2_aux: ∀x,y. x ≤ y → ∀n. y = yinj n → + ∃∃m. m ≤ n & x = yinj m. +#x #y * -x -y +[ #x #y #Hxy #n #Hy destruct /2 width=3 by ex2_intro/ +| #x #n #Hy destruct +] +qed-. + +lemma yle_inv_inj2: ∀x,n. x ≤ yinj n → ∃∃m. m ≤ n & x = yinj m. +/2 width=3 by yle_inv_inj2_aux/ qed-. + +lemma yle_inv_inj: ∀m,n. yinj m ≤ yinj n → m ≤ n. +#m #n #H elim (yle_inv_inj2 … H) -H +#x #Hxn #H destruct // +qed-. + +fact yle_inv_O2_aux: ∀m:ynat. ∀x:ynat. m ≤ x → x = 0 → m = 0. +#m #x * -m -x +[ #m #n #Hmn #H destruct /3 width=1 by le_n_O_to_eq, eq_f/ +| #m #H destruct +] +qed-. + +lemma yle_inv_O2: ∀m:ynat. m ≤ 0 → m = 0. +/2 width =3 by yle_inv_O2_aux/ qed-. + +fact yle_inv_Y1_aux: ∀x,n. x ≤ n → x = ∞ → n = ∞. +#x #n * -x -n // +#x #n #_ #H destruct +qed-. + +lemma yle_inv_Y1: ∀n. ∞ ≤ n → n = ∞. +/2 width=3 by yle_inv_Y1_aux/ qed-. + +lemma yle_antisym: ∀y,x. x ≤ y → y ≤ x → x = y. +#x #y #H elim H -x -y +/4 width=1 by yle_inv_Y1, yle_inv_inj, le_to_le_to_eq, eq_f/ +qed-. + +(* Basic properties *********************************************************) + +lemma le_O1: ∀n:ynat. 0 ≤ n. +* /2 width=1 by yle_inj/ +qed. + +lemma yle_refl: reflexive … yle. +* /2 width=1 by le_n, yle_inj/ +qed. + +lemma yle_split: ∀x,y:ynat. x ≤ y ∨ y ≤ x. +* /2 width=1 by or_intror/ +#x * /2 width=1 by or_introl/ +#y elim (le_or_ge x y) /3 width=1 by yle_inj, or_introl, or_intror/ +qed-. + +(* Inversion lemmas on successor ********************************************) + +fact yle_inv_succ1_aux: ∀x,y:ynat. x ≤ y → ∀m. x = ↑m → m ≤ ↓y ∧ ↑↓y = y. +#x #y * -x -y +[ #x #y #Hxy #m #H elim (ysucc_inv_inj_sn … H) -H + #n #H1 #H2 destruct elim (le_inv_S1 … Hxy) -Hxy + #m #Hnm #H destruct /3 width=1 by yle_inj, conj/ +| #x #y #H destruct /2 width=1 by yle_Y, conj/ +] +qed-. + +lemma yle_inv_succ1: ∀m,y:ynat. ↑m ≤ y → m ≤ ↓y ∧ ↑↓y = y. +/2 width=3 by yle_inv_succ1_aux/ qed-. + +lemma yle_inv_succ: ∀m,n. ↑m ≤ ↑n → m ≤ n. +#m #n #H elim (yle_inv_succ1 … H) -H // +qed-. + +lemma yle_inv_succ2: ∀x,y. x ≤ ↑y → ↓x ≤ y. +#x #y #Hxy elim (ynat_cases x) +[ #H destruct // +| * #m #H destruct /2 width=1 by yle_inv_succ/ +] +qed-. + +(* Properties on predecessor ************************************************) + +lemma yle_pred_sn: ∀m,n. m ≤ n → ↓m ≤ n. +#m #n * -m -n /3 width=3 by transitive_le, yle_inj/ +qed. + +lemma yle_refl_pred_sn: ∀x. ↓x ≤ x. +/2 width=1 by yle_refl, yle_pred_sn/ qed. + +lemma yle_pred: ∀m,n. m ≤ n → ↓m ≤ ↓n. +#m #n * -m -n /3 width=1 by yle_inj, monotonic_pred/ +qed. + +(* Properties on successor **************************************************) + +lemma yle_succ: ∀m,n. m ≤ n → ↑m ≤ ↑n. +#m #n * -m -n /3 width=1 by yle_inj, le_S_S/ +qed. + +lemma yle_succ_dx: ∀m,n. m ≤ n → m ≤ ↑n. +#m #n * -m -n /3 width=1 by le_S, yle_inj/ +qed. + +lemma yle_refl_S_dx: ∀x. x ≤ ↑x. +/2 width=1 by yle_succ_dx/ qed. + +lemma yle_refl_SP_dx: ∀x. x ≤ ↑↓x. +* // * // +qed. + +lemma yle_succ2: ∀x,y. ↓x ≤ y → x ≤ ↑y. +#x #y #Hxy elim (ynat_cases x) +[ #H destruct // +| * #m #H destruct /2 width=1 by yle_succ/ +] +qed-. + +(* Main properties **********************************************************) + +theorem yle_trans: Transitive … yle. +#x #y * -x -y +[ #x #y #Hxy * // + #z #H lapply (yle_inv_inj … H) -H + /3 width=3 by transitive_le, yle_inj/ (**) (* full auto too slow *) +| #x #z #H lapply (yle_inv_Y1 … H) // +] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/ynat/ynat_lt.ma b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_lt.ma new file mode 100644 index 000000000..0ab7bee45 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_lt.ma @@ -0,0 +1,271 @@ +(**************************************************************************) +(* ___ *) +(* ||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/ynat/ynat_le.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* strict order relation *) +inductive ylt: relation ynat ≝ +| ylt_inj: ∀m,n. m < n → ylt m n +| ylt_Y : ∀m:nat. ylt m (∞) +. + +interpretation "ynat 'less than'" 'lt x y = (ylt x y). + +(* Basic forward lemmas *****************************************************) + +lemma ylt_fwd_gen: ∀x,y. x < y → ∃m. x = yinj m. +#x #y * -x -y /2 width=2 by ex_intro/ +qed-. + +lemma ylt_fwd_lt_O1: ∀x,y:ynat. x < y → 0 < y. +#x #y #H elim H -x -y /3 width=2 by ylt_inj, ltn_to_ltO/ +qed-. + +(* Basic inversion lemmas ***************************************************) + +fact ylt_inv_inj2_aux: ∀x,y. x < y → ∀n. y = yinj n → + ∃∃m. m < n & x = yinj m. +#x #y * -x -y +[ #x #y #Hxy #n #Hy elim (le_inv_S1 … Hxy) -Hxy + #m #Hm #H destruct /3 width=3 by le_S_S, ex2_intro/ +| #x #n #Hy destruct +] +qed-. + +lemma ylt_inv_inj2: ∀x,n. x < yinj n → + ∃∃m. m < n & x = yinj m. +/2 width=3 by ylt_inv_inj2_aux/ qed-. + +lemma ylt_inv_inj: ∀m,n. yinj m < yinj n → m < n. +#m #n #H elim (ylt_inv_inj2 … H) -H +#x #Hx #H destruct // +qed-. + +lemma ylt_inv_Y1: ∀n. ∞ < n → ⊥. +#n #H elim (ylt_fwd_gen … H) -H +#y #H destruct +qed-. + +lemma ylt_inv_Y2: ∀x:ynat. x < ∞ → ∃n. x = yinj n. +* /2 width=2 by ex_intro/ +#H elim (ylt_inv_Y1 … H) +qed-. + +lemma ylt_inv_O1: ∀n:ynat. 0 < n → ↑↓n = n. +* // #n #H lapply (ylt_inv_inj … H) -H normalize +/3 width=1 by S_pred, eq_f/ +qed-. + +(* Inversion lemmas on successor ********************************************) + +fact ylt_inv_succ1_aux: ∀x,y:ynat. x < y → ∀m. x = ↑m → m < ↓y ∧ ↑↓y = y. +#x #y * -x -y +[ #x #y #Hxy #m #H elim (ysucc_inv_inj_sn … H) -H + #n #H1 #H2 destruct elim (le_inv_S1 … Hxy) -Hxy + #m #Hnm #H destruct /3 width=1 by ylt_inj, conj/ +| #x #y #H elim (ysucc_inv_inj_sn … H) -H + #m #H #_ destruct /2 width=1 by ylt_Y, conj/ +] +qed-. + +lemma ylt_inv_succ1: ∀m,y:ynat. ↑m < y → m < ↓y ∧ ↑↓y = y. +/2 width=3 by ylt_inv_succ1_aux/ qed-. + +lemma ylt_inv_succ: ∀m,n. ↑m < ↑n → m < n. +#m #n #H elim (ylt_inv_succ1 … H) -H // +qed-. + +(* Forward lemmas on successor **********************************************) + +fact ylt_fwd_succ2_aux: ∀x,y. x < y → ∀n. y = ↑n → x ≤ n. +#x #y * -x -y +[ #x #y #Hxy #m #H elim (ysucc_inv_inj_sn … H) -H + #n #H1 #H2 destruct /3 width=1 by yle_inj, le_S_S_to_le/ +| #x #n #H lapply (ysucc_inv_Y_sn … H) -H // +] +qed-. + +lemma ylt_fwd_succ2: ∀m,n. m < ↑n → m ≤ n. +/2 width=3 by ylt_fwd_succ2_aux/ qed-. + +(* inversion and forward lemmas on order ************************************) + +lemma ylt_fwd_le_succ1: ∀m,n. m < n → ↑m ≤ n. +#m #n * -m -n /2 width=1 by yle_inj/ +qed-. + +lemma ylt_fwd_le_pred2: ∀x,y:ynat. x < y → x ≤ ↓y. +#x #y #H elim H -x -y /3 width=1 by yle_inj, monotonic_pred/ +qed-. + +lemma ylt_fwd_le: ∀m:ynat. ∀n:ynat. m < n → m ≤ n. +#m #n * -m -n /3 width=1 by lt_to_le, yle_inj/ +qed-. + +lemma ylt_yle_false: ∀m:ynat. ∀n:ynat. m < n → n ≤ m → ⊥. +#m #n * -m -n +[ #m #n #Hmn #H lapply (yle_inv_inj … H) -H + #H elim (lt_refl_false n) /2 width=3 by le_to_lt_to_lt/ +| #m #H lapply (yle_inv_Y1 … H) -H + #H destruct +] +qed-. + +lemma ylt_inv_le: ∀x,y. x < y → x < ∞ ∧ ↑x ≤ y. +#x #y #H elim H -x -y /3 width=1 by yle_inj, conj/ +qed-. + +(* Basic properties *********************************************************) + +lemma ylt_O1: ∀x:ynat. ↑↓x = x → 0 < x. +* // * /2 width=1 by ylt_inj/ normalize +#H destruct +qed. + +lemma yle_inv_succ_sn_lt (x:ynat) (y:ynat): + ↑x ≤ y → ∧∧ x ≤ ↓y & 0 < y. +#x #y #H elim (yle_inv_succ1 … H) -H /3 width=2 by ylt_O1, conj/ +qed-. + +(* Properties on predecessor ************************************************) + +lemma ylt_pred: ∀m,n:ynat. m < n → 0 < m → ↓m < ↓n. +#m #n * -m -n +/4 width=1 by ylt_inv_inj, ylt_inj, monotonic_lt_pred/ +qed. + +(* Properties on successor **************************************************) + +lemma ylt_O_succ: ∀x:ynat. 0 < ↑x. +* /2 width=1 by ylt_inj/ +qed. + +lemma ylt_succ: ∀m,n. m < n → ↑m < ↑n. +#m #n #H elim H -m -n /3 width=1 by ylt_inj, le_S_S/ +qed. + +lemma ylt_succ_Y: ∀x. x < ∞ → ↑x < ∞. +* /2 width=1 by/ qed. + +lemma yle_succ1_inj: ∀x. ∀y:ynat. ↑yinj x ≤ y → x < y. +#x * /3 width=1 by yle_inv_inj, ylt_inj/ +qed. + +lemma ylt_succ2_refl: ∀x,y:ynat. x < y → x < ↑x. +#x #y #H elim (ylt_fwd_gen … H) -y /2 width=1 by ylt_inj/ +qed. + +(* Properties on order ******************************************************) + +lemma yle_split_eq: ∀m,n:ynat. m ≤ n → m < n ∨ m = n. +#m #n * -m -n +[ #m #n #Hmn elim (le_to_or_lt_eq … Hmn) -Hmn + /3 width=1 by or_introl, ylt_inj/ +| * /2 width=1 by or_introl, ylt_Y/ +] +qed-. + +lemma ylt_split: ∀m,n:ynat. m < n ∨ n ≤ m. +#m #n elim (yle_split m n) /2 width=1 by or_intror/ +#H elim (yle_split_eq … H) -H /2 width=1 by or_introl, or_intror/ +qed-. + +lemma ylt_split_eq: ∀m,n:ynat. ∨∨ m < n | n = m | n < m. +#m #n elim (ylt_split m n) /2 width=1 by or3_intro0/ +#H elim (yle_split_eq … H) -H /2 width=1 by or3_intro1, or3_intro2/ +qed-. + +lemma ylt_yle_trans: ∀x:ynat. ∀y:ynat. ∀z:ynat. y ≤ z → x < y → x < z. +#x #y #z * -y -z +[ #y #z #Hyz #H elim (ylt_inv_inj2 … H) -H + #m #Hm #H destruct /3 width=3 by ylt_inj, lt_to_le_to_lt/ +| #y * // +] +qed-. + +lemma yle_ylt_trans: ∀x:ynat. ∀y:ynat. ∀z:ynat. y < z → x ≤ y → x < z. +#x #y #z * -y -z +[ #y #z #Hyz #H elim (yle_inv_inj2 … H) -H + #m #Hm #H destruct /3 width=3 by ylt_inj, le_to_lt_to_lt/ +| #y #H elim (yle_inv_inj2 … H) -H // +] +qed-. + +lemma le_ylt_trans (x) (y) (z): x ≤ y → yinj y < z → yinj x < z. +/3 width=3 by yle_ylt_trans, yle_inj/ +qed-. + +lemma yle_inv_succ1_lt: ∀x,y:ynat. ↑x ≤ y → 0 < y ∧ x ≤ ↓y. +#x #y #H elim (yle_inv_succ1 … H) -H /3 width=1 by ylt_O1, conj/ +qed-. + +lemma yle_lt: ∀x,y. x < ∞ → ↑x ≤ y → x < y. +#x * // #y #H elim (ylt_inv_Y2 … H) -H #n #H destruct +/3 width=1 by ylt_inj, yle_inv_inj/ +qed-. + +(* Main properties **********************************************************) + +theorem ylt_trans: Transitive … ylt. +#x #y * -x -y +[ #x #y #Hxy * // + #z #H lapply (ylt_inv_inj … H) -H + /3 width=3 by transitive_lt, ylt_inj/ (**) (* full auto too slow *) +| #x #z #H elim (ylt_yle_false … H) // +] +qed-. + +lemma lt_ylt_trans (x) (y) (z): x < y → yinj y < z → yinj x < z. +/3 width=3 by ylt_trans, ylt_inj/ +qed-. + +(* Elimination principles ***************************************************) + +fact ynat_ind_lt_le_aux: ∀R:predicate ynat. + (∀y. (∀x. x < y → R x) → R y) → + ∀y:nat. ∀x. x ≤ y → R x. +#R #IH #y elim y -y +[ #x #H >(yle_inv_O2 … H) -x + @IH -IH #x #H elim (ylt_yle_false … H) -H // +| /5 width=3 by ylt_yle_trans, ylt_fwd_succ2/ +] +qed-. + +fact ynat_ind_lt_aux: ∀R:predicate ynat. + (∀y. (∀x. x < y → R x) → R y) → + ∀y:nat. R y. +/4 width=2 by ynat_ind_lt_le_aux/ qed-. + +lemma ynat_ind_lt: ∀R:predicate ynat. + (∀y. (∀x. x < y → R x) → R y) → + ∀y. R y. +#R #IH * /4 width=1 by ynat_ind_lt_aux/ +@IH #x #H elim (ylt_inv_Y2 … H) -H +#n #H destruct /4 width=1 by ynat_ind_lt_aux/ +qed-. + +fact ynat_f_ind_aux: ∀A. ∀f:A→ynat. ∀R:predicate A. + (∀x. (∀a. f a < x → R a) → ∀a. f a = x → R a) → + ∀x,a. f a = x → R a. +#A #f #R #IH #x @(ynat_ind_lt … x) -x +/3 width=3 by/ +qed-. + +lemma ynat_f_ind: ∀A. ∀f:A→ynat. ∀R:predicate A. + (∀x. (∀a. f a < x → R a) → ∀a. f a = x → R a) → ∀a. R a. +#A #f #R #IH #a +@(ynat_f_ind_aux … IH) -IH [2: // | skip ] +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/ynat/ynat_minus_sn.ma b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_minus_sn.ma new file mode 100644 index 000000000..5a9ab855d --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_minus_sn.ma @@ -0,0 +1,221 @@ +(**************************************************************************) +(* ___ *) +(* ||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/ynat/ynat_plus.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* left subtraction *) +definition yminus_sn (x) (y): ynat ≝ ypred^y x. + +interpretation "ynat left minus" 'minus x y = (yminus_sn x y). + +lemma yminus_O2: ∀m:ynat. m - 0 = m. +// qed. + +lemma yminus_S2: ∀m:ynat. ∀n:nat. m - S n = ↓(m - n). +// qed. + +(* Basic properties *********************************************************) + +lemma yminus_inj: ∀m,n. yinj m - n = yinj (m - n). +#m #n elim n -n // +#n #IH >yminus_S2 >IH -IH >eq_minus_S_pred // +qed. + +lemma yminus_Y_inj: ∀n. ∞ - n = ∞. +#n elim n -n // +qed. + +lemma yminus_O1: ∀x:nat. yinj 0 - x = 0. +// qed. + +lemma yminus_refl: ∀x:nat. yinj x - x = 0. +// qed. + +lemma yminus_minus_comm: ∀x:ynat. ∀y,z. x - y - z = x - z - y. +* // qed. + +(* Properties on predecessor ************************************************) + +lemma yminus_SO2: ∀m:ynat. m - 1 = ↓m. +// qed. + +lemma yminus_pred1: ∀x,y. ↓x - y = ↓(x-y). +#x * // #y elim y -y // +qed. + +lemma yminus_pred: ∀m:ynat. ∀n. 0 < m → 0 < n → ↓m - ↓n = m - n. +* // #m #n >yminus_inj >yminus_inj +/4 width=1 by ylt_inv_inj, minus_pred_pred, eq_f/ +qed-. + +(* Properties on successor **************************************************) + +lemma yminus_succ: ∀m:ynat. ∀n. ↑m - ↑n = m - n. +* // qed. + +lemma yminus_succ1_inj: ∀n:nat. ∀m:ynat. n ≤ m → ↑m - n = ↑(m - n). +#n * +[ #m #Hmn >yminus_inj >yminus_inj + /4 width=1 by yle_inv_inj, plus_minus, eq_f/ +| >yminus_Y_inj // +] +qed-. + +lemma yminus_succ2: ∀x:ynat. ∀y. x - ↑y = ↓(x-y). +* // +qed. + +(* Properties on order ******************************************************) + +lemma yle_minus_sn: ∀m:ynat. ∀n. m - n ≤ m. +* // #n /2 width=1 by yle_inj/ +qed. + +lemma yle_to_minus: ∀m:ynat. ∀n:nat. m ≤ n → m - n = 0. +* +[ #m #n #H >yminus_inj /4 width=1 by yle_inv_inj, eq_minus_O, eq_f/ +| #n #H lapply (yle_inv_Y1 … H) -H #H destruct +] +qed-. + +lemma yminus_to_le: ∀m:ynat. ∀n. m - n = 0 → m ≤ n. +* [2: #n >yminus_Y_inj #H destruct ] +#m #n >yminus_inj #H +lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) +/2 width=1 by yle_inj/ +qed. + +lemma monotonic_yle_minus_dx: ∀x,y. x ≤ y → ∀z. x - z ≤ y - z. +#x #y * /3 width=1 by yle_inj, monotonic_le_minus_l2/ +qed. + +(* Properties on strict order ***********************************************) + +lemma ylt_to_minus: ∀y:ynat. ∀x. yinj x < y → 0 < y - x. +* // #y #x #H >yminus_inj +/4 width=1 by ylt_inj, ylt_inv_inj, lt_plus_to_minus_r/ +qed. + +lemma yminus_to_lt: ∀y:ynat. ∀x. 0 < y - x → x < y. +* // #y #x >yminus_inj #H +/4 width=1 by ylt_inv_inj, ylt_inj, lt_minus_to_plus_r/ +qed-. + +lemma monotonic_ylt_minus_dx: ∀x,y:ynat. x < y → ∀z:nat. z ≤ x → x - z < y - z. +#x #y * -x -y +/4 width=1 by ylt_inj, yle_inv_inj, monotonic_lt_minus_l/ +qed. + +(* Properties on minus ******************************************************) + +lemma yplus_minus: ∀m:ynat. ∀n:nat. m + n - n = m. +#m #n elim n -n // +#n #IHn >(yplus_succ2 m n) >(yminus_succ … n) // +qed. + +lemma yminus_plus2: ∀x:ynat. ∀y,z. x - (y + z) = x - y - z. +* // qed. + +(* Forward lemmas on minus **************************************************) + +lemma yle_plus1_to_minus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y. +#x #z #y #H lapply (monotonic_yle_minus_dx … H y) -H // +qed-. + +lemma yle_plus1_to_minus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y. +/2 width=1 by yle_plus1_to_minus_inj2/ qed-. + +lemma yle_plus2_to_minus_inj2: ∀x,y:ynat. ∀z:nat. x ≤ y + z → x - z ≤ y. +/2 width=1 by monotonic_yle_minus_dx/ qed-. + +lemma yle_plus2_to_minus_inj1: ∀x,y:ynat. ∀z:nat. x ≤ z + y → x - z ≤ y. +/2 width=1 by yle_plus2_to_minus_inj2/ qed-. + +lemma yminus_plus (x:ynat) (y:nat): y ≤ x → x = (x-y)+y. +* // #x #y #H >yminus_inj >yplus_inj +/4 width=1 by yle_inv_inj, plus_minus, eq_f/ +qed-. + +lemma yplus_minus_assoc_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z + (y - x) = z + y - x. +#x * +[ #y * // #z >yminus_inj >yplus_inj >yplus_inj + /4 width=1 by yle_inv_inj, plus_minus, eq_f/ +| >yminus_Y_inj // +] +qed-. + +alias symbol "plus" (instance 5) = "ynat plus". +alias symbol "minus" (instance 4) = "ynat left minus". +alias symbol "minus" (instance 3) = "natural minus". +alias symbol "minus" (instance 2) = "ynat left minus". +alias symbol "leq" (instance 6) = "natural 'less or equal to'". +lemma yplus_minus_assoc_comm_inj: ∀z:ynat. ∀x,y:nat. x ≤ y → z - (y - x) = z + x - y. +* // #z #x #y >yminus_inj >yplus_inj >yminus_inj +/4 width=1 by yle_inv_inj, minus_le_minus_minus_comm, eq_f/ +qed-. + +lemma yplus_minus_comm_inj: ∀y:nat. ∀x,z:ynat. y ≤ x → x + z - y = x - y + z. +#y * // #x * // +#z #Hxy >yplus_inj >yminus_inj yplus_inj #H destruct +qed-. + +lemma yplus_inv_minus: + ∀x1,y2:ynat.∀y1,x2:nat. + y1 ≤ x1 → x1 + x2 = y2 + y1 → ∧∧ x1 - y1 = y2 - x2 & x2 ≤ y2. +* +[ #x1 * [| #y1 #x2 #_ >yplus_inj >yplus_Y1 #H destruct ] + #y2 #y1 #x2 #H1 >yplus_inj >yplus_inj #H2 >yminus_inj >yminus_inj + lapply (yle_inv_inj … H1) -H1 #Hyx1 + lapply (yinj_inj … H2) -H2 #Hxy (**) (* destruct lemma needed *) + /5 width=4 by yle_inj, plus2_le_sn_sn, plus_to_minus_2, conj, eq_f2/ +| #y2 #y1 #x2 #_ >yplus_Y1 #H + elim (yplus_inv_Y1 … H) -H #H destruct /2 width=1 by conj/ +] +qed-. + +(* Inversion lemmas on minus ************************************************) + +lemma yle_inv_plus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y ∧ y ≤ z. +/3 width=3 by yle_plus1_to_minus_inj2, yle_trans, conj/ qed-. + +lemma yle_inv_plus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y ∧ y ≤ z. +/2 width=1 by yle_inv_plus_inj2/ qed-. + +lemma yle_inv_plus_inj_dx: ∀z,x:ynat. ∀y:nat. x + y ≤ z → + ∧∧ x ≤ z - y & y ≤ z. +* [| /2 width=1 by conj/ ] +#z * [| #y >yplus_Y1 #H >(yle_inv_Y1 … H) -z /2 width=1 by conj/ ] +#x #y >yplus_inj #H >yminus_inj +/5 width=2 by yle_inv_inj, yle_inj, le_plus_to_minus_r, le_plus_b, conj/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/ynat/ynat_plus.ma b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_plus.ma new file mode 100644 index 000000000..b33f9300a --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_plus.ma @@ -0,0 +1,313 @@ +(**************************************************************************) +(* ___ *) +(* ||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/xoa/ex_3_2.ma". +include "ground/ynat/ynat_lt.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* addition *) +definition yplus: ynat → ynat → ynat ≝ λx,y. match y with +[ yinj n ⇒ ysucc^n x +| Y ⇒ Y +]. + +interpretation "ynat plus" 'plus x y = (yplus x y). + +lemma yplus_O2: ∀m:ynat. m + 0 = m. +// qed. + +lemma yplus_S2: ∀m:ynat. ∀n. m + S n = ↑(m + n). +// qed. + +lemma yplus_Y2: ∀m:ynat. m + (∞) = ∞. +// qed. + +(* Properties on successor **************************************************) + +lemma yplus_succ2: ∀m,n. m + ↑n = ↑(m + n). +#m * // +qed. + +lemma yplus_succ1: ∀m,n. ↑m + n = ↑(m + n). +#m * // #n elim n -n // +qed. + +lemma yplus_succ_swap: ∀m,n. m + ↑n = ↑m + n. +// qed. + +lemma yplus_SO2: ∀m:ynat. m + 1 = ↑m. +* // +qed. + +(* Basic properties *********************************************************) + +lemma yplus_inj: ∀n,m. yinj m + yinj n = yinj (m + n). +#n elim n -n // +#n #IHn #m >(yplus_succ2 ? n) >IHn -IHn +yplus_inj whd in ⊢ (??%%); yplus_Y1 // +] +qed. + +lemma yplus_O1: ∀n:ynat. 0 + n = n. +#n >yplus_comm // qed. + +lemma yplus_comm_23: ∀x,y,z. x + z + y = x + y + z. +#x #y #z >yplus_assoc // +qed. + +lemma yplus_comm_24: ∀x1,x2,x3,x4. x1 + x4 + x3 + x2 = x1 + x2 + x3 + x4. +#x1 #x2 #x3 #x4 +>yplus_assoc >yplus_assoc >yplus_assoc >yplus_assoc +/2 width=1 by eq_f2/ +qed. + +lemma yplus_assoc_23: ∀x1,x2,x3,x4. x1 + x2 + (x3 + x4) = x1 + (x2 + x3) + x4. +#x1 #x2 #x3 #x4 >yplus_assoc >yplus_assoc +/2 width=1 by eq_f2/ +qed. + +(* Inversion lemmas on successor *********************************************) + +lemma yplus_inv_succ_lt_dx: ∀x,y,z:ynat. 0 < y → x + y = ↑z → x + ↓y = z. +#x #y #z #H <(ylt_inv_O1 y) // >yplus_succ2 +/2 width=1 by ysucc_inv_inj/ +qed-. + +lemma yplus_inv_succ_lt_sn: ∀x,y,z:ynat. 0 < x → x + y = ↑z → ↓x + y = z. +#x #y #z #H <(ylt_inv_O1 x) // >yplus_succ1 +/2 width=1 by ysucc_inv_inj/ + +qed-. + +(* Inversion lemmas on order ************************************************) + +lemma yle_inv_plus_dx: ∀x,y. x ≤ y → ∃z. x + z = y. +#x #y #H elim H -x -y /2 width=2 by ex_intro/ +#m #n #H @(ex_intro … (yinj (n-m))) (**) (* explicit constructor *) +/3 width=1 by plus_minus, eq_f/ +qed-. + +lemma yle_inv_plus_sn: ∀x,y. x ≤ y → ∃z. z + x = y. +#x #y #H elim (yle_inv_plus_dx … H) -H +/2 width=2 by ex_intro/ +qed-. + +(* Basic inversion lemmas ***************************************************) + +lemma yplus_inv_inj: ∀z,y,x. x + y = yinj z → + ∃∃m,n. m + n = z & x = yinj m & y = yinj n. +#z * [2: normalize #x #H destruct ] +#y * [2: >yplus_Y1 #H destruct ] +/3 width=5 by yinj_inj, ex3_2_intro/ +qed-. + +lemma yplus_inv_O: ∀x,y:ynat. x + y = 0 → x = 0 ∧ y = 0. +#x #y #H elim (yplus_inv_inj … H) -H +#m * /2 width=1 by conj/ #n yplus_Y2 #H destruct ] +#y yplus_succ1 #H +lapply (ysucc_inv_inj … H) -H #H +elim (IHx … H) -IHx -H /2 width=1 by or_introl, or_intror/ +qed-. + +lemma discr_yplus_x_xy: ∀x,y. x = x + y → x = ∞ ∨ y = 0. +/2 width=1 by discr_yplus_xy_x/ qed-. + +lemma yplus_inv_monotonic_dx_inj: ∀z,x,y. x + yinj z = y + yinj z → x = y. +#z @(nat_ind_plus … z) -z /3 width=2 by ysucc_inv_inj/ +qed-. + +lemma yplus_inv_monotonic_dx: ∀z,x,y. z < ∞ → x + z = y + z → x = y. +#z #x #y #H elim (ylt_inv_Y2 … H) -H /2 width=2 by yplus_inv_monotonic_dx_inj/ +qed-. + +lemma yplus_inv_Y2: ∀x,y. x + y = ∞ → x = ∞ ∨ y = ∞. +* /2 width=1 by or_introl/ #x * // #y >yplus_inj #H destruct +qed-. + +lemma yplus_inv_monotonic_23: ∀z,x1,x2,y1,y2. z < ∞ → + x1 + z + y1 = x2 + z + y2 → x1 + y1 = x2 + y2. +#z #x1 #x2 #y1 #y2 #Hz #H @(yplus_inv_monotonic_dx z) // +>yplus_comm_23 >H -H // +qed-. + +(* Inversion lemmas on strict_order *****************************************) + +lemma ylt_inv_plus_Y: ∀x,y. x + y < ∞ → x < ∞ ∧ y < ∞. +#x #y #H elim (ylt_inv_Y2 … H) -H +#z #H elim (yplus_inv_inj … H) -H /2 width=1 by conj/ +qed-. + +lemma ylt_inv_plus_sn: ∀x,y. x < y → ∃∃z. ↑z + x = y & x < ∞. +#x #y #H elim (ylt_inv_le … H) -H +#Hx #H elim (yle_inv_plus_sn … H) -H +/2 width=2 by ex2_intro/ +qed-. + +lemma ylt_inv_plus_dx: ∀x,y. x < y → ∃∃z. x + ↑z = y & x < ∞. +#x #y #H elim (ylt_inv_plus_sn … H) -H +#z >yplus_comm /2 width=2 by ex2_intro/ +qed-. + +(* Properties on order ******************************************************) + +lemma yle_plus_dx2: ∀n,m. n ≤ m + n. +* // +#n elim n -n // +#n #IHn #m >(yplus_succ2 ? n) @(yle_succ n) // (**) (* full auto fails *) +qed. + +lemma yle_plus_dx1: ∀n,m. m ≤ m + n. +// qed. + +lemma yle_plus_dx1_trans: ∀x,z. z ≤ x → ∀y. z ≤ x + y. +/2 width=3 by yle_trans/ qed. + +lemma yle_plus_dx2_trans: ∀y,z. z ≤ y → ∀x. z ≤ x + y. +/2 width=3 by yle_trans/ qed. + +lemma monotonic_yle_plus_dx: ∀x,y. x ≤ y → ∀z. x + z ≤ y + z. +#x #y #Hxy * // +#z elim z -z /3 width=1 by yle_succ/ +qed. + +lemma monotonic_yle_plus_sn: ∀x,y. x ≤ y → ∀z. z + x ≤ z + y. +/2 width=1 by monotonic_yle_plus_dx/ qed. + +lemma monotonic_yle_plus: ∀x1,y1. x1 ≤ y1 → ∀x2,y2. x2 ≤ y2 → + x1 + x2 ≤ y1 + y2. +/3 width=3 by monotonic_yle_plus_dx, monotonic_yle_plus_sn, yle_trans/ qed. + +lemma ylt_plus_Y: ∀x,y. x < ∞ → y < ∞ → x + y < ∞. +#x #y #Hx elim (ylt_inv_Y2 … Hx) -Hx +#m #Hm #Hy elim (ylt_inv_Y2 … Hy) -Hy // +qed. + +(* Forward lemmas on order **************************************************) + +lemma yle_fwd_plus_sn2: ∀x,y,z. x + y ≤ z → y ≤ z. +/2 width=3 by yle_trans/ qed-. + +lemma yle_fwd_plus_sn1: ∀x,y,z. x + y ≤ z → x ≤ z. +/2 width=3 by yle_trans/ qed-. + +lemma yle_inv_monotonic_plus_dx_inj: ∀x,y:ynat.∀z:nat. x + z ≤ y + z → x ≤ y. +#x #y #z elim z -z /3 width=1 by yle_inv_succ/ +qed-. + +lemma yle_inv_monotonic_plus_sn_inj: ∀x,y:ynat.∀z:nat. z + x ≤ z + y → x ≤ y. +/2 width=2 by yle_inv_monotonic_plus_dx_inj/ qed-. + +lemma yle_inv_monotonic_plus_dx: ∀x,y,z. z < ∞ → x + z ≤ y + z → x ≤ y. +#x #y #z #Hz elim (ylt_inv_Y2 … Hz) -Hz #m #H destruct +/2 width=2 by yle_inv_monotonic_plus_sn_inj/ +qed-. + +lemma yle_inv_monotonic_plus_sn: ∀x,y,z. z < ∞ → z + x ≤ z + y → x ≤ y. +/2 width=3 by yle_inv_monotonic_plus_dx/ qed-. + +lemma yle_fwd_plus_ge: ∀m1,m2:nat. m2 ≤ m1 → ∀n1,n2:ynat. m1 + n1 ≤ m2 + n2 → n1 ≤ n2. +#m1 #m2 #Hm12 #n1 #n2 #H +lapply (monotonic_yle_plus … Hm12 … H) -Hm12 -H +/2 width=2 by yle_inv_monotonic_plus_sn_inj/ +qed-. + +lemma yle_fwd_plus_ge_inj: ∀m1:nat. ∀m2,n1,n2:ynat. m2 ≤ m1 → m1 + n1 ≤ m2 + n2 → n1 ≤ n2. +#m2 #m1 #n1 #n2 #H elim (yle_inv_inj2 … H) -H +#x #H0 #H destruct /3 width=4 by yle_fwd_plus_ge, yle_inj/ +qed-. + +lemma yle_fwd_plus_yge: ∀n2,m1:ynat. ∀n1,m2:nat. m2 ≤ m1 → m1 + n1 ≤ m2 + n2 → n1 ≤ n2. +* // #n2 * /2 width=4 by yle_fwd_plus_ge_inj/ +qed-. + +(* Properties on strict order ***********************************************) + +lemma ylt_plus_dx1_trans: ∀x,z. z < x → ∀y. z < x + y. +/2 width=3 by ylt_yle_trans/ qed. + +lemma ylt_plus_dx2_trans: ∀y,z. z < y → ∀x. z < x + y. +/2 width=3 by ylt_yle_trans/ qed. + +lemma monotonic_ylt_plus_dx_inj: ∀x,y. x < y → ∀z:nat. x + yinj z < y + yinj z. +#x #y #Hxy #z elim z -z /3 width=1 by ylt_succ/ +qed. + +lemma monotonic_ylt_plus_sn_inj: ∀x,y. x < y → ∀z:nat. yinj z + x < yinj z + y. +/2 width=1 by monotonic_ylt_plus_dx_inj/ qed. + +lemma monotonic_ylt_plus_dx: ∀x,y. x < y → ∀z. z < ∞ → x + z < y + z. +#x #y #Hxy #z #Hz elim (ylt_inv_Y2 … Hz) -Hz +#m #H destruct /2 width=1 by monotonic_ylt_plus_dx_inj/ +qed. + +lemma monotonic_ylt_plus_sn: ∀x,y. x < y → ∀z. z < ∞ → z + x < z + y. +/2 width=1 by monotonic_ylt_plus_dx/ qed. + +lemma monotonic_ylt_plus_inj: ∀m1,m2. m1 < m2 → ∀n1,n2. yinj n1 ≤ n2 → m1 + n1 < m2 + n2. +/3 width=3 by monotonic_ylt_plus_sn_inj, monotonic_yle_plus_sn, ylt_yle_trans/ +qed. + +lemma monotonic_ylt_plus: ∀m1,m2. m1 < m2 → ∀n1. n1 < ∞ → ∀n2. n1 ≤ n2 → m1 + n1 < m2 + n2. +#m1 #m2 #Hm12 #n1 #H elim (ylt_inv_Y2 … H) -H #m #H destruct /2 width=1 by monotonic_ylt_plus_inj/ +qed. + +(* Forward lemmas on strict order *******************************************) + +lemma ylt_inv_monotonic_plus_dx: ∀x,y,z. x + z < y + z → x < y. +* [2: #y #z >yplus_comm #H elim (ylt_inv_Y1 … H) ] +#x * // #y * [2: #H elim (ylt_inv_Y1 … H) ] +/4 width=3 by ylt_inv_inj, ylt_inj, lt_plus_to_lt_l/ +qed-. + +lemma ylt_fwd_plus_ge: ∀m1,m2. m2 ≤ m1 → ∀n1,n2. m1 + n1 < m2 + n2 → n1 < n2. +#m1 #m2 #Hm12 #n1 #n2 #H elim (ylt_fwd_gen … H) +#x #H0 elim (yplus_inv_inj … H0) -H0 +#y #z #_ #H2 #H3 destruct -x +elim (yle_inv_inj2 … Hm12) +#x #_ #H0 destruct +lapply (monotonic_ylt_plus … H … Hm12) -H -Hm12 +/2 width=2 by ylt_inv_monotonic_plus_dx/ +qed-. + +(* Properties on predeccessor ***********************************************) + +lemma yplus_pred1: ∀x,y:ynat. 0 < x → ↓x + y = ↓(x+y). +#x * // #y elim y -y // #y #IH #Hx +>yplus_S2 >yplus_S2 >IH -IH // >ylt_inv_O1 +/2 width=1 by ylt_plus_dx1_trans/ +qed-. + +lemma yplus_pred2: ∀x,y:ynat. 0 < y → x + ↓y = ↓(x+y). +/2 width=1 by yplus_pred1/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/ynat/ynat_pred.ma b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_pred.ma new file mode 100644 index 000000000..e35f1de4e --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_pred.ma @@ -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 "ground/ynat/ynat.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* the predecessor function *) +definition ypred: ynat → ynat ≝ λm. match m with +[ yinj m ⇒ ↓m +| Y ⇒ Y +]. + +interpretation "ynat predecessor" 'DownArrow m = (ypred m). + +lemma ypred_O: ↓(yinj 0) = yinj 0. +// qed. + +lemma ypred_S: ∀m:nat. ↓(↑m) = yinj m. +// qed. + +lemma ypred_Y: (↓∞) = ∞. +// qed. + +(* Inversion lemmas *********************************************************) + +lemma ypred_inv_refl: ∀m:ynat. ↓m = m → m = 0 ∨ m = ∞. +* // #m #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) +/4 width=1 by pred_inv_fix_sn, or_introl, eq_f/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground/ynat/ynat_succ.ma b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_succ.ma new file mode 100644 index 000000000..f7c8dc521 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/ground/ynat/ynat_succ.ma @@ -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 "ground/ynat/ynat_pred.ma". + +(* NATURAL NUMBERS WITH INFINITY ********************************************) + +(* the successor function *) +definition ysucc: ynat → ynat ≝ λm. match m with +[ yinj m ⇒ ↑m +| Y ⇒ Y +]. + +interpretation "ynat successor" 'UpArrow m = (ysucc m). + +lemma ysucc_inj: ∀m:nat. ↑(yinj m) = yinj (↑m). +// qed. + +lemma ysucc_Y: ↑(∞) = ∞. +// qed. + +(* Properties ***************************************************************) + +lemma ypred_succ: ∀m. ↓↑m = m. +* // qed. + +lemma ynat_cases: ∀n:ynat. n = 0 ∨ ∃m:ynat. n = ↑m. +* +[ * /2 width=1 by or_introl/ + #n @or_intror @(ex_intro … n) // (**) (* explicit constructor *) +| @or_intror @(ex_intro … (∞)) // (**) (* explicit constructor *) +] +qed-. + +lemma ysucc_iter_Y: ∀m. ysucc^m (∞) = ∞. +#m elim m -m // +#m #IHm whd in ⊢ (??%?); >IHm // +qed. + +(* Inversion lemmas *********************************************************) + +lemma ysucc_inv_inj: ∀m,n. ↑m = ↑n → m = n. +#m #n #H <(ypred_succ m) <(ypred_succ n) // +qed-. + +lemma ysucc_inv_refl: ∀m. ↑m = m → m = ∞. +* // +#m #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) +#H elim (lt_refl_false m) // +qed-. + +lemma ysucc_inv_inj_sn: ∀m2,n1. yinj m2 = ↑n1 → + ∃∃m1. n1 = yinj m1 & m2 = S m1. +#m2 * normalize +[ #n1 #H destruct /2 width=3 by ex2_intro/ +| #H destruct +] +qed-. + +lemma ysucc_inv_inj_dx: ∀m2,n1. ↑n1 = yinj m2 → + ∃∃m1. n1 = yinj m1 & m2 = S m1. +/2 width=1 by ysucc_inv_inj_sn/ qed-. + +lemma ysucc_inv_Y_sn: ∀m. ∞ = ↑m → m = ∞. +* // normalize +#m #H destruct +qed-. + +lemma ysucc_inv_Y_dx: ∀m. ↑m = ∞ → m = ∞. +/2 width=1 by ysucc_inv_Y_sn/ qed-. + +lemma ysucc_inv_O_sn: ∀m. yinj 0 = ↑m → ⊥. (**) (* explicit coercion *) +#m #H elim (ysucc_inv_inj_sn … H) -H +#n #_ #H destruct +qed-. + +lemma ysucc_inv_O_dx: ∀m:ynat. ↑m = 0 → ⊥. +/2 width=2 by ysucc_inv_O_sn/ qed-. + +(* Eliminators **************************************************************) + +lemma ynat_ind: ∀R:predicate ynat. + R 0 → (∀n:nat. R n → R (↑n)) → R (∞) → + ∀x. R x. +#R #H1 #H2 #H3 * // #n elim n -n /2 width=1 by/ +qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/lib/arith.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/lib/arith.etc deleted file mode 100644 index 11ef739da..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/lib/arith.etc +++ /dev/null @@ -1,36 +0,0 @@ - -lemma zero_or_gt: ∀n. n = 0 ∨ 0 < n. -#n elim (lt_or_eq_or_gt 0 n) /2/ -#H elim (lt_zero_false … H) -qed. - -lemma pippo: ∀x,y,z. x < z → y < z - x → x + y < z. -/3 width=2/ - -lemma arith_b1x: ∀e,x1,x2,y. y ≤ x2 → x2 ≤ x1 → - e + (x1 - y) - (x2 - y) = e + (x1 - x2). -#e #x1 #x2 #y #H1 #H2 -<(arith_b1 … H1) >le_plus_minus // /2 width=1/ -qed-. - -lemma arith1: ∀x,y,z,w. z < y → x + (y + w) - z = x + y - z + w. -#x #y #z #w #H minus_minus [|*: // ] "hvbox( l1 ⊕ break l2 )" - left associative with precedence 60 - for @{ 'OPlus ? ? $l1 $l2 }. -(* -(**) fix pair notation -notation > "hvbox( l1 ⊕{ break term 46 A, break term 46 A } break term 61 l2 )" - non associative with precedence 60 - for @{ 'OPlus $A $B $l1 $l2 }. -*) diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/lib/relations.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/lib/relations.etc deleted file mode 100644 index 6166cf7ee..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/lib/relations.etc +++ /dev/null @@ -1,21 +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 "basics/relations.ma". - -(* ADDITIONAL PROPERTIES OF RELATIONS ***************************************) - -lemma replace2: ∀A,B:Type[0]. ∀R:relation2 A B. ∀x1,y1,x2,y2. - R x1 x2 → y1 = x1 → y2 = x2 → R y1 y2. -// qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/lib/star.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/lib/star.etc deleted file mode 100644 index fb4d9c3e4..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/lib/star.etc +++ /dev/null @@ -1,31 +0,0 @@ -lemma TC_case_sn: ∀A,R. reflexive A R → - ∀a1,a2. TC … R a1 a2 → ∃∃a. R a1 a & TC … R a a2. -#A #R #HR #a1 #a2 #H @(TC_ind_dx … a1 H) -a1 -[ /3 width=3 by inj, ex2_intro/ -| #a1 #a0 #Ha10 #Ha02 #_ /2 width=3 by ex2_intro/ (**) (* auto fails withput #_ *) -] -qed-. - -lemma TC_case_dx: ∀A,R. reflexive A R → - ∀a1,a2. TC … R a1 a2 → ∃∃a. TC … R a1 a & R a a2. -#A #R #HR #a1 #a2 #H @(TC_ind … a2 H) -a2 -[ /3 width=3 by inj, ex2_intro/ -| #a0 #a2 #Ha10 #Ha02 #_ /2 width=3 by ex2_intro/ (**) (* auto fails withput #_ *) -] -qed-. - -definition s_r_trans: ∀A,B. relation2 (A→relation B) (relation A) ≝ λA,B,R1,R2. - ∀L2,T1,T2. R1 L2 T1 T2 → ∀L1. R2 L1 L2 → LTC … R1 L1 T1 T2. - -definition s_rs_trans: ∀A,B. relation2 (A→relation B) (relation A) ≝ λA,B,R1,R2. - ∀L2,T1,T2. LTC … R1 L2 T1 T2 → ∀L1. R2 L1 L2 → LTC … R1 L1 T1 T2. - -lemma s_r_trans_TC1: ∀A,B,R,S. s_r_trans A B R S → s_rs_trans A B R S. -#A #B #R #S #HRS #L2 #T1 #T2 #H elim H -T2 [ /3 width=3/ ] -#T #T2 #_ #HT2 #IHT1 #L1 #HL12 -lapply (HRS … HT2 … HL12) -HRS -HT2 /3 width=3/ -qed-. - -lemma s_r_trans_TC2: ∀A,B,R,S. s_rs_trans A B R S → s_r_trans A B R (TC … S). -#A #B #R #S #HRS #L2 #T1 #T2 #HT12 #L1 #H @(TC_ind_dx … L1 H) -L1 /2 width=3/ /3 width=3/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/complement_1.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/complement_1.etc deleted file mode 100644 index a10c80f17..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/complement_1.etc +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ∁ term 70 t )" - non associative with precedence 70 - for @{ 'Complement $t }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/norm_1.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/norm_1.etc deleted file mode 100644 index d0f0719f1..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/norm_1.etc +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox ( ∥ term 19 C ∥ )" - with precedence 70 - for @{ 'Norm $C }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/rtmap_le.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/rtmap_le.etc deleted file mode 100644 index 6fe63a523..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/rtmap_le.etc +++ /dev/null @@ -1,59 +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/relocation/rtmap_tl.ma". - -(* RELOCATION MAP ***********************************************************) - -inductive le (f1): predicate rtmap ≝ -| le_eq: ∀f2. f1 ≗ f2 → le f1 f2 -| le_tl: ∀f2,g2. le f1 f2 → ↓g2 = f2 → le f1 g2 -. - -interpretation "less or equal to (rtmap)" 'leq x y = (le x y). - -(* Basic properties *********************************************************) - -lemma le_refl: reflexive … le. -/2 width=1 by eq_refl, le_eq/ qed. - -lemma le_eq_repl_back_dx: ∀f1. eq_repl_back (λf2. f1 ≤ f2). -#f #f1 #Hf1 elim Hf1 -f1 -/4 width=3 by le_tl, le_eq, tl_eq_repl, eq_trans/ -qed-. - -lemma le_eq_repl_fwd_dx: ∀f1. eq_repl_fwd (λf2. f1 ≤ f2). -#f1 @eq_repl_sym /2 width=3 by le_eq_repl_back_dx/ -qed-. - -lemma le_eq_repl_back_sn: ∀f2. eq_repl_back (λf1. f1 ≤ f2). -#f #f1 #Hf1 elim Hf1 -f -/4 width=3 by le_tl, le_eq, tl_eq_repl, eq_canc_sn/ -qed-. - -lemma le_eq_repl_fwd_sn: ∀f2. eq_repl_fwd (λf1. f1 ≤ f2). -#f2 @eq_repl_sym /2 width=3 by le_eq_repl_back_sn/ -qed-. - -lemma le_tl_comp: ∀f1,f2. f1 ≤ f2 → ∀g1,g2. ↓f1 = g1 → ↓f2 = g2 → g1 ≤ g2. -#f1 #f2 #H elim H -f2 -/3 width=3 by le_tl, le_eq, tl_eq_repl/ -qed. - -(* Main properties **********************************************************) - -theorem le_trans: Transitive … le. -#f1 #f #H elim H -f -/4 width=5 by le_tl_comp, le_eq_repl_fwd_sn, le_tl/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace.etc deleted file mode 100644 index 699942e05..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace.etc +++ /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 "ground_2/notation/functions/norm_1.ma". -include "ground_2/lib/bool.ma". -include "ground_2/lib/list.ma". - -(* RELOCATION TRACE *********************************************************) - -definition trace: Type[0] ≝ list bool. - -let rec colength (cs:trace) on cs ≝ match cs with -[ nil ⇒ 0 -| cons b tl ⇒ match b with [ true ⇒ ⫯(colength tl) | false ⇒ colength tl ] -]. - -interpretation "colength (trace)" - 'Norm cs = (colength cs). - -(* basic properties *********************************************************) - -lemma colength_empty: ∥◊∥ = 0. -// qed. - -lemma colength_true: ∀cs. ∥Ⓣ@cs∥ = ⫯∥cs∥. -// qed. - -lemma colength_false: ∀cs. ∥Ⓕ@cs∥ = ∥cs∥. -// qed. - -lemma colength_cons: ∀cs1,cs2. ∥cs1∥ = ∥cs2∥ → - ∀b. ∥b@cs1∥ = ∥b@cs2∥. -#cs1 #cs2 #H * /2 width=1 by/ -qed. - -lemma colength_le: ∀cs. ∥cs∥ ≤ |cs|. -#cs elim cs -cs // -* /2 width=1 by le_S_S, le_S/ -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_after.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_after.etc deleted file mode 100644 index 78dd6fb9a..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_after.etc +++ /dev/null @@ -1,271 +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/notation/relations/rafter_3.ma". -include "ground_2/relocation/trace_at.ma". - -(* RELOCATION TRACE *********************************************************) - -inductive after: relation3 trace trace trace ≝ - | after_empty: after (◊) (◊) (◊) - | after_true : ∀cs1,cs2,cs. after cs1 cs2 cs → - ∀b. after (Ⓣ @ cs1) (b @ cs2) (b @ cs) - | after_false: ∀cs1,cs2,cs. after cs1 cs2 cs → - after (Ⓕ @ cs1) cs2 (Ⓕ @ cs). - -interpretation "composition (trace)" - 'RAfter cs1 cs2 cs = (after cs1 cs2 cs). - -(* Basic properties *********************************************************) - -lemma after_length: ∀cs1,cs2. ∥cs1∥ = |cs2| → - ∃∃cs. cs1 ⊚ cs2 ≡ cs & |cs| = |cs1| & ∥cs∥ = ∥cs2∥. -#cs1 elim cs1 -cs1 -[ #cs2 #H >(length_inv_zero_sn … H) -cs2 /2 width=4 by after_empty, ex3_intro/ -| * #cs1 #IH #cs2 #Hcs - [ elim (length_inv_succ_sn … Hcs) -Hcs - #tl #b #Hcs #H destruct - ] - elim (IH … Hcs) -IH -Hcs - #cs #Hcs #H1 #H2 [ @(ex3_intro … (b@cs)) | @(ex3_intro … (Ⓕ@cs)) ] /2 width=1 by after_true, after_false, colength_cons/ -] -qed-. - -(* Basic inversion lemmas ***************************************************) - -fact after_inv_empty1_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → cs1 = ◊ → - cs2 = ◊ ∧ cs = ◊. -#cs1 #cs2 #cs * -cs1 -cs2 -cs -[ /2 width=1 by conj/ -| #cs1 #cs2 #cs #_ #b #H destruct -| #cs1 #cs2 #cs #_ #H destruct -] -qed-. - -lemma after_inv_empty1: ∀cs2,cs. ◊ ⊚ cs2 ≡ cs → cs2 = ◊ ∧ cs = ◊. -/2 width=3 by after_inv_empty1_aux/ qed-. - -fact after_inv_true1_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → ∀tl1. cs1 = Ⓣ @ tl1 → - ∃∃tl2,tl,b. cs2 = b @ tl2 & cs = b @ tl & tl1 ⊚ tl2 ≡ tl. -#cs1 #cs2 #cs * -cs1 -cs2 -cs -[ #tl1 #H destruct -| #cs1 #cs2 #cs #H12 #b #tl1 #H destruct - /2 width=6 by ex3_3_intro/ -| #cs1 #cs2 #cs #_ #tl1 #H destruct -] -qed-. - -lemma after_inv_true1: ∀tl1,cs2,cs. (Ⓣ @ tl1) ⊚ cs2 ≡ cs → - ∃∃tl2,tl,b. cs2 = b @ tl2 & cs = b @ tl & tl1 ⊚ tl2 ≡ tl. -/2 width=3 by after_inv_true1_aux/ qed-. - -fact after_inv_false1_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → ∀tl1. cs1 = Ⓕ @ tl1 → - ∃∃tl. cs = Ⓕ @ tl & tl1 ⊚ cs2 ≡ tl. -#cs1 #cs2 #cs * -cs1 -cs2 -cs -[ #tl1 #H destruct -| #cs1 #cs2 #cs #_ #b #tl1 #H destruct -| #cs1 #cs2 #cs #H12 #tl1 #H destruct - /2 width=3 by ex2_intro/ -] -qed-. - -lemma after_inv_false1: ∀tl1,cs2,cs. (Ⓕ @ tl1) ⊚ cs2 ≡ cs → - ∃∃tl. cs = Ⓕ @ tl & tl1 ⊚ cs2 ≡ tl. -/2 width=3 by after_inv_false1_aux/ qed-. - -fact after_inv_empty3_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → cs = ◊ → - cs1 = ◊ ∧ cs2 = ◊. -#cs1 #cs2 #cs * -cs1 -cs2 -cs -[ /2 width=1 by conj/ -| #cs1 #cs2 #cs #_ #b #H destruct -| #cs1 #cs2 #cs #_ #H destruct -] -qed-. - -lemma after_inv_empty3: ∀cs1,cs2. cs1 ⊚ cs2 ≡ ◊ → cs1 = ◊ ∧ cs2 = ◊. -/2 width=3 by after_inv_empty3_aux/ qed-. - -fact after_inv_inh3_aux: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → ∀tl,b. cs = b @ tl → - (∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = b @ tl2 & tl1 ⊚ tl2 ≡ tl) ∨ - ∃∃tl1. cs1 = Ⓕ @ tl1 & b = Ⓕ & tl1 ⊚ cs2 ≡ tl. -#cs1 #cs2 #cs * -cs1 -cs2 -cs -[ #tl #b #H destruct -| #cs1 #cs2 #cs #H12 #b0 #tl #b #H destruct - /3 width=5 by ex3_2_intro, or_introl/ -| #cs1 #cs2 #cs #H12 #tl #b #H destruct - /3 width=3 by ex3_intro, or_intror/ -] -qed-. - -lemma after_inv_inh3: ∀cs1,cs2,tl,b. cs1 ⊚ cs2 ≡ b @ tl → - (∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = b @ tl2 & tl1 ⊚ tl2 ≡ tl) ∨ - ∃∃tl1. cs1 = Ⓕ @ tl1 & b = Ⓕ & tl1 ⊚ cs2 ≡ tl. -/2 width=3 by after_inv_inh3_aux/ qed-. - -lemma after_inv_true3: ∀cs1,cs2,tl. cs1 ⊚ cs2 ≡ Ⓣ @ tl → - ∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = Ⓣ @ tl2 & tl1 ⊚ tl2 ≡ tl. -#cs1 #cs2 #tl #H elim (after_inv_inh3 … H) -H // * -#tl1 #_ #H destruct -qed-. - -lemma after_inv_false3: ∀cs1,cs2,tl. cs1 ⊚ cs2 ≡ Ⓕ @ tl → - (∃∃tl1,tl2. cs1 = Ⓣ @ tl1 & cs2 = Ⓕ @ tl2 & tl1 ⊚ tl2 ≡ tl) ∨ - ∃∃tl1. cs1 = Ⓕ @ tl1 & tl1 ⊚ cs2 ≡ tl. -#cs1 #cs2 #tl #H elim (after_inv_inh3 … H) -H /2 width=1 by or_introl/ * /3 width=3 by ex2_intro, or_intror/ -qed-. - -lemma after_inv_length: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → - ∧∧ ∥cs1∥ = |cs2| & |cs| = |cs1| & ∥cs∥ = ∥cs2∥. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs /2 width=1 by and3_intro/ -#cs1 #cs2 #cs #_ [ * ] * /2 width=1 by and3_intro/ -qed-. - -(* Basic forward lemmas *****************************************************) - -lemma after_at_fwd: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → ∀i1,i. @⦃i1, cs⦄ ≡ i → - ∃∃i2. @⦃i1, cs1⦄ ≡ i2 & @⦃i2, cs2⦄ ≡ i. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs -[ #i1 #i #H elim (at_inv_empty … H) -H - #H1 #H2 destruct /2 width=3 by at_empty, ex2_intro/ -| #cs1 #cs2 #cs #_ * #IH #i1 #i #H - [ elim (at_inv_true … H) -H * - [ -IH #H1 #H2 destruct /2 width=3 by at_zero, ex2_intro/ - | #j1 #j #H1 #H2 #Hj1 destruct - elim (IH … Hj1) -IH -Hj1 /3 width=3 by at_succ, ex2_intro/ - ] - | elim (at_inv_false … H) -H - #j #H #Hj destruct - elim (IH … Hj) -IH -Hj /3 width=3 by at_succ, at_false, ex2_intro/ - ] -| #cs1 #cs2 #cs #_ #IH #i1 #i #H elim (at_inv_false … H) -H - #j #H #Hj destruct - elim (IH … Hj) -IH -Hj /3 width=3 by at_false, ex2_intro/ -] -qed-. - -lemma after_at1_fwd: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → ∀i1,i2. @⦃i1, cs1⦄ ≡ i2 → - ∃∃i. @⦃i2, cs2⦄ ≡ i & @⦃i1, cs⦄ ≡ i. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs -[ #i1 #i2 #H elim (at_inv_empty … H) -H - #H1 #H2 destruct /2 width=3 by at_empty, ex2_intro/ -| #cs1 #cs2 #cs #_ * #IH #i1 #i2 #H - [ elim (at_inv_true … H) -H * - [ -IH #H1 #H2 destruct /2 width=3 by at_zero, ex2_intro/ - | #j1 #j2 #H1 #H2 #Hj12 destruct - elim (IH … Hj12) -IH -Hj12 /3 width=3 by at_succ, ex2_intro/ - ] - | elim (at_inv_false … H) -H - #j2 #H #Hj2 destruct - elim (IH … Hj2) -IH -Hj2 /3 width=3 by at_succ, at_false, ex2_intro/ - ] -| #cs1 #cs2 #cs #_ #IH #i1 #i2 #H elim (IH … H) -IH -H - /3 width=3 by at_false, ex2_intro/ -] -qed-. - -lemma after_fwd_at: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → - ∀i1,i2,i. @⦃i1, cs1⦄ ≡ i2 → @⦃i2, cs2⦄ ≡ i → @⦃i1, cs⦄ ≡ i. -#cs1 #cs2 #cs #Hcs #i1 #i2 #i #Hi1 #Hi2 elim (after_at1_fwd … Hcs … Hi1) -cs1 -#j #H #Hj >(at_mono … Hi2 … H) -i2 // -qed-. - -lemma after_fwd_at1: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → - ∀i1,i2,i. @⦃i1, cs⦄ ≡ i → @⦃i2, cs2⦄ ≡ i → @⦃i1, cs1⦄ ≡ i2. -#cs1 #cs2 #cs #Hcs #i1 #i2 #i #Hi1 #Hi2 elim (after_at_fwd … Hcs … Hi1) -cs -#j1 #Hij1 #H >(at_inj … Hi2 … H) -i // -qed-. - -lemma after_fwd_at2: ∀cs1,cs2,cs. cs2 ⊚ cs1 ≡ cs → - ∀i1,i2,i. @⦃i1, cs⦄ ≡ i → @⦃i1, cs1⦄ ≡ i2 → @⦃i2, cs2⦄ ≡ i. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs -[ #i1 #i2 #i #Hi #Hi1 elim (at_inv_empty … Hi1) -Hi1 // -| #cs1 #cs2 #cs #_ * #IH #i1 #i2 #i #Hi #Hi1 - [ elim (at_inv_true … Hi1) -Hi1 * - [ -IH #H1 #H2 destruct >(at_inv_true_zero_sn … Hi) -i // - | #j1 #j2 #H1 #H2 #Hj12 destruct elim (at_inv_true_succ_sn … Hi) -Hi - #j #H #Hj1 destruct /3 width=3 by at_succ/ - ] - | elim (at_inv_false … Hi1) -Hi1 - #j2 #H #Hj2 destruct elim (at_inv_false … Hi) -Hi - #j #H #Hj destruct /3 width=3 by at_succ/ - ] -| #cs1 #cs2 #cs #_ #IH #i1 #i2 #i #Hi #Hi2 elim (at_inv_false … Hi) -Hi - #j #H #Hj destruct /3 width=3 by at_false/ -] -qed-. - -(* Main properties **********************************************************) - -theorem after_trans1: ∀cs1,cs2,cs0. cs1 ⊚ cs2 ≡ cs0 → - ∀cs3, cs4. cs0 ⊚ cs3 ≡ cs4 → - ∃∃cs. cs2 ⊚ cs3 ≡ cs & cs1 ⊚ cs ≡ cs4. -#cs1 #cs2 #cs0 #H elim H -cs1 -cs2 -cs0 -[ #cs3 #cs4 #H elim (after_inv_empty1 … H) -H - #H1 #H2 destruct /2 width=3 by ex2_intro, after_empty/ -| #cs1 #cs2 #cs0 #_ * #IH #cs3 #cs4 #H - [ elim (after_inv_true1 … H) -H - #tl3 #tl4 #b #H1 #H2 #Htl destruct - elim (IH … Htl) -cs0 - /3 width=3 by ex2_intro, after_true/ - | elim (after_inv_false1 … H) -H - #tl4 #H #Htl destruct - elim (IH … Htl) -cs0 - /3 width=3 by ex2_intro, after_true, after_false/ - ] -| #cs1 #cs2 #cs0 #_ #IH #cs3 #cs4 #H - elim (after_inv_false1 … H) -H - #tl4 #H #Htl destruct - elim (IH … Htl) -cs0 - /3 width=3 by ex2_intro, after_false/ -] -qed-. - -theorem after_trans2: ∀cs1,cs0,cs4. cs1 ⊚ cs0 ≡ cs4 → - ∀cs2, cs3. cs2 ⊚ cs3 ≡ cs0 → - ∃∃cs. cs1 ⊚ cs2 ≡ cs & cs ⊚ cs3 ≡ cs4. -#cs1 #cs0 #cs4 #H elim H -cs1 -cs0 -cs4 -[ #cs2 #cs3 #H elim (after_inv_empty3 … H) -H - #H1 #H2 destruct /2 width=3 by ex2_intro, after_empty/ -| #cs1 #cs0 #cs4 #_ #b #IH #cs2 #cs3 #H elim (after_inv_inh3 … H) -H * - [ #tl2 #tl3 #H1 #H2 #Htl destruct - elim (IH … Htl) -cs0 - /3 width=3 by ex2_intro, after_true/ - | #tl2 #H1 #H2 #Htl destruct - elim (IH … Htl) -cs0 - /3 width=3 by ex2_intro, after_true, after_false/ - ] -| #cs1 #cs0 #cs4 #_ #IH #cs2 #cs3 #H elim (IH … H) -cs0 - /3 width=3 by ex2_intro, after_false/ -] -qed-. - -theorem after_mono: ∀cs1,cs2,x. cs1 ⊚ cs2 ≡ x → ∀y. cs1 ⊚ cs2 ≡ y → x = y. -#cs1 #cs2 #x #H elim H -cs1 -cs2 -x -[ #y #H elim (after_inv_empty1 … H) -H // -| #cs1 #cs #x #_ #b #IH #y #H elim (after_inv_true1 … H) -H - #tl #tly #b0 #H1 #H2 #Htl destruct >(IH … Htl) -tl -cs1 -x // -| #cs1 #cs2 #x #_ #IH #y #H elim (after_inv_false1 … H) -H - #tly #H #Htl destruct >(IH … Htl) -cs1 -cs2 -x // -] -qed-. - -theorem after_inj: ∀cs1,x,cs. cs1 ⊚ x ≡ cs → ∀y. cs1 ⊚ y ≡ cs → x = y. -#cs1 #x #cs #H elim H -cs1 -x -cs -[ #y #H elim (after_inv_empty1 … H) -H // -| #cs1 #x #cs #_ #b #IH #y #H elim (after_inv_true1 … H) -H - #tly #tl #b0 #H1 #H2 #Htl destruct >(IH … Htl) -tl -cs1 -x // -| #cs1 #x #cs #_ #IH #y #H elim (after_inv_false1 … H) -H - #tl #H #Htl destruct >(IH … Htl) -tl -cs1 -x // -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_at.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_at.etc deleted file mode 100644 index 02d8ac1eb..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_at.etc +++ /dev/null @@ -1,264 +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/notation/relations/rat_3.ma". -include "ground_2/relocation/trace.ma". - -(* RELOCATION TRACE *********************************************************) - -inductive at: trace → relation nat ≝ - | at_empty: at (◊) 0 0 - | at_zero : ∀cs. at (Ⓣ @ cs) 0 0 - | at_succ : ∀cs,i1,i2. at cs i1 i2 → at (Ⓣ @ cs) (⫯i1) (⫯i2) - | at_false: ∀cs,i1,i2. at cs i1 i2 → at (Ⓕ @ cs) i1 (⫯i2). - -interpretation "relocation (trace)" - 'RAt i1 cs i2 = (at cs i1 i2). - -(* Basic inversion lemmas ***************************************************) - -fact at_inv_empty_aux: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → cs = ◊ → i1 = 0 ∧ i2 = 0. -#cs #i1 #i2 * -cs -i1 -i2 /2 width=1 by conj/ -#cs #i1 #i2 #_ #H destruct -qed-. - -lemma at_inv_empty: ∀i1,i2. @⦃i1, ◊⦄ ≡ i2 → i1 = 0 ∧ i2 = 0. -/2 width=5 by at_inv_empty_aux/ qed-. - -lemma at_inv_empty_zero_sn: ∀i. @⦃0, ◊⦄ ≡ i → i = 0. -#i #H elim (at_inv_empty … H) -H // -qed-. - -lemma at_inv_empty_zero_dx: ∀i. @⦃i, ◊⦄ ≡ 0 → i = 0. -#i #H elim (at_inv_empty … H) -H // -qed-. - -lemma at_inv_empty_succ_sn: ∀i1,i2. @⦃⫯i1, ◊⦄ ≡ i2 → ⊥. -#i1 #i2 #H elim (at_inv_empty … H) -H #H1 #H2 destruct -qed-. - -lemma at_inv_empty_succ_dx: ∀i1,i2. @⦃i1, ◊⦄ ≡ ⫯i2 → ⊥. -#i1 #i2 #H elim (at_inv_empty … H) -H #H1 #H2 destruct -qed-. - -fact at_inv_true_aux: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∀tl. cs = Ⓣ @ tl → - (i1 = 0 ∧ i2 = 0) ∨ - ∃∃j1,j2. i1 = ⫯j1 & i2 = ⫯j2 & @⦃j1, tl⦄ ≡ j2. -#cs #i1 #i2 * -cs -i1 -i2 -[2,3,4: #cs [2,3: #i1 #i2 #Hij ] ] #tl #H destruct -/3 width=5 by ex3_2_intro, or_introl, or_intror, conj/ -qed-. - -lemma at_inv_true: ∀cs,i1,i2. @⦃i1, Ⓣ @ cs⦄ ≡ i2 → - (i1 = 0 ∧ i2 = 0) ∨ - ∃∃j1,j2. i1 = ⫯j1 & i2 = ⫯j2 & @⦃j1, cs⦄ ≡ j2. -/2 width=3 by at_inv_true_aux/ qed-. - -lemma at_inv_true_zero_sn: ∀cs,i. @⦃0, Ⓣ @ cs⦄ ≡ i → i = 0. -#cs #i #H elim (at_inv_true … H) -H * // -#j1 #j2 #H destruct -qed-. - -lemma at_inv_true_zero_dx: ∀cs,i. @⦃i, Ⓣ @ cs⦄ ≡ 0 → i = 0. -#cs #i #H elim (at_inv_true … H) -H * // -#j1 #j2 #_ #H destruct -qed-. - -lemma at_inv_true_succ_sn: ∀cs,i1,i2. @⦃⫯i1, Ⓣ @ cs⦄ ≡ i2 → - ∃∃j2. i2 = ⫯j2 & @⦃i1, cs⦄ ≡ j2. -#cs #i1 #i2 #H elim (at_inv_true … H) -H * -[ #H destruct -| #j1 #j2 #H1 #H2 destruct /2 width=3 by ex2_intro/ -] -qed-. - -lemma at_inv_true_succ_dx: ∀cs,i1,i2. @⦃i1, Ⓣ @ cs⦄ ≡ ⫯i2 → - ∃∃j1. i1 = ⫯j1 & @⦃j1, cs⦄ ≡ i2. -#cs #i1 #i2 #H elim (at_inv_true … H) -H * -[ #_ #H destruct -| #j1 #j2 #H1 #H2 destruct /2 width=3 by ex2_intro/ -] -qed-. - -lemma at_inv_true_succ: ∀cs,i1,i2. @⦃⫯i1, Ⓣ @ cs⦄ ≡ ⫯i2 → - @⦃i1, cs⦄ ≡ i2. -#cs #i1 #i2 #H elim (at_inv_true … H) -H * -[ #H destruct -| #j1 #j2 #H1 #H2 destruct // -] -qed-. - -lemma at_inv_true_O_S: ∀cs,i. @⦃0, Ⓣ @ cs⦄ ≡ ⫯i → ⊥. -#cs #i #H elim (at_inv_true … H) -H * -[ #_ #H destruct -| #j1 #j2 #H destruct -] -qed-. - -lemma at_inv_true_S_O: ∀cs,i. @⦃⫯i, Ⓣ @ cs⦄ ≡ 0 → ⊥. -#cs #i #H elim (at_inv_true … H) -H * -[ #H destruct -| #j1 #j2 #_ #H destruct -] -qed-. - -fact at_inv_false_aux: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∀tl. cs = Ⓕ @ tl → - ∃∃j2. i2 = ⫯j2 & @⦃i1, tl⦄ ≡ j2. -#cs #i1 #i2 * -cs -i1 -i2 -[2,3,4: #cs [2,3: #i1 #i2 #Hij ] ] #tl #H destruct -/2 width=3 by ex2_intro/ -qed-. - -lemma at_inv_false: ∀cs,i1,i2. @⦃i1, Ⓕ @ cs⦄ ≡ i2 → - ∃∃j2. i2 = ⫯j2 & @⦃i1, cs⦄ ≡ j2. -/2 width=3 by at_inv_false_aux/ qed-. - -lemma at_inv_false_S: ∀cs,i1,i2. @⦃i1, Ⓕ @ cs⦄ ≡ ⫯i2 → @⦃i1, cs⦄ ≡ i2. -#cs #i1 #i2 #H elim (at_inv_false … H) -H -#j2 #H destruct // -qed-. - -lemma at_inv_false_O: ∀cs,i. @⦃i, Ⓕ @ cs⦄ ≡ 0 → ⊥. -#cs #i #H elim (at_inv_false … H) -H -#j2 #H destruct -qed-. - -lemma at_inv_le: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → i1 ≤ ∥cs∥ ∧ i2 ≤ |cs|. -#cs #i1 #i2 #H elim H -cs -i1 -i2 /2 width=1 by conj/ -#cs #i1 #i2 #_ * /3 width=1 by le_S_S, conj/ -qed-. - -lemma at_inv_gt1: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∥cs∥ < i1 → ⊥. -#cs #i1 #i2 #H elim (at_inv_le … H) -H /2 width=4 by lt_le_false/ -qed-. - -lemma at_inv_gt2: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → |cs| < i2 → ⊥. -#cs #i1 #i2 #H elim (at_inv_le … H) -H /2 width=4 by lt_le_false/ -qed-. - -(* Basic properties *********************************************************) - -(* Note: lemma 250 *) -lemma at_le: ∀cs,i1. i1 ≤ ∥cs∥ → - ∃∃i2. @⦃i1, cs⦄ ≡ i2 & i2 ≤ |cs|. -#cs elim cs -cs -[ #i1 #H <(le_n_O_to_eq … H) -i1 /2 width=3 by at_empty, ex2_intro/ -| * #cs #IH - [ * /2 width=3 by at_zero, ex2_intro/ - #i1 #H lapply (le_S_S_to_le … H) -H - #H elim (IH … H) -IH -H /3 width=3 by at_succ, le_S_S, ex2_intro/ - | #i1 #H elim (IH … H) -IH -H /3 width=3 by at_false, le_S_S, ex2_intro/ - ] -] -qed-. - -lemma at_top: ∀cs. @⦃∥cs∥, cs⦄ ≡ |cs|. -#cs elim cs -cs // * /2 width=1 by at_succ, at_false/ -qed. - -lemma at_monotonic: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → ∀j1. j1 < i1 → - ∃∃j2. @⦃j1, cs⦄ ≡ j2 & j2 < i2. -#cs #i1 #i2 #H elim H -cs -i1 -i2 -[ #j1 #H elim (lt_zero_false … H) -| #cs #j1 #H elim (lt_zero_false … H) -| #cs #i1 #i2 #Hij #IH * /2 width=3 by ex2_intro, at_zero/ - #j1 #H lapply (lt_S_S_to_lt … H) -H - #H elim (IH … H) -i1 - #j2 #Hj12 #H /3 width=3 by le_S_S, ex2_intro, at_succ/ -| #cs #i1 #i2 #_ #IH #j1 #H elim (IH … H) -i1 - /3 width=3 by le_S_S, ex2_intro, at_false/ -] -qed-. - -lemma at_dec: ∀cs,i1,i2. Decidable (@⦃i1, cs⦄ ≡ i2). -#cs elim cs -cs [ | * #cs #IH ] -[ * [2: #i1 ] * [2,4: #i2 ] - [4: /2 width=1 by at_empty, or_introl/ - |*: @or_intror #H elim (at_inv_empty … H) #H1 #H2 destruct - ] -| * [2: #i1 ] * [2,4: #i2 ] - [ elim (IH i1 i2) -IH - /4 width=1 by at_inv_true_succ, at_succ, or_introl, or_intror/ - | -IH /3 width=3 by at_inv_true_O_S, or_intror/ - | -IH /3 width=3 by at_inv_true_S_O, or_intror/ - | -IH /2 width=1 by or_introl, at_zero/ - ] -| #i1 * [2: #i2 ] - [ elim (IH i1 i2) -IH - /4 width=1 by at_inv_false_S, at_false, or_introl, or_intror/ - | -IH /3 width=3 by at_inv_false_O, or_intror/ - ] -] -qed-. - -lemma is_at_dec: ∀cs,i2. Decidable (∃i1. @⦃i1, cs⦄ ≡ i2). -#cs elim cs -cs -[ * /3 width=2 by ex_intro, or_introl/ - #i2 @or_intror * /2 width=3 by at_inv_empty_succ_dx/ -| * #cs #IH * [2,4: #i2 ] - [ elim (IH i2) -IH - [ * /4 width=2 by at_succ, ex_intro, or_introl/ - | #H @or_intror * #x #Hx - elim (at_inv_true_succ_dx … Hx) -Hx - /3 width=2 by ex_intro/ - ] - | elim (IH i2) -IH - [ * /4 width=2 by at_false, ex_intro, or_introl/ - | #H @or_intror * /4 width=2 by at_inv_false_S, ex_intro/ - ] - | /3 width=2 by at_zero, ex_intro, or_introl/ - | @or_intror * /2 width=3 by at_inv_false_O/ - ] -] -qed-. - -(* Basic forward lemmas *****************************************************) - -lemma at_increasing: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → i1 ≤ i2. -#cs #i1 elim i1 -i1 // -#j1 #IHi #i2 #H elim (at_monotonic … H j1) -H -/3 width=3 by le_to_lt_to_lt/ -qed-. - -lemma at_increasing_strict: ∀cs,i1,i2. @⦃i1, Ⓕ @ cs⦄ ≡ i2 → - i1 < i2 ∧ @⦃i1, cs⦄ ≡ ⫰i2. -#cs #i1 #i2 #H elim (at_inv_false … H) -H -#j2 #H #Hj2 destruct /4 width=2 by conj, at_increasing, le_S_S/ -qed-. - -(* Main properties **********************************************************) - -theorem at_mono: ∀cs,i,i1. @⦃i, cs⦄ ≡ i1 → ∀i2. @⦃i, cs⦄ ≡ i2 → i1 = i2. -#cs #i #i1 #H elim H -cs -i -i1 -[2,3,4: #cs [2,3: #i #i1 #_ #IH ] ] #i2 #H -[ elim (at_inv_true_succ_sn … H) -H - #j2 #H destruct #H >(IH … H) -cs -i -i1 // -| elim (at_inv_false … H) -H - #j2 #H destruct #H >(IH … H) -cs -i -i1 // -| /2 width=2 by at_inv_true_zero_sn/ -| /2 width=1 by at_inv_empty_zero_sn/ -] -qed-. - -theorem at_inj: ∀cs,i1,i. @⦃i1, cs⦄ ≡ i → ∀i2. @⦃i2, cs⦄ ≡ i → i1 = i2. -#cs #i1 #i #H elim H -cs -i1 -i -[2,3,4: #cs [ |2,3: #i1 #i #_ #IH ] ] #i2 #H -[ /2 width=2 by at_inv_true_zero_dx/ -| elim (at_inv_true_succ_dx … H) -H - #j2 #H destruct #H >(IH … H) -cs -i1 -i // -| elim (at_inv_false … H) -H - #j #H destruct #H >(IH … H) -cs -i1 -j // -| /2 width=1 by at_inv_empty_zero_dx/ -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_isid.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_isid.etc deleted file mode 100644 index 6dce9e0a2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_isid.etc +++ /dev/null @@ -1,114 +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/notation/relations/isidentity_1.ma". -include "ground_2/relocation/trace_after.ma". -include "ground_2/relocation/trace_sle.ma". - -(* RELOCATION TRACE *********************************************************) - -definition isid: predicate trace ≝ λcs. ∥cs∥ = |cs|. - -interpretation "test for identity (trace)" - 'IsIdentity cs = (isid cs). - -definition t_reflexive: ∀S:Type[0]. predicate (trace → relation S) ≝ - λS,R. ∀a. ∃∃t. 𝐈⦃t⦄ & R t a a. - -(* Basic properties *********************************************************) - -lemma isid_empty: 𝐈⦃◊⦄. -// qed. - -lemma isid_true: ∀cs. 𝐈⦃cs⦄ → 𝐈⦃Ⓣ @ cs⦄. -// qed. - -(* Basic inversion lemmas ***************************************************) - -lemma isid_inv_true: ∀cs. 𝐈⦃Ⓣ @ cs⦄ → 𝐈⦃cs⦄. -/2 width=1 by injective_S/ qed-. - -lemma isid_inv_false: ∀cs. 𝐈⦃Ⓕ @ cs⦄ → ⊥. -/3 width=4 by colength_le, lt_le_false/ qed-. - -lemma isid_inv_cons: ∀cs,b. 𝐈⦃b @ cs⦄ → 𝐈⦃cs⦄ ∧ b = Ⓣ. -#cs * #H /3 width=1 by isid_inv_true, conj/ -elim (isid_inv_false … H) -qed-. - -(* Properties on application ************************************************) - -lemma isid_at: ∀cs. (∀i1,i2. @⦃i1, cs⦄ ≡ i2 → i1 = i2) → 𝐈⦃cs⦄. -#cs elim cs -cs // * /2 width=1 by/ -qed. - -(* Inversion lemmas on application ******************************************) - -lemma isid_inv_at: ∀cs,i1,i2. @⦃i1, cs⦄ ≡ i2 → 𝐈⦃cs⦄ → i1 = i2. -#cs #i1 #i2 #H elim H -cs -i1 -i2 /4 width=1 by isid_inv_true, eq_f/ -#cs #i1 #i2 #_ #IH #H elim (isid_inv_false … H) -qed-. - -(* Properties on composition ************************************************) - -lemma isid_after_sn: ∀cs2. ∃∃cs1. 𝐈⦃cs1⦄ & cs1 ⊚ cs2 ≡ cs2. -#cs2 elim cs2 -cs2 /2 width=3 by after_empty, ex2_intro/ -#b #cs2 * /3 width=3 by isid_true, after_true, ex2_intro/ -qed-. - -lemma isid_after_dx: ∀cs1. ∃∃cs2. 𝐈⦃cs2⦄ & cs1 ⊚ cs2 ≡ cs1. -#cs1 elim cs1 -cs1 /2 width=3 by after_empty, ex2_intro/ -* #cs1 * /3 width=3 by isid_true, after_true, after_false, ex2_intro/ -qed-. - -lemma after_isid_sn: ∀cs1,cs2. cs1 ⊚ cs2 ≡ cs2 → 𝐈⦃cs1⦄ . -#cs1 #cs2 #H elim (after_inv_length … H) -H // -qed. - -lemma after_isid_dx: ∀cs1,cs2. cs1 ⊚ cs2 ≡ cs1 → 𝐈⦃cs2⦄ . -#cs1 #cs2 #H elim (after_inv_length … H) -H // -qed. - -(* Inversion lemmas on composition ******************************************) - -lemma after_isid_inv_sn: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → 𝐈⦃cs1⦄ → cs = cs2. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs // -#cs1 #cs2 #cs #_ [ #b ] #IH #H -[ >IH -IH // | elim (isid_inv_false … H) ] -qed-. - -lemma after_isid_inv_dx: ∀cs1,cs2,cs. cs1 ⊚ cs2 ≡ cs → 𝐈⦃cs2⦄ → cs = cs1. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs // -#cs1 #cs2 #cs #_ [ #b ] #IH #H -[ elim (isid_inv_cons … H) -H #H >IH -IH // | >IH -IH // ] -qed-. - -lemma after_inv_isid3: ∀t1,t2,t. t1 ⊚ t2 ≡ t → 𝐈⦃t⦄ → 𝐈⦃t1⦄ ∧ 𝐈⦃t2⦄. -#t1 #t2 #t #H elim H -t1 -t2 -t -[ /2 width=1 by conj/ -| #t1 #t2 #t #_ #b #IHt #H elim (isid_inv_cons … H) -H - #Ht #H elim (IHt Ht) -t /2 width=1 by isid_true, conj/ -| #t1 #t2 #t #_ #_ #H elim (isid_inv_false … H) -] -qed-. - -(* Forward on inclusion *****************************************************) - -lemma sle_isid1_fwd: ∀t1,t2. t1 ⊆ t2 → 𝐈⦃t1⦄ → t1 = t2. -#t1 #t2 #H elim H -t1 -t2 // -[ #t1 #t2 #_ #IH #H lapply (isid_inv_true … H) -H - #HT1 @eq_f2 // @IH @HT1 (**) (* full auto fails *) -| #t1 #t2 #b #_ #_ #H elim (isid_inv_false … H) -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_isun.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_isun.etc deleted file mode 100644 index bdcb249c5..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_isun.etc +++ /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 "ground_2/notation/relations/isuniform_1.ma". -include "ground_2/relocation/trace_isid.ma". - -(* RELOCATION TRACE *********************************************************) - -inductive isun: predicate trace ≝ -| isun_id : ∀t. 𝐈⦃t⦄ → isun t -| isun_false: ∀t. isun t → isun (Ⓕ@t) -. - -interpretation "test for uniformity (trace)" - 'IsUniform t = (isun t). - -(* Basic inversion lennas ***************************************************) - -fact isun_inv_true_aux: ∀t. 𝐔⦃t⦄ → ∀u. t = Ⓣ@u → 𝐈⦃u⦄. -#t * -t -[ #t #Ht #u #H destruct /2 width=1 by isid_inv_true/ -| #t #_ #u #H destruct -] -qed-. - -lemma isun_inv_true: ∀t. 𝐔⦃Ⓣ@t⦄ → 𝐈⦃t⦄. -/2 width=3 by isun_inv_true_aux/ qed-. - -fact isun_inv_false_aux: ∀t. 𝐔⦃t⦄ → ∀u. t = Ⓕ@u → 𝐔⦃u⦄. -#t * -t -[ #t #Ht #u #H destruct elim (isid_inv_false … Ht) -| #t #Ht #u #H destruct // -] -qed-. - -lemma isun_inv_false: ∀t. 𝐔⦃Ⓕ@t⦄ → 𝐔⦃t⦄. -/2 width=3 by isun_inv_false_aux/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_sle.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_sle.etc deleted file mode 100644 index be738b18e..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_sle.etc +++ /dev/null @@ -1,60 +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/relocation/trace_at.ma". - -(* RELOCATION TRACE *********************************************************) - -inductive sle: relation trace ≝ -| sle_empty: sle (◊) (◊) -| sle_true : ∀t1,t2. sle t1 t2 → sle (Ⓣ @ t1) (Ⓣ @ t2) -| sle_false: ∀t1,t2,b. sle t1 t2 → sle (Ⓕ @ t1) (b @ t2) -. - -interpretation - "inclusion (trace)" - 'subseteq t1 t2 = (sle t1 t2). - -(* Basic properties *********************************************************) - -(* Basic forward lemmas *****************************************************) - -lemma sle_fwd_length: ∀t1,t2. t1 ⊆ t2 → |t1| = |t2|. -#t1 #t2 #H elim H -t1 -t2 // -qed-. - -lemma sle_fwd_colength: ∀t1,t2. t1 ⊆ t2 → ∥t1∥ ≤ ∥t2∥. -#t1 #t2 #H elim H -t1 -t2 /2 width=1 by le_S_S/ -#t1 #t2 * /2 width=1 by le_S/ -qed-. - -(* Inversion lemmas on application ******************************************) - -lemma sle_inv_at: ∀t1,t2. t1 ⊆ t2 → - ∀i,i1,i2. @⦃i, t1⦄ ≡ i1 → @⦃i, t2⦄ ≡ i2 → i2 ≤ i1. -#t1 #t2 #H elim H -t1 -t2 -[ #i #i1 #i2 #_ #H2 elim (at_inv_empty … H2) -H2 // -| #t1 #t2 #_ #IH #i #i1 #i2 #H0 #H2 elim (at_inv_true … H2) -H2 * // - #j1 #j2 #H1 #H2 #Hj destruct elim (at_inv_true_succ_sn … H0) -H0 - /3 width=3 by le_S_S/ -| #t1 #t2 * #_ #IH #i #i1 #i2 #H0 #H2 - [ elim (at_inv_true … H2) -H2 * // - #j #j2 #H1 #H2 #Hj2 destruct elim (at_inv_false … H0) -H0 - #j1 #H #Hj1 destruct elim (at_monotonic … Hj1 j) -Hj1 // - #x #H1x #H2x @le_S_S /4 width=3 by lt_to_le, le_to_lt_to_lt/ (**) (* full auto too slow *) - | elim (at_inv_false … H2) elim (at_inv_false … H0) -H0 -H2 - /3 width=3 by le_S_S/ - ] -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_snot.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_snot.etc deleted file mode 100644 index d1697b9cc..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_snot.etc +++ /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 "ground_2/notation/functions/complement_1.ma". -include "ground_2/relocation/trace.ma". - -(* RELOCATION TRACE *********************************************************) - -let rec snot (t:trace) on t ≝ match t with -[ nil ⇒ ◊ -| cons b t ⇒ (¬ b) @ snot t -]. - -interpretation - "complement (trace)" - 'Complement t = (snot t). - -(* Basic properties *********************************************************) - -lemma snot_empty: ∁ (◊) = ◊. -// qed. - -lemma snot_inh: ∀t,b. ∁ (b@t) = (¬ b) @ ∁ t. -// qed. - -lemma snot_true: ∀t. ∁ (Ⓣ @ t) = Ⓕ @ ∁ t. -// qed. - -lemma snot_false: ∀t. ∁ (Ⓕ @ t) = Ⓣ @ ∁ t. -// qed. - -lemma snot_length: ∀t. |∁ t| = |t|. -#t elim t -t normalize // -qed. - -lemma snot_colength: ∀t. ∥∁ t∥ = |t| - ∥t∥. -#t elim t -t // -* /2 width=1 by minus_Sn_m/ -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_sor.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_sor.etc deleted file mode 100644 index 65aba02ac..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/relocation/trace_sor.etc +++ /dev/null @@ -1,62 +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/notation/relations/runion_3.ma". -include "ground_2/relocation/trace_isid.ma". - -(* RELOCATION TRACE *********************************************************) - -inductive sor: relation3 trace trace trace ≝ - | sor_empty: sor (◊) (◊) (◊) - | sor_inh : ∀cs1,cs2,cs. sor cs1 cs2 cs → - ∀b1,b2. sor (b1 @ cs1) (b2 @ cs2) ((b1 ∨ b2) @ cs). - -interpretation - "union (trace)" - 'RUnion L1 L2 L = (sor L2 L1 L). - -(* Basic properties *********************************************************) - -lemma sor_length: ∀cs1,cs2. |cs1| = |cs2| → - ∃∃cs. cs2 ⋓ cs1 ≡ cs & |cs| = |cs1| & |cs| = |cs2|. -#cs1 elim cs1 -cs1 -[ #cs2 #H >(length_inv_zero_sn … H) -H /2 width=4 by sor_empty, ex3_intro/ -| #b1 #cs1 #IH #x #H elim (length_inv_succ_sn … H) -H - #cs2 #b2 #H12 #H destruct elim (IH … H12) -IH -H12 - #cs #H12 #H1 #H2 @(ex3_intro … ((b1 ∨ b2) @ cs)) /2 width=1 by sor_inh/ (**) (* explicit constructor *) -] -qed-. - -lemma sor_sym: ∀cs1,cs2,cs. cs1 ⋓ cs2 ≡ cs → cs2 ⋓ cs1 ≡ cs. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs /2 width=1 by sor_inh/ -qed-. - -(* Basic inversion lemmas ***************************************************) - -lemma sor_inv_length: ∀cs1,cs2,cs. cs2 ⋓ cs1 ≡ cs → - ∧∧ |cs1| = |cs2| & |cs| = |cs1| & |cs| = |cs2|. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs /2 width=1 by and3_intro/ -#cs1 #cs2 #cs #_ #b1 #b2 * /2 width=1 by and3_intro/ -qed-. - -(* Basic forward lemmas *****************************************************) - -lemma sor_fwd_isid_sn: ∀cs1,cs2,cs. cs1 ⋓ cs2 ≡ cs → 𝐈⦃cs1⦄ → 𝐈⦃cs⦄. -#cs1 #cs2 #cs #H elim H -cs1 -cs2 -cs // -#cs1 #cs2 #cs #_ #b1 #b2 #IH #H elim (isid_inv_cons … H) -H -/3 width=1 by isid_true/ -qed-. - -lemma sor_fwd_isid_dx: ∀cs1,cs2,cs. cs1 ⋓ cs2 ≡ cs → 𝐈⦃cs2⦄ → 𝐈⦃cs⦄. -/3 width=4 by sor_fwd_isid_sn, sor_sym/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/rplusminus_4.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/rplusminus_4.etc deleted file mode 100644 index 597ff94fb..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/rplusminus_4.etc +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( x ⊞ break term 46 y1 ⊟ break term 46 y2 ≡ break term 46 z )" - non associative with precedence 45 - for @{ 'RPlusMinus $x $y1 $y2 $z }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_max.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_max.etc deleted file mode 100644 index acbd31d9d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_max.etc +++ /dev/null @@ -1,58 +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/ynat/ynat_plus.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -lemma ymax_pre_dx: ∀x,y. x ≤ y → x - y + y = y. -#x #y * -x -y // -#x #y #Hxy >yminus_inj >(eq_minus_O … Hxy) -Hxy // -qed-. - -lemma ymax_pre_sn: ∀x,y. y ≤ x → x - y + y = x. -#x #y * -x -y -[ #x #y #Hxy >yminus_inj /3 width=3 by plus_minus, eq_f/ -| * // -] -qed-. - -lemma ymax_pre_i_dx: ∀y,x. y ≤ x - y + y. -// qed. - -lemma ymax_pre_i_sn: ∀y,x. x ≤ x - y + y. -* // #y * /2 width=1 by yle_inj/ -qed. - -lemma ymax_pre_e: ∀x,z. x ≤ z → ∀y. y ≤ z → x - y + y ≤ z. -#x #z #Hxz #y #Hyz elim (yle_split x y) -[ #Hxy >(ymax_pre_dx … Hxy) -x // -| #Hyx >(ymax_pre_sn … Hyx) -y // -] -qed. - -lemma ymax_pre_dx_comm: ∀x,y. x ≤ y → y + (x - y) = y. -/2 width=1 by ymax_pre_dx/ qed-. - -lemma ymax_pre_sn_comm: ∀x,y. y ≤ x → y + (x - y) = x. -/2 width=1 by ymax_pre_sn/ qed-. - -lemma ymax_pre_i_dx_comm: ∀y,x. y ≤ y + (x - y). -// qed. - -lemma ymax_pre_i_sn_comm: ∀y,x. x ≤ y + (x - y). -/2 width=1 by ymax_pre_i_sn/ qed. - -lemma ymax_pre_e_comm: ∀x,z. x ≤ z → ∀y. y ≤ z → y + (x - y) ≤ z. -/2 width=1 by ymax_pre_e/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_min.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_min.etc deleted file mode 100644 index 96b8f2a21..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_min.etc +++ /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 "ground_2/ynat/ynat_plus.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -fact ymin_pre_dx_aux: ∀x,y. y ≤ x → x - (x - y) ≤ y. -#x #y * -x -y -[ #x #y #Hxy >yminus_inj - /3 width=4 by yle_inj, monotonic_le_minus_l/ -| * // -] -qed-. - -lemma ymin_pre_sn: ∀x,y. x ≤ y → x - (x - y) = x. -#x #y * -x -y // -#x #y #Hxy >yminus_inj >(eq_minus_O … Hxy) -Hxy // -qed-. - -lemma ymin_pre_i_dx: ∀x,y. x - (x - y) ≤ y. -#x #y elim (yle_split x y) /2 width=1 by ymin_pre_dx_aux/ -#Hxy >(ymin_pre_sn … Hxy) // -qed. - -lemma ymin_pre_i_sn: ∀x,y. x - (x - y) ≤ x. -// qed. - -lemma ymin_pre_dx: ∀x,y. y ≤ yinj x → yinj x - (yinj x - y) = y. -#x #y #H elim (yle_inv_inj2 … H) -H -#z #Hzx #H destruct >yminus_inj -/3 width=4 by minus_le_minus_minus_comm, eq_f/ -qed-. - -lemma ymin_pre_e: ∀z,x. z ≤ yinj x → ∀y. z ≤ y → - z ≤ yinj x - (yinj x - y). -#z #x #Hzx #y #Hzy elim (yle_split x y) -[ #H >(ymin_pre_sn … H) -y // -| #H >(ymin_pre_dx … H) -x // -] -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_minus.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_minus.etc deleted file mode 100644 index a2f15a8e2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_minus.etc +++ /dev/null @@ -1,227 +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/ynat/ynat_lt.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* subtraction *) -definition yminus: ynat → ynat → ynat ≝ λx,y. match y with -[ yinj n ⇒ ypred^n x -| Y ⇒ yinj 0 -]. - -interpretation "ynat minus" 'minus x y = (yminus x y). - -lemma yminus_O2: ∀m:ynat. m - 0 = m. -// qed. - -lemma yminus_S2: ∀m:ynat. ∀n:nat. m - S n = ⫰(m - n). -// qed. - -lemma yminus_Y2: ∀m. m - (∞) = 0. -// qed. - -(* Basic properties *********************************************************) - -lemma yminus_inj: ∀m,n. yinj m - yinj n = yinj (m - n). -#m #n elim n -n // -#n #IH >yminus_S2 >IH -IH >eq_minus_S_pred // -qed. - -lemma yminus_Y_inj: ∀n. ∞ - yinj n = ∞. -#n elim n -n // -qed. - -lemma yminus_O1: ∀x:ynat. 0 - x = 0. -* // qed. - -lemma yminus_refl: ∀x:ynat. x - x = 0. -* // qed. - -lemma yminus_minus_comm: ∀y,z,x. x - y - z = x - z - y. -* #y [ * #z [ * // ] ] >yminus_O1 // -qed. - -(* Properties on predecessor ************************************************) - -lemma yminus_SO2: ∀m. m - 1 = ⫰m. -* // -qed. - -lemma yminus_pred1: ∀x,y. ⫰x - y = ⫰(x-y). -#x * // #y elim y -y // -qed. - -lemma yminus_pred: ∀n,m. 0 < m → 0 < n → ⫰m - ⫰n = m - n. -* // #n * -[ #m #Hm #Hn >yminus_inj >yminus_inj - /4 width=1 by ylt_inv_inj, minus_pred_pred, eq_f/ -| >yminus_Y_inj // -] -qed-. - -(* Properties on successor **************************************************) - -lemma yminus_succ: ∀n,m. ⫯m - ⫯n = m - n. -* // qed. - -lemma yminus_succ1_inj: ∀n:nat. ∀m:ynat. n ≤ m → ⫯m - n = ⫯(m - n). -#n * -[ #m #Hmn >yminus_inj >yminus_inj - /4 width=1 by yle_inv_inj, plus_minus, eq_f/ -| >yminus_Y_inj // -] -qed-. - -lemma yminus_succ2: ∀y,x. x - ⫯y = ⫰(x-y). -* // -qed. - -(* Properties on order ******************************************************) - -lemma yle_minus_sn: ∀n,m. m - n ≤ m. -* // #n * /2 width=1 by yle_inj/ -qed. - -lemma yle_to_minus: ∀m:ynat. ∀n:ynat. m ≤ n → m - n = 0. -#m #n * -m -n /3 width=3 by eq_minus_O, eq_f/ -qed-. - -lemma yminus_to_le: ∀n:ynat. ∀m:ynat. m - n = 0 → m ≤ n. -* // #n * -[ #m >yminus_inj #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) - /2 width=1 by yle_inj/ -| >yminus_Y_inj #H destruct -] -qed. - -lemma monotonic_yle_minus_dx: ∀x,y. x ≤ y → ∀z. x - z ≤ y - z. -#x #y #Hxy * // -#z elim z -z /3 width=1 by yle_pred/ -qed. - -(* Properties on strict order ***********************************************) - -lemma ylt_to_minus: ∀x,y:ynat. x < y → 0 < y - x. -#x #y #H elim H -x -y /3 width=1 by ylt_inj, lt_plus_to_minus_r/ -qed. - -lemma yminus_to_lt: ∀x,y:ynat. 0 < y - x → x < y. -* [2: #y #H elim (ylt_yle_false … H) // ] -#m * /4 width=1 by ylt_inv_inj, ylt_inj, lt_minus_to_plus_r/ -qed-. - -lemma monotonic_ylt_minus_dx: ∀x,y:ynat. x < y → ∀z:nat. z ≤ x → x - z < y - z. -#x #y * -x -y -/4 width=1 by ylt_inj, yle_inv_inj, monotonic_lt_minus_l/ -qed. - -(* Properties on minus ******************************************************) - -lemma yplus_minus_inj: ∀m:ynat. ∀n:nat. m + n - n = m. -#m #n elim n -n // -#n #IHn >(yplus_succ2 m n) >(yminus_succ … n) // -qed. - -lemma yplus_minus: ∀m,n. m + n - n ≤ m. -#m * // -qed. - -lemma yminus_plus2: ∀z,y,x:ynat. x - (y + z) = x - y - z. -* // #z * [2: >yplus_Y1 >yminus_O1 // ] #y * -[ #x >yplus_inj >yminus_inj >yminus_inj >yminus_inj /2 width=1 by eq_f/ -| >yplus_inj >yminus_Y_inj // -] -qed. - -(* Forward lemmas on minus **************************************************) - -lemma yle_plus1_to_minus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y. -#x #z #y #H lapply (monotonic_yle_minus_dx … H y) -H // -qed-. - -lemma yle_plus1_to_minus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y. -/2 width=1 by yle_plus1_to_minus_inj2/ qed-. - -lemma yle_plus2_to_minus_inj2: ∀x,y:ynat. ∀z:nat. x ≤ y + z → x - z ≤ y. -/2 width=1 by monotonic_yle_minus_dx/ qed-. - -lemma yle_plus2_to_minus_inj1: ∀x,y:ynat. ∀z:nat. x ≤ z + y → x - z ≤ y. -/2 width=1 by yle_plus2_to_minus_inj2/ qed-. - -lemma yplus_minus_assoc_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z + (y - x) = z + y - x. -#x * -[ #y * // #z >yminus_inj >yplus_inj >yplus_inj - /4 width=1 by yle_inv_inj, plus_minus, eq_f/ -| >yminus_Y_inj // -] -qed-. - -lemma yplus_minus_assoc_comm_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z - (y - x) = z + x - y. -#x * -[ #y * - [ #z >yminus_inj >yminus_inj >yplus_inj >yminus_inj - /4 width=1 by yle_inv_inj, minus_le_minus_minus_comm, eq_f/ - | >yminus_inj >yminus_Y_inj // - ] -| >yminus_Y_inj // -] -qed-. - -lemma yplus_minus_comm_inj: ∀y:nat. ∀x,z:ynat. y ≤ x → x + z - y = x - y + z. -#y * // #x * // -#z #Hxy >yplus_inj >yminus_inj yplus_inj in H0; >yplus_inj >yminus_inj >yminus_inj #H0 -@conj // lapply (yinj_inj … H0) -H0 /3 width=1 by arith_b1, eq_f/ -qed-. - -(* Inversion lemmas on minus ************************************************) - -lemma yle_inv_plus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y ∧ y ≤ z. -/3 width=3 by yle_plus1_to_minus_inj2, yle_trans, conj/ qed-. - -lemma yle_inv_plus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y ∧ y ≤ z. -/2 width=1 by yle_inv_plus_inj2/ qed-. - -lemma yle_inv_plus_inj_dx: ∀x,y:ynat. ∀z:nat. x + y ≤ z → - ∃∃m,n. x = yinj m & y = yinj n & x ≤ z - y & y ≤ z. -#x #y #z #Hz elim (yle_inv_inj2 … Hz) -#z0 #_ #H elim (yplus_inv_inj … H) -H -#m #n #H1 #H2 #H3 destruct -elim (yle_inv_plus_inj2 … Hz) -Hz /2 width=2 by ex4_2_intro/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_minus_dx.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_minus_dx.etc deleted file mode 100644 index d9e343037..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_minus_dx.etc +++ /dev/null @@ -1,236 +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/ynat/ynat_plus.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* right subtraction *) -definition yminus_dx: nat → ynat → nat ≝ λx,y. match y with -[ yinj n ⇒ x-n -| Y ⇒ 0 -]. - -interpretation "ynat right minus" 'minus x y = (yminus_dx x y). - -lemma yminus_dx_inj (m) (n): m - yinj n = m - n. -// qed. - -lemma yminus_dx_Y2: ∀m. m - (∞) = 0. -// qed. - -lemma yminus_dx_succ_bi (n:ynat) (m): ↑m - ↑n = m - n. -* // qed. - -lemma yminus_dx_S2: ∀n:ynat. ∀m. m - ↑n = ↓(m - n). -* // qed. - -lemma yplus_minus_dx (x) (y): x ≤ yinj y → yinj y = x + yinj (y-x). -* [ #x #y #H >yplus_inj /4 width=1 by yle_inv_inj, minus_to_plus, eq_f/ ] -#y #H lapply (yle_inv_Y1 … H) -H #H destruct -qed-. - -(* - - -(* Basic properties *********************************************************) - -lemma yminus_inj: ∀m,n. yinj m - yinj n = yinj (m - n). -#m #n elim n -n // -#n #IH >yminus_S2 >IH -IH >eq_minus_S_pred // -qed. - -lemma yminus_Y_inj: ∀n. ∞ - yinj n = ∞. -#n elim n -n // -qed. - -lemma yminus_O1: ∀x:ynat. 0 - x = 0. -* // qed. - -lemma yminus_refl: ∀x:ynat. x - x = 0. -* // qed. - -lemma yminus_minus_comm: ∀y,z,x. x - y - z = x - z - y. -* #y [ * #z [ * // ] ] >yminus_O1 // -qed. - -(* Properties on predecessor ************************************************) - -lemma yminus_SO2: ∀m. m - 1 = ⫰m. -* // -qed. - -lemma yminus_pred1: ∀x,y. ⫰x - y = ⫰(x-y). -#x * // #y elim y -y // -qed. - -lemma yminus_pred: ∀n,m. 0 < m → 0 < n → ⫰m - ⫰n = m - n. -* // #n * -[ #m #Hm #Hn >yminus_inj >yminus_inj - /4 width=1 by ylt_inv_inj, minus_pred_pred, eq_f/ -| >yminus_Y_inj // -] -qed-. - -(* Properties on successor **************************************************) - -lemma yminus_succ1_inj: ∀n:nat. ∀m:ynat. n ≤ m → ⫯m - n = ⫯(m - n). -#n * -[ #m #Hmn >yminus_inj >yminus_inj - /4 width=1 by yle_inv_inj, plus_minus, eq_f/ -| >yminus_Y_inj // -] -qed-. - -lemma yminus_succ2: ∀y,x. x - ⫯y = ⫰(x-y). -* // -qed. - -(* Properties on order ******************************************************) - -lemma yle_minus_sn: ∀n,m. m - n ≤ m. -* // #n * /2 width=1 by yle_inj/ -qed. - -lemma yle_to_minus: ∀m:ynat. ∀n:ynat. m ≤ n → m - n = 0. -#m #n * -m -n /3 width=3 by eq_minus_O, eq_f/ -qed-. - -lemma yminus_to_le: ∀n:ynat. ∀m:ynat. m - n = 0 → m ≤ n. -* // #n * -[ #m >yminus_inj #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) - /2 width=1 by yle_inj/ -| >yminus_Y_inj #H destruct -] -qed. - -lemma monotonic_yle_minus_dx: ∀x,y. x ≤ y → ∀z. x - z ≤ y - z. -#x #y #Hxy * // -#z elim z -z /3 width=1 by yle_pred/ -qed. - -(* Properties on strict order ***********************************************) - -lemma ylt_to_minus: ∀x,y:ynat. x < y → 0 < y - x. -#x #y #H elim H -x -y /3 width=1 by ylt_inj, lt_plus_to_minus_r/ -qed. - -lemma yminus_to_lt: ∀x,y:ynat. 0 < y - x → x < y. -* [2: #y #H elim (ylt_yle_false … H) // ] -#m * /4 width=1 by ylt_inv_inj, ylt_inj, lt_minus_to_plus_r/ -qed-. - -lemma monotonic_ylt_minus_dx: ∀x,y:ynat. x < y → ∀z:nat. z ≤ x → x - z < y - z. -#x #y * -x -y -/4 width=1 by ylt_inj, yle_inv_inj, monotonic_lt_minus_l/ -qed. - -(* Properties on minus ******************************************************) - -lemma yplus_minus_inj: ∀m:ynat. ∀n:nat. m + n - n = m. -#m #n elim n -n // -#n #IHn >(yplus_succ2 m n) >(yminus_succ … n) // -qed. - -lemma yplus_minus: ∀m,n. m + n - n ≤ m. -#m * // -qed. - -lemma yminus_plus2: ∀z,y,x:ynat. x - (y + z) = x - y - z. -* // #z * [2: >yplus_Y1 >yminus_O1 // ] #y * -[ #x >yplus_inj >yminus_inj >yminus_inj >yminus_inj /2 width=1 by eq_f/ -| >yplus_inj >yminus_Y_inj // -] -qed. - -(* Forward lemmas on minus **************************************************) - -lemma yle_plus1_to_minus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y. -#x #z #y #H lapply (monotonic_yle_minus_dx … H y) -H // -qed-. - -lemma yle_plus1_to_minus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y. -/2 width=1 by yle_plus1_to_minus_inj2/ qed-. - -lemma yle_plus2_to_minus_inj2: ∀x,y:ynat. ∀z:nat. x ≤ y + z → x - z ≤ y. -/2 width=1 by monotonic_yle_minus_dx/ qed-. - -lemma yle_plus2_to_minus_inj1: ∀x,y:ynat. ∀z:nat. x ≤ z + y → x - z ≤ y. -/2 width=1 by yle_plus2_to_minus_inj2/ qed-. - -lemma yplus_minus_assoc_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z + (y - x) = z + y - x. -#x * -[ #y * // #z >yminus_inj >yplus_inj >yplus_inj - /4 width=1 by yle_inv_inj, plus_minus, eq_f/ -| >yminus_Y_inj // -] -qed-. - -lemma yplus_minus_assoc_comm_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z - (y - x) = z + x - y. -#x * -[ #y * - [ #z >yminus_inj >yminus_inj >yplus_inj >yminus_inj - /4 width=1 by yle_inv_inj, minus_le_minus_minus_comm, eq_f/ - | >yminus_inj >yminus_Y_inj // - ] -| >yminus_Y_inj // -] -qed-. - -lemma yplus_minus_comm_inj: ∀y:nat. ∀x,z:ynat. y ≤ x → x + z - y = x - y + z. -#y * // #x * // -#z #Hxy >yplus_inj >yminus_inj yplus_inj in H0; >yplus_inj >yminus_inj >yminus_inj #H0 -@conj // lapply (yinj_inj … H0) -H0 /3 width=1 by arith_b1, eq_f/ -qed-. - -(* Inversion lemmas on minus ************************************************) - -lemma yle_inv_plus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y ∧ y ≤ z. -/3 width=3 by yle_plus1_to_minus_inj2, yle_trans, conj/ qed-. - -lemma yle_inv_plus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y ∧ y ≤ z. -/2 width=1 by yle_inv_plus_inj2/ qed-. - -lemma yle_inv_plus_inj_dx: ∀x,y:ynat. ∀z:nat. x + y ≤ z → - ∃∃m,n. x = yinj m & y = yinj n & x ≤ z - y & y ≤ z. -#x #y #z #Hz elim (yle_inv_inj2 … Hz) -#z0 #_ #H elim (yplus_inv_inj … H) -H -#m #n #H1 #H2 #H3 destruct -elim (yle_inv_plus_inj2 … Hz) -Hz /2 width=2 by ex4_2_intro/ -qed-. -*) diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_plus.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_plus.etc deleted file mode 100644 index e535b9fe0..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_plus.etc +++ /dev/null @@ -1,4 +0,0 @@ - -lemma pippo: ∀x,y. x + y ≤ x → x = ∞ ∨ y = 0. -/3 width=1 by discr_yplus_xy_x, yle_antisym/ qed-. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_rpm.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_rpm.etc deleted file mode 100644 index 51aa4968b..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat/ynat_rpm.etc +++ /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 "ground_2/notation/relations/rplusminus_4.ma". -include "ground_2/ynat/ynat_plus.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* algebraic x + y1 - y2 = z *) -inductive yrpm (x:ynat) (y1:ynat) (y2:ynat): predicate ynat ≝ -| yrpm_ge: y2 ≤ y1 → yrpm x y1 y2 (x + (y1 - y2)) -| yrpm_lt: y1 < y2 → yrpm x y1 y2 (x - (y2 - y1)) -. - -interpretation "ynat 'algebraic plus-minus' (relational)" - 'RPlusMinus x y1 y2 z = (yrpm x y1 y2 z). - -(* Basic inversion lemmas ***************************************************) - -lemma ypm_inv_ge: ∀x,y1,y2,z. x ⊞ y1 ⊟ y2 ≡ z → - y2 ≤ y1 → z = x + (y1 - y2). -#x #y1 #y2 #z * -z // -#Hy12 #H elim (ylt_yle_false … H) -H // -qed-. - -lemma ypm_inv_lt: ∀x,y1,y2,z. x ⊞ y1 ⊟ y2 ≡ z → - y1 < y2 → z = x - (y2 - y1). -#x #y1 #y2 #z * -z // -#Hy21 #H elim (ylt_yle_false … H) -H // -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma ypm_inv_le: ∀x,y1,y2,z. x ⊞ y1 ⊟ y2 ≡ z → - y1 ≤ y2 → z = x - (y2 - y1). -#x #y1 #y2 #z #H #Hy12 elim (yle_split_eq … Hy12) -Hy12 #Hy12 -[ /2 width=1 by ypm_inv_lt/ -| >(ypm_inv_ge … H) -H // destruct >yminus_refl // -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat.etc deleted file mode 100644 index 09df4db8f..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat.etc +++ /dev/null @@ -1,53 +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 "arithmetics/nat.ma". - -(* INFINITARY NATURAL NUMBERS ***********************************************) - -(* the type of infinitary natural numbers *) -coinductive ynat: Type[0] ≝ -| YO: ynat -| YS: ynat → ynat -. - -interpretation "ynat successor" 'Successor m = (YS m). - -(* the coercion of nat to ynat *) -let rec ynat_of_nat n ≝ match n with -[ O ⇒ YO -| S m ⇒ YS (ynat_of_nat m) -]. - -coercion ynat_of_nat. - -(* the infinity *) -let corec Y : ynat ≝ ⫯Y. - -interpretation "ynat infinity" 'Infinity = Y. - -(* destructing identity on ynat *) -definition yid: ynat → ynat ≝ λm. match m with -[ YO ⇒ 0 -| YS n ⇒ ⫯n -]. - -(* Properties ***************************************************************) - -fact yid_rew: ∀n. yid n = n. -* // qed-. - -lemma Y_rew: ⫯∞ = ∞. -<(yid_rew ∞) in ⊢ (???%); // -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat_iszero.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat_iszero.etc deleted file mode 100644 index 3cb47bc21..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat_iszero.etc +++ /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 "ground_2/notation.ma". -include "ground_2/xoa_props.ma". -include "ground_2/ynat/ynat.ma". - -(* INFINITARY NATURAL NUMBERS ***********************************************) - -(* "is_zero" predicate *) -definition yzero: predicate ynat ≝ λx. match x with -[ YO ⇒ ⊤ -| YS _ ⇒ ⊥ -]. - -(* Inversion lemmas *********************************************************) - -lemma discr_YS_YO: ∀n. ⫯n = 0 → ⊥. -#n #H change with (yzero (⫯n)) ->H -H // -qed-. - -lemma discr_YO_YS: ∀n. ynat_of_nat 0 = ⫯n → ⊥. (**) (* explicit coercion *) -/2 width=2 by discr_YS_YO/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat_le.etc b/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat_le.etc deleted file mode 100644 index bde84cf79..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/etc/ynat_old/ynat_le.etc +++ /dev/null @@ -1,84 +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/star.ma". -include "ground_2/ynat/ynat_iszero.ma". -include "ground_2/ynat/ynat_pred.ma". - -(* INFINITARY NATURAL NUMBERS ***********************************************) - -(* order relation *) -coinductive yle: relation ynat ≝ -| yle_O: ∀n. yle 0 n -| yle_S: ∀m,n. yle m n → yle (⫯m) (⫯n) -. - -interpretation "natural 'less or equal to'" 'leq x y = (yle x y). - -(* Inversion lemmas *********************************************************) - -fact yle_inv_O2_aux: ∀m,x. m ≤ x → x = 0 → m = 0. -#m #x * -m -x // -#m #x #_ #H elim (discr_YS_YO … H) (**) (* destructing lemma needed *) -qed-. - -lemma yle_inv_O2: ∀m. m ≤ 0 → m = 0. -/2 width =3 by yle_inv_O2_aux/ qed-. - -fact yle_inv_S1_aux: ∀x,y. x ≤ y → ∀m. x = ⫯m → ∃∃n. m ≤ n & y = ⫯n. -#x #y * -x -y -[ #y #m #H elim (discr_YO_YS … H) (**) (* destructing lemma needed *) -| #x #y #Hxy #m #H destruct /2 width=3 by ex2_intro/ -] -qed-. - -lemma yle_inv_S1: ∀m,y. ⫯m ≤ y → ∃∃n. m ≤ n & y = ⫯n. -/2 width=3 by yle_inv_S1_aux/ qed-. - -lemma yle_inv_S: ∀m,n. ⫯m ≤ ⫯n → m ≤ n. -#m #n #H elim (yle_inv_S1 … H) -H -#x #Hx #H destruct // -qed-. - -(* Properties ***************************************************************) - -let corec yle_refl: reflexive … yle ≝ ?. -* [ @yle_O | #x @yle_S // ] -qed. - -let corec yle_Y: ∀m. m ≤ ∞ ≝ ?. -* [ @yle_O | #m (le_to_leb_true … H) | >(not_le_to_leb_false … H) ] -H // -qed. - -(* Equalities ***************************************************************) - -lemma plus_SO_sn (n): 1 + n = ↑n. -// qed-. - -lemma plus_SO_dx (n): n + 1 = ↑n. -// qed. - -lemma minus_SO_dx (n): n-1 = ↓n. -// qed. - -lemma minus_plus_m_m_commutative: ∀n,m:nat. n = m + n - m. -// qed-. - -lemma plus_minus_m_m_commutative (n) (m): m ≤ n → n = m+(n-m). -/2 width=1 by plus_minus_associative/ qed-. - -lemma plus_to_minus_2: ∀m1,m2,n1,n2. n1 ≤ m1 → n2 ≤ m2 → - m1+n2 = m2+n1 → m1-n1 = m2-n2. -#m1 #m2 #n1 #n2 #H1 #H2 #H -@plus_to_minus >plus_minus_associative // -qed-. - -(* Note: uses minus_minus_comm, minus_plus_m_m, commutative_plus, plus_minus *) -lemma plus_minus_minus_be: ∀x,y,z. y ≤ z → z ≤ x → (x - z) + (z - y) = x - y. -#x #z #y #Hzy #Hyx >plus_minus // >commutative_plus >plus_minus // -qed-. - -lemma lt_succ_pred: ∀m,n. n < m → m = ↑↓m. -#m #n #Hm >S_pred /2 width=2 by ltn_to_ltO/ -qed-. - -fact plus_minus_minus_be_aux: ∀i,x,y,z. y ≤ z → z ≤ x → i = z - y → x - z + i = x - y. -/2 width=1 by plus_minus_minus_be/ qed-. - -lemma le_plus_minus: ∀m,n,p. p ≤ n → m + n - p = m + (n - p). -/2 by plus_minus/ qed-. - -lemma le_plus_minus_comm: ∀n,m,p. p ≤ m → m + n - p = m - p + n. -/2 by plus_minus/ qed-. - -lemma minus_minus_comm3: ∀n,x,y,z. n-x-y-z = n-y-z-x. -// qed. - -lemma idempotent_max: ∀n:nat. n = (n ∨ n). -#n normalize >le_to_leb_true // -qed. - -lemma associative_max: associative … max. -#x #y #z normalize -@(leb_elim x y) normalize #Hxy -@(leb_elim y z) normalize #Hyz // -[1,2: >le_to_leb_true /2 width=3 by transitive_le/ -| >not_le_to_leb_false /4 width=3 by lt_to_not_le, not_le_to_lt, transitive_lt/ - >not_le_to_leb_false // -] -qed. - -(* Properties ***************************************************************) - -lemma eq_nat_dec: ∀n1,n2:nat. Decidable (n1 = n2). -#n1 elim n1 -n1 [| #n1 #IHn1 ] * [2,4: #n2 ] -[1,4: @or_intror #H destruct -| elim (IHn1 n2) -IHn1 /3 width=1 by or_intror, or_introl/ -| /2 width=1 by or_introl/ -] -qed-. - -lemma lt_or_eq_or_gt: ∀m,n. ∨∨ m < n | n = m | n < m. -#m #n elim (lt_or_ge m n) /2 width=1 by or3_intro0/ -#H elim H -m /2 width=1 by or3_intro1/ -#m #Hm * /3 width=1 by not_le_to_lt, le_S_S, or3_intro2/ -qed-. - -lemma monotonic_le_minus_l2: ∀x1,x2,y,z. x1 ≤ x2 → x1 - y - z ≤ x2 - y - z. -/3 width=1 by monotonic_le_minus_l/ qed. - -lemma minus_le_trans_sn: ∀x1,x2. x1 ≤ x2 → ∀x. x1-x ≤ x2. -/2 width=3 by transitive_le/ qed. - -lemma le_plus_to_minus_l: ∀a,b,c. a + b ≤ c → b ≤ c-a. -/2 width=1 by le_plus_to_minus_r/ -qed-. - -lemma le_plus_to_minus_comm: ∀n,m,p. n ≤ p+m → n-p ≤ m. -/2 width=1 by le_plus_to_minus/ qed-. - -lemma le_inv_S1: ∀m,n. ↑m ≤ n → ∃∃p. m ≤ p & ↑p = n. -#m * -[ #H lapply (le_n_O_to_eq … H) -H - #H destruct -| /3 width=3 by monotonic_pred, ex2_intro/ -] -qed-. - -(* Note: this might interfere with nat.ma *) -lemma monotonic_lt_pred: ∀m,n. m < n → 0 < m → pred m < pred n. -#m #n #Hmn #Hm whd >(S_pred … Hm) -@le_S_S_to_le >S_pred /2 width=3 by transitive_lt/ -qed. - -lemma lt_S_S: ∀x,y. x < y → ↑x < ↑y. -/2 width=1 by le_S_S/ qed. - -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-. - -lemma max_S2_le_S: ∀n1,n2,n. (n1 ∨ n2) ≤ n → (n1 ∨ ↑n2) ≤ ↑n. -/2 width=1 by max_S1_le_S/ qed-. - -(* Inversion & forward lemmas ***********************************************) - -lemma lt_refl_false: ∀n. n < n → ⊥. -#n #H elim (lt_to_not_eq … H) -H /2 width=1 by/ -qed-. - -lemma lt_zero_false: ∀n. n < 0 → ⊥. -#n #H elim (lt_to_not_le … H) -H /2 width=1 by/ -qed-. - -lemma lt_le_false: ∀x,y. x < y → y ≤ x → ⊥. -/3 width=4 by lt_refl_false, lt_to_le_to_lt/ qed-. - -lemma le_dec (n) (m): Decidable (n≤m). -#n elim n -n [ /2 width=1 by or_introl/ ] -#n #IH * [ /3 width=2 by lt_zero_false, or_intror/ ] -#m elim (IH m) -IH -[ /3 width=1 by or_introl, le_S_S/ -| /4 width=1 by or_intror, le_S_S_to_le/ -] -qed-. - -lemma succ_inv_refl_sn: ∀x. ↑x = x → ⊥. -#x #H @(lt_le_false x (↑x)) // -qed-. - -lemma le_plus_xSy_O_false: ∀x,y. x + S y ≤ 0 → ⊥. -#x #y #H lapply (le_n_O_to_eq … H) -H H -H -/2 width=2 by le_plus_to_le/ -qed-. - -lemma plus2_le_sn_dx: ∀m1,m2,n1,n2. m1 + n1 = n2 + m2 → m1 ≤ m2 → n2 ≤ n1. -/2 width=4 by plus2_le_sn_sn/ qed-. - -lemma plus2_le_dx_sn: ∀m1,m2,n1,n2. n1 + m1 = m2 + n2 → m1 ≤ m2 → n2 ≤ n1. -/2 width=4 by plus2_le_sn_sn/ qed-. - -lemma plus2_le_dx_dx: ∀m1,m2,n1,n2. n1 + m1 = n2 + m2 → m1 ≤ m2 → n2 ≤ n1. -/2 width=4 by plus2_le_sn_sn/ qed-. - -lemma lt_S_S_to_lt: ∀x,y. ↑x < ↑y → x < y. -/2 width=1 by le_S_S_to_le/ qed-. - -(* Note this should go in nat.ma *) -lemma discr_x_minus_xy: ∀x,y. x = x - y → x = 0 ∨ y = 0. -#x @(nat_ind_plus … x) -x /2 width=1 by or_introl/ -#x #_ #y @(nat_ind_plus … y) -y /2 width=1 by or_intror/ -#y #_ >minus_plus_plus_l -#H lapply (discr_plus_xy_minus_xz … H) -H -#H destruct -qed-. - -lemma lt_inv_O1: ∀n. 0 < n → ∃m. ↑m = n. -* /2 width=2 by ex_intro/ -#H cases (lt_le_false … H) -H // -qed-. - -lemma lt_inv_S1: ∀m,n. ↑m < n → ∃∃p. m < p & ↑p = n. -#m * /3 width=3 by lt_S_S_to_lt, ex2_intro/ -#H cases (lt_le_false … H) -H // -qed-. - -lemma lt_inv_gen: ∀y,x. x < y → ∃∃z. x ≤ z & ↑z = y. -* /3 width=3 by le_S_S_to_le, ex2_intro/ -#x #H elim (lt_le_false … H) -H // -qed-. - -lemma plus_inv_O3: ∀x,y. x + y = 0 → x = 0 ∧ y = 0. -/2 width=1 by plus_le_0/ qed-. - -lemma plus_inv_S3_sn: ∀x1,x2,x3. x1+x2 = ↑x3 → - ∨∨ ∧∧ x1 = 0 & x2 = ↑x3 - | ∃∃y1. x1 = ↑y1 & y1 + x2 = x3. -* /3 width=1 by or_introl, conj/ -#x1 #x2 #x3 minus_minus_comm >minus_le_minus_minus_comm // -qed-. - -lemma arith_b2: ∀a,b,c1,c2. c1 + c2 ≤ b → a - c1 - c2 - (b - c1 - c2) = a - b. -#a #b #c1 #c2 #H >minus_plus >minus_plus >minus_plus /2 width=1 by arith_b1/ -qed-. - -lemma arith_c1x: ∀x,a,b,c1. x + c1 + a - (b + c1) = x + a - b. -/3 by monotonic_le_minus_l, le_to_le_to_eq, le_n/ qed. - -lemma arith_h1: ∀a1,a2,b,c1. c1 ≤ a1 → c1 ≤ b → - a1 - c1 + a2 - (b - c1) = a1 + a2 - b. -#a1 #a2 #b #c1 #H1 #H2 >plus_minus /2 width=1 by arith_b2/ -qed-. - -lemma arith_i: ∀x,y,z. y < x → x+z-y-1 = x-y-1+z. -/2 width=1 by plus_minus/ qed-. - -(* Properties ***************************************************************) - -fact le_repl_sn_conf_aux: ∀x,y,z:nat. x ≤ z → x = y → y ≤ z. -// qed-. - -fact le_repl_sn_trans_aux: ∀x,y,z:nat. x ≤ z → y = x → y ≤ z. -// qed-. - -lemma arith_j: ∀x,y,z. x-y-1 ≤ x-(y-z)-1. -/3 width=1 by monotonic_le_minus_l, monotonic_le_minus_r/ qed. - -lemma arith_k_sn: ∀z,x,y,n. z < x → x+n ≤ y → x-z-1+n ≤ y-z-1. -#z #x #y #n #Hzx #Hxny ->plus_minus [2: /2 width=1 by monotonic_le_minus_r/ ] ->plus_minus [2: /2 width=1 by lt_to_le/ ] -/2 width=1 by monotonic_le_minus_l2/ -qed. - -lemma arith_k_dx: ∀z,x,y,n. z < x → y ≤ x+n → y-z-1 ≤ x-z-1+n. -#z #x #y #n #Hzx #Hyxn ->plus_minus [2: /2 width=1 by monotonic_le_minus_r/ ] ->plus_minus [2: /2 width=1 by lt_to_le/ ] -/2 width=1 by monotonic_le_minus_l2/ -qed. - -(* Inversion & forward lemmas ***********************************************) - -lemma lt_plus_SO_to_le: ∀x,y. x < y + 1 → x ≤ y. -/2 width=1 by monotonic_pred/ qed-. - -(* Iterators ****************************************************************) - -lemma iter_SO: ∀B:Type[0]. ∀f:B→B. ∀b,l. f^(l+1) b = f (f^l b). -#B #f #b #l >commutative_plus // -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/lib/arith_2b.ma b/matita/matita/contribs/lambdadelta/ground_2/lib/arith_2b.ma deleted file mode 100644 index c6203acd4..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/lib/arith_2b.ma +++ /dev/null @@ -1,44 +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/lib/arith.ma". - -(* ARITHMETICAL PROPERTIES FOR λδ-2B ****************************************) - -lemma arith_l4 (m11) (m12) (m21) (m22): - m21+m22-(m11+m12) = m21-m11-m12+(m22-(m11-m21)-(m12-(m21-m11))). -#m11 #m12 #m21 #m22 >minus_plus -elim (le_or_ge (m11+m12) m21) #Hm1121 -[ lapply (transitive_le m11 ??? Hm1121) // #Hm121 - lapply (le_plus_to_minus_l … Hm1121) #Hm12211 - (eq_minus_O m11 ?) // >(eq_minus_O m12 ?) // -| >(eq_minus_O m21 ?) // (eq_minus_O m11 ?) // (eq_minus_O m21 ?) // length_cons #H destruct -qed-. - -lemma length_inv_zero_sn (A:Type[0]) (l:list A): 0 = |l| → l = Ⓔ. -/2 width=1 by length_inv_zero_dx/ qed-. - -lemma length_inv_succ_dx (A:Type[0]) (l:list A) (x): |l| = ↑x → - ∃∃tl,a. x = |tl| & l = a ⨮ tl. -#A * /2 width=4 by ex2_2_intro/ ->length_nil #x #H destruct -qed-. - -lemma length_inv_succ_sn (A:Type[0]) (l:list A) (x): ↑x = |l| → - ∃∃tl,a. x = |tl| & l = a ⨮ tl. -/2 width=1 by length_inv_succ_dx/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/lib/logic.ma b/matita/matita/contribs/lambdadelta/ground_2/lib/logic.ma deleted file mode 100644 index 7f0fedb87..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/lib/logic.ma +++ /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 "basics/logic.ma". -include "ground_2/notation/xoa/false_0.ma". -include "ground_2/notation/xoa/true_0.ma". -include "ground_2/notation/xoa/or_2.ma". -include "ground_2/notation/xoa/and_2.ma". - -interpretation "logical false" 'false = False. - -interpretation "logical true" 'true = True. - -(* Logical properties missing in the basic library **************************) - -lemma commutative_and: ∀A,B. A ∧ B → B ∧ A. -#A #B * /2 width=1 by conj/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/lib/lstar_2a.ma b/matita/matita/contribs/lambdadelta/ground_2/lib/lstar_2a.ma deleted file mode 100644 index ae707f2b9..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/lib/lstar_2a.ma +++ /dev/null @@ -1,20 +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 "arithmetics/lstar.ma". - -(* PROPERTIES OF NAT-LABELED REFLEXIVE AND TRANSITIVE CLOSURE ***************) - -definition llstar: ∀A:Type[0]. ∀B. (A→relation B) → nat → (A→relation B) ≝ - λA,B,R,l,a. lstar … (R a) l. diff --git a/matita/matita/contribs/lambdadelta/ground_2/lib/ltc.ma b/matita/matita/contribs/lambdadelta/ground_2/lib/ltc.ma deleted file mode 100644 index e5ea2770d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/lib/ltc.ma +++ /dev/null @@ -1,89 +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/insert_eq/insert_eq_0.ma". -include "ground_2/lib/functions.ma". - -(* LABELLED TRANSITIVE CLOSURE **********************************************) - -inductive ltc (A:Type[0]) (f) (B) (R:relation3 A B B): relation3 A B B ≝ -| ltc_rc : ∀a,b1,b2. R a b1 b2 → ltc … a b1 b2 -| ltc_trans: ∀a1,a2,b1,b,b2. ltc … a1 b1 b → ltc … a2 b b2 → ltc … (f a1 a2) b1 b2 -. - -(* Basic properties *********************************************************) - -lemma ltc_sn (A) (f) (B) (R): ∀a1,b1,b. R a1 b1 b → - ∀a2,b2. ltc A f B R a2 b b2 → ltc … f … R (f a1 a2) b1 b2. -/3 width=3 by ltc_rc, ltc_trans/ qed. - -lemma ltc_dx (A) (f) (B) (R): ∀a1,b1,b. ltc A f B R a1 b1 b → - ∀a2,b2. R a2 b b2 → ltc … f … R (f a1 a2) b1 b2. -/3 width=3 by ltc_rc, ltc_trans/ qed. - -(* Basic eliminators ********************************************************) - -lemma ltc_ind_sn (A) (f) (B) (R) (Q:relation2 A B) (b2): associative … f → - (∀a,b1. R a b1 b2 → Q a b1) → - (∀a1,a2,b1,b. R a1 b1 b → ltc … f … R a2 b b2 → Q a2 b → Q (f a1 a2) b1) → - ∀a,b1. ltc … f … R a b1 b2 → Q a b1. -#A #f #B #R #Q #b2 #Hf #IH1 #IH2 #a #b1 @(insert_eq_0 … b2) -#b0 #H elim H -a -b1 -b0 /2 width=2 by/ -#a1 #a2 #b1 #b #b0 #H #Hb2 #_ -generalize in match Hb2; generalize in match a2; -Hb2 -a2 -elim H -a1 -b1 -b /4 width=4 by ltc_trans/ -qed-. - -lemma ltc_ind_dx (A) (f) (B) (R) (Q:A→predicate B) (b1): associative … f → - (∀a,b2. R a b1 b2 → Q a b2) → - (∀a1,a2,b,b2. ltc … f … R a1 b1 b → Q a1 b → R a2 b b2 → Q (f a1 a2) b2) → - ∀a,b2. ltc … f … R a b1 b2 → Q a b2. -#A #f #B #R #Q #b1 #Hf #IH1 #IH2 #a #b2 @(insert_eq_0 … b1) -#b0 #H elim H -a -b0 -b2 /2 width=2 by/ -#a1 #a2 #b0 #b #b2 #Hb0 #H #IHb0 #_ -generalize in match IHb0; generalize in match Hb0; generalize in match a1; -IHb0 -Hb0 -a1 -elim H -a2 -b -b2 /4 width=4 by ltc_trans/ -qed-. - -(* Advanced elimiators with reflexivity *************************************) - -lemma ltc_ind_sn_refl (A) (i) (f) (B) (R) (Q:relation2 A B) (b2): - associative … f → right_identity … f i → reflexive B (R i) → - Q i b2 → - (∀a1,a2,b1,b. R a1 b1 b → ltc … f … R a2 b b2 → Q a2 b → Q (f a1 a2) b1) → - ∀a,b1. ltc … f … R a b1 b2 → Q a b1. -#A #i #f #B #R #Q #b2 #H1f #H2f #HR #IH1 #IH2 #a #b1 #H -@(ltc_ind_sn … R … H1f … IH2 … H) -a -b1 -H1f #a #b1 #Hb12 ->(H2f a) -H2f /3 width=4 by ltc_rc/ -qed-. - -lemma ltc_ind_dx_refl (A) (i) (f) (B) (R) (Q:A→predicate B) (b1): - associative … f → left_identity … f i → reflexive B (R i) → - Q i b1 → - (∀a1,a2,b,b2. ltc … f … R a1 b1 b → Q a1 b → R a2 b b2 → Q (f a1 a2) b2) → - ∀a,b2. ltc … f … R a b1 b2 → Q a b2. -#A #i #f #B #R #Q #b1 #H1f #H2f #HR #IH1 #IH2 #a #b2 #H -@(ltc_ind_dx … R … H1f … IH2 … H) -a -b2 -H1f #a #b2 #Hb12 ->(H2f a) -H2f /3 width=4 by ltc_rc/ -qed-. - -(* Properties with lsub *****************************************************) - -lemma ltc_lsub_trans: ∀A,f. associative … f → - ∀B,C,R,S. (∀n. lsub_trans B C (λL. R L n) S) → - ∀n. lsub_trans B C (λL. ltc A f … (R L) n) S. -#A #f #Hf #B #C #R #S #HRS #n #L2 #T1 #T2 #H -@(ltc_ind_dx … Hf ???? H) -n -T2 -/3 width=5 by ltc_dx, ltc_rc/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/lib/ltc_ctc.ma b/matita/matita/contribs/lambdadelta/ground_2/lib/ltc_ctc.ma deleted file mode 100644 index 1682ef6d4..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/lib/ltc_ctc.ma +++ /dev/null @@ -1,42 +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/lib/star.ma". -include "ground_2/lib/ltc.ma". - -(* LABELLED TRANSITIVE CLOSURE **********************************************) - -alias symbol "subseteq" = "relation inclusion". - -(* Properties with contextual transitive closure ****************************) - -lemma ltc_CTC (C) (A) (i) (f) (B) (R:relation4 C A B B): - left_identity … f i → - ∀c. CTC … (λc. R c i) c ⊆ ltc … f … (R c) i. -#C #A #i #f #B #R #Hf #c #b1 #b2 #H elim H -b2 /2 width=1 by ltc_rc/ -#b #b2 #_ #Hb2 #IH >(Hf i) -Hf /2 width=3 by ltc_dx/ -qed. - -(* Inversion lemmas with contextual transitive closure **********************) - -lemma ltc_inv_CTC (C) (A) (i) (f) (B) (R:relation4 C A B B): - associative … f → annulment_2 … f i → - ∀c. ltc … f … (R c) i ⊆ CTC … (λc. R c i) c. -#C #A #i #f #B #R #H1f #H2f #c #b1 #b2 -@(insert_eq_0 … i) #a #H -@(ltc_ind_dx A f B … H) -a -b2 /2 width=1 by inj/ -H1f -#a1 #a2 #b #b2 #_ #IH #Hb2 #H "hvbox( Ⓔ )" - non associative with precedence 55 - for @{ 'CircledE ? }. - -notation > "hvbox( Ⓔ{ term 46 C } )" - non associative with precedence 55 - for @{ 'CircledE $S }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/cocompose_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/cocompose_2.ma deleted file mode 100644 index 252f567bd..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/cocompose_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( f2 ~∘ break f1 )" - right associative with precedence 60 - for @{ 'CoCompose $f2 $f1 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/diamond_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/diamond_0.ma deleted file mode 100644 index 4f218dd61..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/diamond_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "◊" - non associative with precedence 55 - for @{ 'Diamond }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downarrow_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downarrow_1.ma deleted file mode 100644 index e35058c60..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downarrow_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ↓ term 70 T )" - non associative with precedence 70 - for @{ 'DownArrow $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downspoon_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downspoon_2.ma deleted file mode 100644 index 3b7824afc..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downspoon_2.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation < "hvbox( ⫰ term 46 a )" - non associative with precedence 46 - for @{ 'DownSpoon $S $a }. - -notation > "hvbox( ⫰ term 46 a )" - non associative with precedence 46 - for @{ 'DownSpoon ? $a }. - -notation > "hvbox( ⫰{ term 46 S } break term 46 a )" - non associative with precedence 46 - for @{ 'DownSpoon $S $a }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downspoonstar_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downspoonstar_3.ma deleted file mode 100644 index c6ad562a3..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/downspoonstar_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation < "hvbox( ⫰*[ break term 46 n ] break term 46 a )" - non associative with precedence 46 - for @{ 'DownSpoonStar $S $n $a }. - -notation > "hvbox( ⫰*[ break term 46 n ] break term 46 a )" - non associative with precedence 46 - for @{ 'DownSpoonStar ? $n $a }. - -notation > "hvbox( ⫰*{ term 46 S }[ break term 46 n ] break term 46 a )" - non associative with precedence 46 - for @{ 'DownSpoonStar $S $n $a }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppred_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppred_1.ma deleted file mode 100644 index 7e82080a2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppred_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ⫱ term 46 T )" - non associative with precedence 46 - for @{ 'DropPred $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppreds_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppreds_2.ma deleted file mode 100644 index 90c206208..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/droppreds_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ⫱ *[ term 46 n ] break term 46 T )" - non associative with precedence 46 - for @{ 'DropPreds $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/identity_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/identity_0.ma deleted file mode 100644 index 9d4aea574..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/identity_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐈𝐝 )" - non associative with precedence 90 - for @{ 'Identity }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/infinity_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/infinity_0.ma deleted file mode 100644 index f5c849158..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/infinity_0.ma +++ /dev/null @@ -1,20 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "∞" - non associative with precedence 55 - for @{ 'Infinity }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/no_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/no_0.ma deleted file mode 100644 index af692211e..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/no_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "Ⓕ" - non associative with precedence 55 - for @{'no}. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/onezero_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/onezero_0.ma deleted file mode 100644 index 5df776e6a..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/onezero_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "𝟙𝟘" - non associative with precedence 55 - for @{ 'OneZero }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/oplusright_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/oplusright_3.ma deleted file mode 100644 index e172f4abe..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/oplusright_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation < "hvbox( hd ⨮ break tl )" - right associative with precedence 47 - for @{ 'OPlusRight $S $hd $tl }. - -notation > "hvbox( hd ⨮ break tl )" - right associative with precedence 47 - for @{ 'OPlusRight ? $hd $tl }. - -notation > "hvbox( hd ⨮{ break term 46 S } break term 46 tl )" - non associative with precedence 47 - for @{ 'OPlusRight $S $hd $tl }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/semicolon_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/semicolon_3.ma deleted file mode 100644 index cd884bde6..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/semicolon_3.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ❨ term 46 hd1, break term 46 hd2 ❩; break term 46 tl )" - non associative with precedence 47 - for @{ 'Semicolon $hd1 $hd2 $tl }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/tuple_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/tuple_4.ma deleted file mode 100644 index 551ee0d94..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/tuple_4.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox ( 〈 term 46 x1, break term 46 x2 , break term 46 x3, break term 46 x4 〉 )" - non associative with precedence 55 - for @{ 'Tuple $x1 $x2 $x3 $x4 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uniform_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uniform_1.ma deleted file mode 100644 index df29e6b1a..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uniform_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐔 ❨ break term 46 a ❩ )" - non associative with precedence 90 - for @{ 'Uniform $a }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrow_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrow_1.ma deleted file mode 100644 index 1402237cd..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrow_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ↑ term 70 T )" - non associative with precedence 70 - for @{ 'UpArrow $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrowstar_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrowstar_2.ma deleted file mode 100644 index 50e07287a..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/uparrowstar_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ↑*[ term 46 n ] break term 70 T )" - non associative with precedence 70 - for @{ 'UpArrowStar $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/updownarrowstar_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/updownarrowstar_1.ma deleted file mode 100644 index 26ac82e66..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/updownarrowstar_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ↕* term 46 T )" - non associative with precedence 46 - for @{ 'UpDownArrowStar $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoon_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoon_1.ma deleted file mode 100644 index 2c71ef371..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoon_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ⫯ term 46 T )" - non associative with precedence 46 - for @{ 'UpSpoon $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoonstar_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoonstar_2.ma deleted file mode 100644 index c9a1e3184..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/upspoonstar_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( ⫯*[ term 46 n ] break term 46 T )" - non associative with precedence 46 - for @{ 'UpSpoonStar $n $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/yes_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/yes_0.ma deleted file mode 100644 index c321749ae..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/yes_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "Ⓣ" - non associative with precedence 55 - for @{'yes}. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/zeroone_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/zeroone_0.ma deleted file mode 100644 index ff195abe1..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/zeroone_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "𝟘𝟙" - non associative with precedence 55 - for @{ 'ZeroOne }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/zerozero_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/functions/zerozero_0.ma deleted file mode 100644 index cb4b10dad..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/functions/zerozero_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "𝟘𝟘" - non associative with precedence 55 - for @{ 'ZeroZero }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/doteq_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/doteq_4.ma deleted file mode 100644 index f3a39a720..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/doteq_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation < "hvbox( f1 ≐ break term 46 f2 )" - non associative with precedence 45 - for @{ 'DotEq $A $B $f1 $f2 }. - -notation > "hvbox( f1 ≐ break term 46 f2 )" - non associative with precedence 45 - for @{ 'DotEq ? ? $f1 $f2 }. - -notation > "hvbox( f1 ≐{ break term 46 A, break term 46 B } break term 46 f2 )" - non associative with precedence 45 - for @{ 'DotEq $A $B $f1 $f2 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/ideq_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/ideq_2.ma deleted file mode 100644 index be8260416..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/ideq_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( f1 ≡ break term 46 f2 )" - non associative with precedence 45 - for @{ 'IdEq $f1 $f2 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isdivergent_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isdivergent_1.ma deleted file mode 100644 index 1a25c7878..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isdivergent_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝛀❪ term 46 f ❫ )" - non associative with precedence 45 - for @{ 'IsDivergent $f }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isfinite_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isfinite_1.ma deleted file mode 100644 index ac60a895b..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isfinite_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐅❪ term 46 f ❫ )" - non associative with precedence 45 - for @{ 'IsFinite $f }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isidentity_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isidentity_1.ma deleted file mode 100644 index 03fb76098..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isidentity_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐈❪ term 46 f ❫ )" - non associative with precedence 45 - for @{ 'IsIdentity $f }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isredtype_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isredtype_2.ma deleted file mode 100644 index 58ac25631..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isredtype_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐑𝐓❪ term 46 n, break term 46 c ❫ )" - non associative with precedence 45 - for @{ 'IsRedType $n $c }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/istotal_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/istotal_1.ma deleted file mode 100644 index e26e9a3c5..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/istotal_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐓❪ term 46 f ❫ )" - non associative with precedence 45 - for @{ 'IsTotal $f }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/istype_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/istype_2.ma deleted file mode 100644 index 04c4927bd..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/istype_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐓❪ term 46 n, break term 46 c ❫ )" - non associative with precedence 45 - for @{ 'IsType $n $c }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isuniform_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isuniform_1.ma deleted file mode 100644 index bc66e5c6d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/isuniform_1.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐔❪ term 46 f ❫ )" - non associative with precedence 45 - for @{ 'IsUniform $f }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/parallel_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/parallel_2.ma deleted file mode 100644 index dbbc88185..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/parallel_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( f1 ∥ break term 46 f2 )" - non associative with precedence 45 - for @{ 'Parallel $f1 $f2 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rafter_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rafter_3.ma deleted file mode 100644 index c54b60b71..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rafter_3.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( f1 ⊚ break term 46 f2 ≘ break term 46 f )" - non associative with precedence 45 - for @{ 'RAfter $f1 $f2 $f }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rat_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rat_3.ma deleted file mode 100644 index 007b7f1a4..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rat_3.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( @❪ term 46 T1 , break term 46 f ❫ ≘ break term 46 T2 )" - non associative with precedence 45 - for @{ 'RAt $T1 $f $T2 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rcoafter_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rcoafter_3.ma deleted file mode 100644 index 83fc39664..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rcoafter_3.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( f1 ~⊚ break term 46 f2 ≘ break term 46 f )" - non associative with precedence 45 - for @{ 'RCoAfter $f1 $f2 $f }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rcolength_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rcolength_2.ma deleted file mode 100644 index 785c4cbc5..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rcolength_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( 𝐂❪ term 46 f ❫ ≘ break term 46 n )" - non associative with precedence 45 - for @{ 'RCoLength $f $n }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/ringeq_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/ringeq_3.ma deleted file mode 100644 index e8ca369b7..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/ringeq_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation < "hvbox( v1 ≗ break term 46 v2 )" - non associative with precedence 45 - for @{ 'RingEq $M $v1 $v2 }. - -notation > "hvbox( v1 ≗ break term 46 v2 )" - non associative with precedence 45 - for @{ 'RingEq ? $v1 $v2 }. - -notation > "hvbox( v1 ≗{ break term 46 M } break term 46 v2 )" - non associative with precedence 45 - for @{ 'RingEq $M $v1 $v2 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rintersection_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rintersection_3.ma deleted file mode 100644 index e7e93d23c..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rintersection_3.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( L1 ⋒ break term 46 L2 ≘ break term 46 L )" - non associative with precedence 45 - for @{ 'RIntersection $L1 $L2 $L }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rminus_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rminus_3.ma deleted file mode 100644 index 87177eb97..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/rminus_3.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( T1 ▭ break term 46 T2 ≘ break term 46 T )" - non associative with precedence 45 - for @{ 'RMinus $T1 $T2 $T }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/runion_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/relations/runion_3.ma deleted file mode 100644 index 54b036675..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/relations/runion_3.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "hvbox( L1 ⋓ break term 46 L2 ≘ break term 46 L )" - non associative with precedence 45 - for @{ 'RUnion $L1 $L2 $L }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_2.ma deleted file mode 100644 index 854eb7b8c..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation > "hvbox(∧∧ term 34 P0 break & term 34 P1)" - non associative with precedence 35 - for @{ 'and $P0 $P1 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_3.ma deleted file mode 100644 index 03b0e7e29..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple conjunction connective (3) *) - -notation "hvbox(∧∧ term 34 P0 break & term 34 P1 break & term 34 P2)" - non associative with precedence 35 - for @{ 'And $P0 $P1 $P2 }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_4.ma deleted file mode 100644 index 78c1f9963..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/and_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple conjunction connective (4) *) - -notation "hvbox(∧∧ term 34 P0 break & term 34 P1 break & term 34 P2 break & term 34 P3)" - non associative with precedence 35 - for @{ 'And $P0 $P1 $P2 $P3 }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_2.ma deleted file mode 100644 index 77c7366a6..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_2.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (1, 2) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_3.ma deleted file mode 100644 index 89cc727bf..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (1, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_4.ma deleted file mode 100644 index 0fbf2a458..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_1_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (1, 4) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_2_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_2_2.ma deleted file mode 100644 index ccef16288..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_2_2.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (2, 2) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_2_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_2_3.ma deleted file mode 100644 index 5e0dba550..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_2_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (2, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_1.ma deleted file mode 100644 index f5c367157..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_1.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (3, 1) *) - -notation > "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex (λ${ident x0}.$P0) (λ${ident x0}.$P1) (λ${ident x0}.$P2) }. - -notation < "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex (λ${ident x0}:$T0.$P0) (λ${ident x0}:$T0.$P1) (λ${ident x0}:$T0.$P2) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_2.ma deleted file mode 100644 index 8ca34d307..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_2.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (3, 2) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) (λ${ident x0}.λ${ident x1}.$P2) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P2) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_3.ma deleted file mode 100644 index 6287d1a4e..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (3, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_4.ma deleted file mode 100644 index 5f34348e3..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (3, 4) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_5.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_5.ma deleted file mode 100644 index fab03970d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_3_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (3, 5) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_1.ma deleted file mode 100644 index 75ac29f16..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_1.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (4, 1) *) - -notation > "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex (λ${ident x0}.$P0) (λ${ident x0}.$P1) (λ${ident x0}.$P2) (λ${ident x0}.$P3) }. - -notation < "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex (λ${ident x0}:$T0.$P0) (λ${ident x0}:$T0.$P1) (λ${ident x0}:$T0.$P2) (λ${ident x0}:$T0.$P3) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_2.ma deleted file mode 100644 index e8a6e9650..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_2.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (4, 2) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) (λ${ident x0}.λ${ident x1}.$P2) (λ${ident x0}.λ${ident x1}.$P3) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P3) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_3.ma deleted file mode 100644 index 2d52220e2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (4, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_4.ma deleted file mode 100644 index 9ab7a12d0..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (4, 4) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_5.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_5.ma deleted file mode 100644 index ab7b80d49..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_4_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (4, 5) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_1.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_1.ma deleted file mode 100644 index a31168095..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_1.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (5, 1) *) - -notation > "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex (λ${ident x0}.$P0) (λ${ident x0}.$P1) (λ${ident x0}.$P2) (λ${ident x0}.$P3) (λ${ident x0}.$P4) }. - -notation < "hvbox(∃∃ ident x0 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex (λ${ident x0}:$T0.$P0) (λ${ident x0}:$T0.$P1) (λ${ident x0}:$T0.$P2) (λ${ident x0}:$T0.$P3) (λ${ident x0}:$T0.$P4) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_2.ma deleted file mode 100644 index 52b614c19..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_2.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (5, 2) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}.λ${ident x1}.$P0) (λ${ident x0}.λ${ident x1}.$P1) (λ${ident x0}.λ${ident x1}.$P2) (λ${ident x0}.λ${ident x1}.$P3) (λ${ident x0}.λ${ident x1}.$P4) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex2 (λ${ident x0}:$T0.λ${ident x1}:$T1.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.$P4) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_3.ma deleted file mode 100644 index f4a01f23a..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (5, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_4.ma deleted file mode 100644 index 59e8cb89b..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (5, 4) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_5.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_5.ma deleted file mode 100644 index 704b9de00..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (5, 5) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_6.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_6.ma deleted file mode 100644 index d5dd2806c..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_6.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (5, 6) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex6 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P4) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex6 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P4) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_7.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_7.ma deleted file mode 100644 index fb2986fbc..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_5_7.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (5, 7) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex7 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P4) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4)" - non associative with precedence 20 - for @{ 'Ex7 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P4) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_3.ma deleted file mode 100644 index 33dcc0d31..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (6, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P5) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P5) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_4.ma deleted file mode 100644 index 5b0aae453..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (6, 4) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P5) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P5) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_5.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_5.ma deleted file mode 100644 index 962185ec2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (6, 5) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P5) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P5) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_6.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_6.ma deleted file mode 100644 index e3351ba35..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_6.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (6, 6) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex6 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P5) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex6 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P5) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_7.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_7.ma deleted file mode 100644 index a699be8e9..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_7.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (6, 7) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex7 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P5) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex7 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P5) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_8.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_8.ma deleted file mode 100644 index b7ba4f5c2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_8.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (6, 8) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex8 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.$P5) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex8 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.$P5) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_9.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_9.ma deleted file mode 100644 index c7d473828..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_6_9.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (6, 9) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex9 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.$P5) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5)" - non associative with precedence 20 - for @{ 'Ex9 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.$P5) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_10.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_10.ma deleted file mode 100644 index d6285b86b..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_10.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (7, 10) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 , ident x9 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex10 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.λ${ident x7}.λ${ident x8}.λ${ident x9}.$P6) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 , ident x7 , ident x8 , ident x9 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex10 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.λ${ident x7}:$T7.λ${ident x8}:$T8.λ${ident x9}:$T9.$P6) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_3.ma deleted file mode 100644 index 35cf4ecc8..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (7, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P6) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P6) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_4.ma deleted file mode 100644 index b40af123a..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (7, 4) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P6) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P6) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_5.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_5.ma deleted file mode 100644 index 4ec1b7cce..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (7, 5) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P6) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P6) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_6.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_6.ma deleted file mode 100644 index 24892462d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_6.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (7, 6) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex6 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.$P6) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex6 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.$P6) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_7.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_7.ma deleted file mode 100644 index 9be29b5c1..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_7_7.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (7, 7) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex7 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.λ${ident x5}.λ${ident x6}.$P6) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 , ident x5 , ident x6 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6)" - non associative with precedence 20 - for @{ 'Ex7 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.λ${ident x5}:$T5.λ${ident x6}:$T6.$P6) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_8_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_8_4.ma deleted file mode 100644 index baa422aaf..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_8_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (8, 4) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P6) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.$P7) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" - non associative with precedence 20 - for @{ 'Ex4 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P6) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.$P7) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_8_5.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_8_5.ma deleted file mode 100644 index 8a7bb8f14..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_8_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (8, 5) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P6) (λ${ident x0}.λ${ident x1}.λ${ident x2}.λ${ident x3}.λ${ident x4}.$P7) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 , ident x3 , ident x4 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7)" - non associative with precedence 20 - for @{ 'Ex5 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P6) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.λ${ident x3}:$T3.λ${ident x4}:$T4.$P7) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_9_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_9_3.ma deleted file mode 100644 index 609f6974d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/ex_9_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple existental quantifier (9, 3) *) - -notation > "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7 break & term 19 P8)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P0) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P1) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P2) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P3) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P4) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P5) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P6) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P7) (λ${ident x0}.λ${ident x1}.λ${ident x2}.$P8) }. - -notation < "hvbox(∃∃ ident x0 , ident x1 , ident x2 break . term 19 P0 break & term 19 P1 break & term 19 P2 break & term 19 P3 break & term 19 P4 break & term 19 P5 break & term 19 P6 break & term 19 P7 break & term 19 P8)" - non associative with precedence 20 - for @{ 'Ex3 (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P0) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P1) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P2) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P3) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P4) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P5) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P6) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P7) (λ${ident x0}:$T0.λ${ident x1}:$T1.λ${ident x2}:$T2.$P8) }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/false_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/false_0.ma deleted file mode 100644 index b96432510..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/false_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "⊥" - non associative with precedence 19 - for @{'false}. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_2.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_2.ma deleted file mode 100644 index c5da136f2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_2.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation > "hvbox(∨∨ term 29 P0 break | term 29 P1)" - non associative with precedence 30 - for @{ 'or $P0 $P1 }. diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_3.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_3.ma deleted file mode 100644 index 3f8265443..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple disjunction connective (3) *) - -notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2)" - non associative with precedence 30 - for @{ 'Or $P0 $P1 $P2 }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_4.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_4.ma deleted file mode 100644 index 5d5be50a4..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple disjunction connective (4) *) - -notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2 break | term 29 P3)" - non associative with precedence 30 - for @{ 'Or $P0 $P1 $P2 $P3 }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_5.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_5.ma deleted file mode 100644 index 7f558933e..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/or_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -(* multiple disjunction connective (5) *) - -notation "hvbox(∨∨ term 29 P0 break | term 29 P1 break | term 29 P2 break | term 29 P3 break | term 29 P4)" - non associative with precedence 30 - for @{ 'Or $P0 $P1 $P2 $P3 $P4 }. - diff --git a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/true_0.ma b/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/true_0.ma deleted file mode 100644 index 7a9ad4366..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/notation/xoa/true_0.ma +++ /dev/null @@ -1,19 +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 *) -(* *) -(**************************************************************************) - -(* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************) - -notation "⊤" - non associative with precedence 19 - for @{'true}. diff --git a/matita/matita/contribs/lambdadelta/ground_2/pull/pull_2.ma b/matita/matita/contribs/lambdadelta/ground_2/pull/pull_2.ma deleted file mode 100644 index dd1411ebb..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/pull/pull_2.ma +++ /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 "basics/pts.ma". - -(* GENERATED LIBRARY ********************************************************) - -lemma pull_2 (A1:Type[0]) - (A2:Type[0]) - (A:A1→A2→Type[0]): - (∀x2,x1. A x1 x2) → - (∀x1,x2. A x1 x2). -/2 width=1 by/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/pull/pull_4.ma b/matita/matita/contribs/lambdadelta/ground_2/pull/pull_4.ma deleted file mode 100644 index a2e0baffb..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/pull/pull_4.ma +++ /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 "basics/pts.ma". - -(* GENERATED LIBRARY ********************************************************) - -lemma pull_4 (A1:Type[0]) - (A2:A1→Type[0]) - (A3:∀x1.A2 x1→Type[0]) - (A4:Type[0]) - (A:∀x1:A1.∀x2:A2 x1.A3 x1 x2 → A4 → Type[0]): - (∀x4,x1,x2,x3. A x1 x2 x3 x4) → - (∀x1,x2,x3,x4. A x1 x2 x3 x4). -/2 width=1 by/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2.ma deleted file mode 100644 index 6efc427c8..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2.ma +++ /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 "ground_2/notation/functions/diamond_0.ma". -include "ground_2/notation/functions/semicolon_3.ma". -include "ground_2/lib/arith.ma". - -(* MULTIPLE RELOCATION WITH PAIRS *******************************************) - -inductive mr2: Type[0] := - | nil2 : mr2 - | cons2: nat → nat → mr2 → mr2. - -interpretation "nil (multiple relocation with pairs)" - 'Diamond = (nil2). - -interpretation "cons (multiple relocation with pairs)" - 'Semicolon hd1 hd2 tl = (cons2 hd1 hd2 tl). diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_append.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_append.ma deleted file mode 100644 index d45747941..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_append.ma +++ /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 "ground_2/notation/functions/append_2.ma". -include "ground_2/relocation/mr2.ma". - -(* MULTIPLE RELOCATION WITH PAIRS *******************************************) - -let rec mr2_append cs1 cs2 on cs1 ≝ - match cs1 with - [ nil2 ⇒ cs2 - | cons2 l m cs1 ⇒ ❨l, m❩; mr2_append cs1 cs2 - ]. - -interpretation "append (multiple relocation with pairs)" - 'Append cs1 cs2 = (mr2_append cs1 cs2). - -(* Basic properties *********************************************************) - -lemma mr2_append_nil (cs2): cs2 = ◊ @@ cs2. -// qed. - -lemma mr2_append_cons (l) (m) (cs1) (cs2): - ❨l, m❩; (cs1 @@ cs2) = (❨l, m❩; cs1) @@ cs2. -// qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_at.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_at.ma deleted file mode 100644 index d2a2499a3..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_at.ma +++ /dev/null @@ -1,84 +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/notation/relations/rat_3.ma". -include "ground_2/relocation/mr2.ma". - -(* MULTIPLE RELOCATION WITH PAIRS *******************************************) - -inductive at: mr2 → relation nat ≝ -| at_nil: ∀i. at (◊) i i -| at_lt : ∀cs,l,m,i1,i2. i1 < l → - at cs i1 i2 → at (❨l, m❩;cs) i1 i2 -| at_ge : ∀cs,l,m,i1,i2. l ≤ i1 → - at cs (i1 + m) i2 → at (❨l, m❩;cs) i1 i2 -. - -interpretation "application (multiple relocation with pairs)" - 'RAt i1 cs i2 = (at cs i1 i2). - -(* Basic inversion lemmas ***************************************************) - -fact at_inv_nil_aux: ∀cs,i1,i2. @❪i1, cs❫ ≘ i2 → cs = ◊ → i1 = i2. -#cs #i1 #i2 * -cs -i1 -i2 -[ // -| #cs #l #m #i1 #i2 #_ #_ #H destruct -| #cs #l #m #i1 #i2 #_ #_ #H destruct -] -qed-. - -lemma at_inv_nil: ∀i1,i2. @❪i1, ◊❫ ≘ i2 → i1 = i2. -/2 width=3 by at_inv_nil_aux/ qed-. - -fact at_inv_cons_aux: ∀cs,i1,i2. @❪i1, cs❫ ≘ i2 → - ∀l,m,cs0. cs = ❨l, m❩;cs0 → - i1 < l ∧ @❪i1, cs0❫ ≘ i2 ∨ - l ≤ i1 ∧ @❪i1 + m, cs0❫ ≘ i2. -#cs #i1 #i2 * -cs -i1 -i2 -[ #i #l #m #cs #H destruct -| #cs1 #l1 #m1 #i1 #i2 #Hil1 #Hi12 #l2 #m2 #cs2 #H destruct /3 width=1 by or_introl, conj/ -| #cs1 #l1 #m1 #i1 #i2 #Hli1 #Hi12 #l2 #m2 #cs2 #H destruct /3 width=1 by or_intror, conj/ -] -qed-. - -lemma at_inv_cons: ∀cs,l,m,i1,i2. @❪i1, ❨l, m❩;cs❫ ≘ i2 → - i1 < l ∧ @❪i1, cs❫ ≘ i2 ∨ - l ≤ i1 ∧ @❪i1 + m, cs❫ ≘ i2. -/2 width=3 by at_inv_cons_aux/ qed-. - -lemma at_inv_cons_lt: ∀cs,l,m,i1,i2. @❪i1, ❨l, m❩;cs❫ ≘ i2 → - i1 < l → @❪i1, cs❫ ≘ i2. -#cs #l #m #i1 #m2 #H -elim (at_inv_cons … H) -H * // #Hli1 #_ #Hi1l -elim (lt_le_false … Hi1l Hli1) -qed-. - -lemma at_inv_cons_ge: ∀cs,l,m,i1,i2. @❪i1, ❨l, m❩;cs❫ ≘ i2 → - l ≤ i1 → @❪i1 + m, cs❫ ≘ i2. -#cs #l #m #i1 #m2 #H -elim (at_inv_cons … H) -H * // #Hi1l #_ #Hli1 -elim (lt_le_false … Hi1l Hli1) -qed-. - -(* Main properties **********************************************************) - -theorem at_mono: ∀cs,i,i1. @❪i, cs❫ ≘ i1 → ∀i2. @❪i, cs❫ ≘ i2 → i1 = i2. -#cs #i #i1 #H elim H -cs -i -i1 -[ #i #x #H <(at_inv_nil … H) -x // -| #cs #l #m #i #i1 #Hil #_ #IHi1 #x #H - lapply (at_inv_cons_lt … H Hil) -H -Hil /2 width=1 by/ -| #cs #l #m #i #i1 #Hli #_ #IHi1 #x #H - lapply (at_inv_cons_ge … H Hli) -H -Hli /2 width=1 by/ -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_minus.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_minus.ma deleted file mode 100644 index 81544fe29..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_minus.ma +++ /dev/null @@ -1,74 +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/notation/relations/rminus_3.ma". -include "ground_2/relocation/mr2.ma". - -(* MULTIPLE RELOCATION WITH PAIRS *******************************************) - -inductive minuss: nat → relation mr2 ≝ -| minuss_nil: ∀i. minuss i (◊) (◊) -| minuss_lt : ∀cs1,cs2,l,m,i. i < l → minuss i cs1 cs2 → - minuss i (❨l, m❩;cs1) (❨l - i, m❩;cs2) -| minuss_ge : ∀cs1,cs2,l,m,i. l ≤ i → minuss (m + i) cs1 cs2 → - minuss i (❨l, m❩;cs1) cs2 -. - -interpretation "minus (multiple relocation with pairs)" - 'RMinus cs1 i cs2 = (minuss i cs1 cs2). - -(* Basic inversion lemmas ***************************************************) - -fact minuss_inv_nil1_aux: ∀cs1,cs2,i. cs1 ▭ i ≘ cs2 → cs1 = ◊ → cs2 = ◊. -#cs1 #cs2 #i * -cs1 -cs2 -i -[ // -| #cs1 #cs2 #l #m #i #_ #_ #H destruct -| #cs1 #cs2 #l #m #i #_ #_ #H destruct -] -qed-. - -lemma minuss_inv_nil1: ∀cs2,i. ◊ ▭ i ≘ cs2 → cs2 = ◊. -/2 width=4 by minuss_inv_nil1_aux/ qed-. - -fact minuss_inv_cons1_aux: ∀cs1,cs2,i. cs1 ▭ i ≘ cs2 → - ∀l,m,cs. cs1 = ❨l, m❩;cs → - l ≤ i ∧ cs ▭ m + i ≘ cs2 ∨ - ∃∃cs0. i < l & cs ▭ i ≘ cs0 & - cs2 = ❨l - i, m❩;cs0. -#cs1 #cs2 #i * -cs1 -cs2 -i -[ #i #l #m #cs #H destruct -| #cs1 #cs #l1 #m1 #i1 #Hil1 #Hcs #l2 #m2 #cs2 #H destruct /3 width=3 by ex3_intro, or_intror/ -| #cs1 #cs #l1 #m1 #i1 #Hli1 #Hcs #l2 #m2 #cs2 #H destruct /3 width=1 by or_introl, conj/ -] -qed-. - -lemma minuss_inv_cons1: ∀cs1,cs2,l,m,i. ❨l, m❩;cs1 ▭ i ≘ cs2 → - l ≤ i ∧ cs1 ▭ m + i ≘ cs2 ∨ - ∃∃cs. i < l & cs1 ▭ i ≘ cs & - cs2 = ❨l - i, m❩;cs. -/2 width=3 by minuss_inv_cons1_aux/ qed-. - -lemma minuss_inv_cons1_ge: ∀cs1,cs2,l,m,i. ❨l, m❩;cs1 ▭ i ≘ cs2 → - l ≤ i → cs1 ▭ m + i ≘ cs2. -#cs1 #cs2 #l #m #i #H -elim (minuss_inv_cons1 … H) -H * // #cs #Hil #_ #_ #Hli -elim (lt_le_false … Hil Hli) -qed-. - -lemma minuss_inv_cons1_lt: ∀cs1,cs2,l,m,i. ❨l, m❩;cs1 ▭ i ≘ cs2 → - i < l → - ∃∃cs. cs1 ▭ i ≘ cs & cs2 = ❨l - i, m❩;cs. -#cs1 #cs2 #l #m #i #H elim (minuss_inv_cons1 … H) -H * /2 width=3 by ex2_intro/ -#Hli #_ #Hil elim (lt_le_false … Hil Hli) -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_plus.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_plus.ma deleted file mode 100644 index 041ed014c..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/mr2_plus.ma +++ /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 "ground_2/relocation/mr2.ma". - -(* MULTIPLE RELOCATION WITH PAIRS *******************************************) - -rec definition pluss (cs:mr2) (i:nat) on cs ≝ match cs with -[ nil2 ⇒ ◊ -| cons2 l m cs ⇒ ❨l + i,m❩;pluss cs i -]. - -interpretation "plus (multiple relocation with pairs)" - 'plus x y = (pluss x y). - -(* Basic properties *********************************************************) - -lemma pluss_SO2: ∀l,m,cs. (❨l,m❩;cs) + 1 = ❨↑l,m❩;cs + 1. -normalize // qed. - -(* Basic inversion lemmas ***************************************************) - -lemma pluss_inv_nil2: ∀i,cs. cs + i = ◊ → cs = ◊. -#i * // normalize -#l #m #cs #H destruct -qed. - -lemma pluss_inv_cons2: ∀i,l,m,cs2,cs. cs + i = ❨l,m❩;cs2 → - ∃∃cs1. cs1 + i = cs2 & cs = ❨l - i,m❩;cs1. -#i #l #m #cs2 * -[ normalize #H destruct -| #l1 #m1 #cs1 whd in ⊢ (??%?→?); #H destruct - next_rew #H cases (compose_inv_S1 … H) -H * -n /3 width=5 by after_next/ -] -qed-. - -theorem after_total: ∀f1,f2. f2 ⊚ f1 ≘ f2 ∘ f1. -/2 width=1 by after_total_aux/ qed. - -(* Specific inversion lemmas on after ***************************************) - -lemma after_inv_xpx: ∀f2,g2,f,n2,n. n2⨮f2 ⊚ g2 ≘ n⨮f → ∀f1. ⫯f1 = g2 → - f2 ⊚ f1 ≘ f ∧ n2 = n. -#f2 #g2 #f #n2 elim n2 -n2 -[ #n #Hf #f1 #H2 elim (after_inv_ppx … Hf … H2) -g2 [2,3: // ] - #g #Hf #H elim (push_inv_seq_dx … H) -H destruct /2 width=1 by conj/ -| #n2 #IH #n #Hf #f1 #H2 elim (after_inv_nxx … Hf) -Hf [2,3: // ] - #g1 #Hg #H1 elim (next_inv_seq_dx … H1) -H1 - #x #Hx #H destruct elim (IH … Hg) [2,3: // ] -IH -Hg - #H destruct /2 width=1 by conj/ -] -qed-. - -lemma after_inv_xnx: ∀f2,g2,f,n2,n. n2⨮f2 ⊚ g2 ≘ n⨮f → ∀f1. ↑f1 = g2 → - ∃∃m. f2 ⊚ f1 ≘ m⨮f & ↑(n2+m) = n. -#f2 #g2 #f #n2 elim n2 -n2 -[ #n #Hf #f1 #H2 elim (after_inv_pnx … Hf … H2) -g2 [2,3: // ] - #g #Hf #H elim (next_inv_seq_dx … H) -H - #x #Hx #Hg destruct /2 width=3 by ex2_intro/ -| #n2 #IH #n #Hf #f1 #H2 elim (after_inv_nxx … Hf) -Hf [2,3: // ] - #g #Hg #H elim (next_inv_seq_dx … H) -H - #x #Hx #H destruct elim (IH … Hg) -IH -Hg [2,3: // ] - #m #Hf #Hm destruct /2 width=3 by ex2_intro/ -] -qed-. - -lemma after_inv_const: ∀f2,f1,f,n1,n. n⨮f2 ⊚ n1⨮f1 ≘ n⨮f → f2 ⊚ f1 ≘ f ∧ 0 = n1. -#f2 #f1 #f #n1 #n elim n -n -[ #H elim (after_inv_pxp … H) -H [ |*: // ] - #g2 #Hf #H elim (push_inv_seq_dx … H) -H /2 width=1 by conj/ -| #n #IH #H lapply (after_inv_nxn … H ????) -H /2 width=5 by/ -] -qed-. - -lemma after_inv_total: ∀f2,f1,f. f2 ⊚ f1 ≘ f → f2 ∘ f1 ≡ f. -/2 width=4 by after_mono/ qed-. - -(* Specific forward lemmas on after *****************************************) - -lemma after_fwd_hd: ∀f2,f1,f,n1,n. f2 ⊚ n1⨮f1 ≘ n⨮f → f2@❨n1❩ = n. -#f2 #f1 #f #n1 #n #H lapply (after_fwd_at ? n1 0 … H) -H [1,2,3: // ] -/3 width=2 by at_inv_O1, sym_eq/ -qed-. - -lemma after_fwd_tls: ∀f,f1,n1,f2,n2,n. n2⨮f2 ⊚ n1⨮f1 ≘ n⨮f → - (⫰*[n1]f2) ⊚ f1 ≘ f. -#f #f1 #n1 elim n1 -n1 -[ #f2 #n2 #n #H elim (after_inv_xpx … H) -H // -| #n1 #IH * #m1 #f2 #n2 #n #H elim (after_inv_xnx … H) -H [2,3: // ] - #m #Hm #H destruct /2 width=3 by/ -] -qed-. - -lemma after_inv_apply: ∀f2,f1,f,n2,n1,n. n2⨮f2 ⊚ n1⨮f1 ≘ n⨮f → - (n2⨮f2)@❨n1❩ = n ∧ (⫰*[n1]f2) ⊚ f1 ≘ f. -/3 width=3 by after_fwd_tls, after_fwd_hd, conj/ qed-. - -(* Properties on apply ******************************************************) - -lemma compose_apply (f2) (f1) (i): f2@❨f1@❨i❩❩ = (f2∘f1)@❨i❩. -/4 width=6 by after_fwd_at, at_inv_total, sym_eq/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_basic.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_basic.ma deleted file mode 100644 index 12e2cfdda..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_basic.ma +++ /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 "ground_2/relocation/rtmap_basic.ma". -include "ground_2/relocation/nstream_after.ma". - -(* RELOCATION N-STREAM ******************************************************) - -(* Specific properties on basic relocation **********************************) - -lemma apply_basic_lt: ∀m,n,i. i < m → 𝐁❨m,n❩@❨i❩ = i. -/3 width=1 by at_inv_total, at_basic_lt/ qed-. - -lemma apply_basic_ge: ∀m,n,i. m ≤ i → 𝐁❨m,n❩@❨i❩ = n+i. -/3 width=1 by at_inv_total, at_basic_ge/ qed-. - -(* Specific main properties on basic relocation *****************************) - -theorem basic_swap: ∀d1,d2. d2 ≤ d1 → - ∀h1,h2. 𝐁❨d2,h2❩∘𝐁❨d1,h1❩ ≡ 𝐁❨h2+d1,h1❩∘𝐁❨d2,h2❩. -#d1 #d2 #Hd21 #h1 #h2 -@nstream_inv_eq -@nstream_eq_inv_ext #i -(apply_basic_lt … Hd1) >(apply_basic_lt … Hd2) >apply_basic_lt - /2 width=1 by le_plus_a/ -| elim (lt_or_ge i d1) -Hd21 #Hd1 - [ >(apply_basic_lt … Hd1) >(apply_basic_ge … Hd2) >apply_basic_lt - /2 width=1 by monotonic_lt_plus_r/ - | >(apply_basic_ge … Hd1) >(apply_basic_ge … Hd2) - >apply_basic_ge [2: /2 width=1 by le_plus_a/ ] - >apply_basic_ge /2 width=1 by monotonic_le_plus_r/ - ] -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_coafter.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_coafter.ma deleted file mode 100644 index f93a968b0..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_coafter.ma +++ /dev/null @@ -1,103 +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/notation/functions/cocompose_2.ma". -include "ground_2/relocation/rtmap_coafter.ma". - -(* RELOCATION N-STREAM ******************************************************) - -rec definition fun0 (n1:nat) on n1: rtmap → nat. -* * [ | #n2 #f2 @0 ] -#f2 cases n1 -n1 [ @0 ] -#n1 @(↑(fun0 n1 f2)) -defined. - -rec definition fun2 (n1:nat) on n1: rtmap → rtmap. -* * [ | #n2 #f2 @(n2⨮f2) ] -#f2 cases n1 -n1 [ @f2 ] -#n1 @(fun2 n1 f2) -defined. - -rec definition fun1 (n1:nat) (f1:rtmap) on n1: rtmap → rtmap. -* * [ | #n2 #f2 @(n1⨮f1) ] -#f2 cases n1 -n1 [ @f1 ] -#n1 @(fun1 n1 f1 f2) -defined. - -corec definition cocompose: rtmap → rtmap → rtmap. -#f2 * #n1 #f1 @(seq … (fun0 n1 f2)) @(cocompose (fun2 n1 f2) (fun1 n1 f1 f2)) -defined. - -interpretation "functional co-composition (nstream)" - 'CoCompose f1 f2 = (cocompose f1 f2). - -(* Basic properties on funs *************************************************) - -(* Note: we need theese since matita blocks recursive δ when ι is blocked *) -lemma fun0_xn: ∀f2,n1. 0 = fun0 n1 (↑f2). -* #n2 #f2 * // -qed. - -lemma fun2_xn: ∀f2,n1. f2 = fun2 n1 (↑f2). -* #n2 #f2 * // -qed. - -lemma fun1_xxn: ∀f2,f1,n1. fun1 n1 f1 (↑f2) = n1⨮f1. -* #n2 #f2 #f1 * // -qed. - -(* Basic properies on cocompose *********************************************) - -lemma cocompose_rew: ∀f2,f1,n1. (fun0 n1 f2)⨮(fun2 n1 f2)~∘(fun1 n1 f1 f2) = f2 ~∘ (n1⨮f1). -#f2 #f1 #n1 <(stream_rew … (f2~∘(n1⨮f1))) normalize // -qed. - -(* Basic inversion lemmas on compose ****************************************) - -lemma cocompose_inv_ppx: ∀f2,f1,f,x. (⫯f2) ~∘ (⫯f1) = x⨮f → - 0 = x ∧ f2 ~∘ f1 = f. -#f2 #f1 #f #x -next_rew #H cases (cocompose_inv_nxx … H) -H /3 width=5 by coafter_next/ -] -qed-. - -theorem coafter_total: ∀f2,f1. f2 ~⊚ f1 ≘ f2 ~∘ f1. -/2 width=1 by coafter_total_aux/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_eq.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_eq.ma deleted file mode 100644 index 48f3e0100..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_eq.ma +++ /dev/null @@ -1,55 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.tcs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "ground_2/relocation/rtmap_eq.ma". - -(* RELOCATION N-STREAM ******************************************************) - -(* Specific properties ******************************************************) - -fact eq_inv_seq_aux: ∀f1,f2,n1,n2. n1⨮f1 ≡ n2⨮f2 → n1 = n2 ∧ f1 ≡ f2. -#f1 #f2 #n1 #n2 @(nat_elim2 … n1 n2) -n1 -n2 -[ #n2 #H elim (eq_inv_px … H) -H [2,3: // ] - #g1 #H1 #H elim (push_inv_seq_dx … H) -H /2 width=1 by conj/ -| #n1 #H elim (eq_inv_np … H) -H // -| #n1 #n2 #IH #H lapply (eq_inv_nn … H ????) -H [1,2,3,4: // ] - #H elim (IH H) -IH -H /2 width=1 by conj/ -] -qed-. - -lemma eq_inv_seq: ∀g1,g2. g1 ≡ g2 → ∀f1,f2,n1,n2. n1⨮f1 = g1 → n2⨮f2 = g2 → - n1 = n2 ∧ f1 ≡ f2. -/2 width=1 by eq_inv_seq_aux/ qed-. - -corec lemma nstream_eq: ∀f1,f2. f1 ≡ f2 → f1 ≗ f2. -* #n1 #f1 * #n2 #f2 #Hf cases (eq_inv_gen … Hf) -Hf * -#g1 #g2 #Hg #H1 #H2 -[ cases (push_inv_seq_dx … H1) -H1 * -n1 #H1 - cases (push_inv_seq_dx … H2) -H2 * -n2 #H2 - @eq_seq /2 width=1 by/ -| cases (next_inv_seq_dx … H1) -H1 #m1 #H1 * -n1 - cases (next_inv_seq_dx … H2) -H2 #m2 #H2 * -n2 - cases (eq_inv_seq … Hg … H1 H2) -g1 -g2 #Hm #Hf - @eq_seq /2 width=1 by/ -] -qed-. - -corec lemma nstream_inv_eq: ∀f1,f2. f1 ≗ f2 → f1 ≡ f2. -* #n1 #f1 * #n2 #f2 #H cases (eq_stream_inv_seq ??? H) -H [2,3,4,5,6,7: // ] -#Hf * -n2 cases n1 -n1 /3 width=5 by eq_push/ -#n @eq_next /3 width=5 by eq_seq/ -qed. - -lemma eq_seq_id: ∀f1,f2. f1 ≡ f2 → ∀n. n⨮f1 ≡ n⨮f2. -/4 width=1 by nstream_inv_eq, nstream_eq, eq_seq/ qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_id.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_id.ma deleted file mode 100644 index fcb6cca72..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_id.ma +++ /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 "ground_2/notation/functions/identity_0.ma". -include "ground_2/relocation/rtmap_eq.ma". - -(* RELOCATION N-STREAM ******************************************************) - -corec definition id: rtmap ≝ ⫯id. - -interpretation "identity (nstream)" - 'Identity = (id). - -(* Basic properties *********************************************************) - -lemma id_rew: ⫯𝐈𝐝 = 𝐈𝐝. -<(stream_rew … (𝐈𝐝)) in ⊢ (???%); normalize // -qed. - -lemma id_eq_rew: ⫯𝐈𝐝 ≡ 𝐈𝐝. -cases id_rew in ⊢ (??%); // -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_isid.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_isid.ma deleted file mode 100644 index 98dc8f220..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_isid.ma +++ /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 "ground_2/notation/functions/identity_0.ma". -include "ground_2/relocation/rtmap_isid.ma". - -(* RELOCATION N-STREAM ******************************************************) - -(* Specific inversion lemmas ************************************************) - -lemma isid_inv_seq: ∀f,n. 𝐈❪n⨮f❫ → 𝐈❪f❫ ∧ 0 = n. -#f #n #H elim (isid_inv_gen … H) -H -#g #Hg #H elim (push_inv_seq_dx … H) -H /2 width=1 by conj/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_istot.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_istot.ma deleted file mode 100644 index 3a19d81a0..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_istot.ma +++ /dev/null @@ -1,120 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.tcs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "ground_2/notation/functions/apply_2.ma". -include "ground_2/relocation/nstream_eq.ma". -include "ground_2/relocation/rtmap_istot.ma". - -(* RELOCATION N-STREAM ******************************************************) - -rec definition apply (i: nat) on i: rtmap → nat ≝ ?. -* #n #f cases i -i -[ @n -| #i lapply (apply i f) -apply -i -f - #i @(↑(n+i)) -] -defined. - -interpretation "functional application (nstream)" - 'Apply f i = (apply i f). - -(* Specific properties on at ************************************************) - -lemma at_O1: ∀i2,f. @❪0, i2⨮f❫ ≘ i2. -#i2 elim i2 -i2 /2 width=5 by at_refl, at_next/ -qed. - -lemma at_S1: ∀n,f,i1,i2. @❪i1, f❫ ≘ i2 → @❪↑i1, n⨮f❫ ≘ ↑(n+i2). -#n elim n -n /3 width=7 by at_push, at_next/ -qed. - -lemma at_total: ∀i1,f. @❪i1, f❫ ≘ f@❨i1❩. -#i1 elim i1 -i1 -[ * // | #i #IH * /3 width=1 by at_S1/ ] -qed. - -lemma at_istot: ∀f. 𝐓❪f❫. -/2 width=2 by ex_intro/ qed. - -lemma at_plus2: ∀f,i1,i,n,m. @❪i1, n⨮f❫ ≘ i → @❪i1, (m+n)⨮f❫ ≘ m+i. -#f #i1 #i #n #m #H elim m -m // -#m apply_O1 >apply_O1 #H destruct - lapply (Hf (↑i)) >apply_S1 >apply_S1 #H - /3 width=2 by injective_plus_r, injective_S/ -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_sor.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_sor.ma deleted file mode 100644 index 595a23a12..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/nstream_sor.ma +++ /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 "ground_2/relocation/rtmap_sor.ma". - -(* RELOCATION N-STREAM ******************************************************) - -axiom union: rtmap → rtmap → rtmap. - -interpretation "union (nstream)" - 'union f1 f2 = (union f1 f2). - -(* Specific properties on sor ***********************************************) - -axiom sor_total: ∀f1,f2. f1 ⋓ f2 ≘ f1 ∪ f2. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap.ma deleted file mode 100644 index 8a2b7848b..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap.ma +++ /dev/null @@ -1,21 +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/relocation/nstream.ma". - -(* RELOCATION MAP ***********************************************************) - -lemma pn_split: ∀f. (∃g. ⫯g = f) ∨ (∃g. ↑g = f). -@case_prop /3 width=2 by or_introl, or_intror, ex_intro/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_after.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_after.ma deleted file mode 100644 index b2ec8605c..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_after.ma +++ /dev/null @@ -1,557 +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/notation/relations/rafter_3.ma". -include "ground_2/relocation/rtmap_istot.ma". - -(* RELOCATION MAP ***********************************************************) - -coinductive after: relation3 rtmap rtmap rtmap ≝ -| after_refl: ∀f1,f2,f,g1,g2,g. - after f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → after g1 g2 g -| after_push: ∀f1,f2,f,g1,g2,g. - after f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → after g1 g2 g -| after_next: ∀f1,f2,f,g1,g. - after f1 f2 f → ↑f1 = g1 → ↑f = g → after g1 f2 g -. - -interpretation "relational composition (rtmap)" - 'RAfter f1 f2 f = (after f1 f2 f). - -definition H_after_inj: predicate rtmap ≝ - λf1. 𝐓❪f1❫ → - ∀f,f21,f22. f1 ⊚ f21 ≘ f → f1 ⊚ f22 ≘ f → f21 ≡ f22. - -(* Basic inversion lemmas ***************************************************) - -lemma after_inv_ppx: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → - ∃∃f. f1 ⊚ f2 ≘ f & ⫯f = g. -#g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 -[ #g2 #g #Hf #H1 #H2 #H #x1 #x2 #Hx1 #Hx2 destruct - >(injective_push … Hx1) >(injective_push … Hx2) -x2 -x1 - /2 width=3 by ex2_intro/ -| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct - elim (discr_push_next … Hx2) -| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct - elim (discr_push_next … Hx1) -] -qed-. - -lemma after_inv_pnx: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ⊚ f2 ≘ f & ↑f = g. -#g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 -[ #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct - elim (discr_next_push … Hx2) -| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct - >(injective_push … Hx1) >(injective_next … Hx2) -x2 -x1 - /2 width=3 by ex2_intro/ -| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct - elim (discr_push_next … Hx1) -] -qed-. - -lemma after_inv_nxx: ∀g1,f2,g. g1 ⊚ f2 ≘ g → ∀f1. ↑f1 = g1 → - ∃∃f. f1 ⊚ f2 ≘ f & ↑f = g. -#g1 #f2 #g * -g1 -f2 -g #f1 #f2 #f #g1 -[ #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct - elim (discr_next_push … Hx1) -| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct - elim (discr_next_push … Hx1) -| #g #Hf #H1 #H #x1 #Hx1 destruct - >(injective_next … Hx1) -x1 - /2 width=3 by ex2_intro/ -] -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma after_inv_ppp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → f1 ⊚ f2 ≘ f. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_ppx … Hg … H1 H2) -g1 -g2 -#x #Hf #Hx destruct <(injective_push … Hx) -f // -qed-. - -lemma after_inv_ppn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ↑f = g → ⊥. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_ppx … Hg … H1 H2) -g1 -g2 -#x #Hf #Hx destruct elim (discr_push_next … Hx) -qed-. - -lemma after_inv_pnn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ⊚ f2 ≘ f. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_pnx … Hg … H1 H2) -g1 -g2 -#x #Hf #Hx destruct <(injective_next … Hx) -f // -qed-. - -lemma after_inv_pnp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → ⊥. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H elim (after_inv_pnx … Hg … H1 H2) -g1 -g2 -#x #Hf #Hx destruct elim (discr_next_push … Hx) -qed-. - -lemma after_inv_nxn: ∀g1,f2,g. g1 ⊚ f2 ≘ g → - ∀f1,f. ↑f1 = g1 → ↑f = g → f1 ⊚ f2 ≘ f. -#g1 #f2 #g #Hg #f1 #f #H1 #H elim (after_inv_nxx … Hg … H1) -g1 -#x #Hf #Hx destruct <(injective_next … Hx) -f // -qed-. - -lemma after_inv_nxp: ∀g1,f2,g. g1 ⊚ f2 ≘ g → - ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥. -#g1 #f2 #g #Hg #f1 #f #H1 #H elim (after_inv_nxx … Hg … H1) -g1 -#x #Hf #Hx destruct elim (discr_next_push … Hx) -qed-. - -lemma after_inv_pxp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → - ∀f1,f. ⫯f1 = g1 → ⫯f = g → - ∃∃f2. f1 ⊚ f2 ≘ f & ⫯f2 = g2. -#g1 * * [2: #m2] #g2 #g #Hg #f1 #f #H1 #H -[ elim (after_inv_pnp … Hg … H1 … H) -g1 -g -f1 -f // -| lapply (after_inv_ppp … Hg … H1 … H) -g1 -g /2 width=3 by ex2_intro/ -] -qed-. - -lemma after_inv_pxn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → - ∀f1,f. ⫯f1 = g1 → ↑f = g → - ∃∃f2. f1 ⊚ f2 ≘ f & ↑f2 = g2. -#g1 * * [2: #m2] #g2 #g #Hg #f1 #f #H1 #H -[ lapply (after_inv_pnn … Hg … H1 … H) -g1 -g /2 width=3 by ex2_intro/ -| elim (after_inv_ppn … Hg … H1 … H) -g1 -g -f1 -f // -] -qed-. - -lemma after_inv_xxp: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f. ⫯f = g → - ∃∃f1,f2. f1 ⊚ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2. -* * [2: #m1 ] #g1 #g2 #g #Hg #f #H -[ elim (after_inv_nxp … Hg … H) -g2 -g -f // -| elim (after_inv_pxp … Hg … H) -g /2 width=5 by ex3_2_intro/ -] -qed-. - -lemma after_inv_xxn: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f. ↑f = g → - (∃∃f1,f2. f1 ⊚ f2 ≘ f & ⫯f1 = g1 & ↑f2 = g2) ∨ - ∃∃f1. f1 ⊚ g2 ≘ f & ↑f1 = g1. -* * [2: #m1 ] #g1 #g2 #g #Hg #f #H -[ /4 width=5 by after_inv_nxn, or_intror, ex2_intro/ -| elim (after_inv_pxn … Hg … H) -g - /3 width=5 by or_introl, ex3_2_intro/ -] -qed-. - -lemma after_inv_pxx: ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f1. ⫯f1 = g1 → - (∃∃f2,f. f1 ⊚ f2 ≘ f & ⫯f2 = g2 & ⫯f = g) ∨ - (∃∃f2,f. f1 ⊚ f2 ≘ f & ↑f2 = g2 & ↑f = g). -#g1 * * [2: #m2 ] #g2 #g #Hg #f1 #H -[ elim (after_inv_pnx … Hg … H) -g1 - /3 width=5 by or_intror, ex3_2_intro/ -| elim (after_inv_ppx … Hg … H) -g1 - /3 width=5 by or_introl, ex3_2_intro/ -] -qed-. - -(* Basic properties *********************************************************) - -corec lemma after_eq_repl_back2: ∀f1,f. eq_repl_back (λf2. f2 ⊚ f1 ≘ f). -#f1 #f #f2 * -f2 -f1 -f -#f21 #f1 #f #g21 [1,2: #g1 ] #g #Hf #H21 [1,2: #H1 ] #H #g22 #H0 -[ cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by after_refl/ -| cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by after_push/ -| cases (eq_inv_nx … H0 … H21) -g21 /3 width=5 by after_next/ -] -qed-. - -lemma after_eq_repl_fwd2: ∀f1,f. eq_repl_fwd (λf2. f2 ⊚ f1 ≘ f). -#f1 #f @eq_repl_sym /2 width=3 by after_eq_repl_back2/ -qed-. - -corec lemma after_eq_repl_back1: ∀f2,f. eq_repl_back (λf1. f2 ⊚ f1 ≘ f). -#f2 #f #f1 * -f2 -f1 -f -#f2 #f11 #f #g2 [1,2: #g11 ] #g #Hf #H2 [1,2: #H11 ] #H #g2 #H0 -[ cases (eq_inv_px … H0 … H11) -g11 /3 width=7 by after_refl/ -| cases (eq_inv_nx … H0 … H11) -g11 /3 width=7 by after_push/ -| @(after_next … H2 H) /2 width=5 by/ -] -qed-. - -lemma after_eq_repl_fwd1: ∀f2,f. eq_repl_fwd (λf1. f2 ⊚ f1 ≘ f). -#f2 #f @eq_repl_sym /2 width=3 by after_eq_repl_back1/ -qed-. - -corec lemma after_eq_repl_back0: ∀f1,f2. eq_repl_back (λf. f2 ⊚ f1 ≘ f). -#f2 #f1 #f * -f2 -f1 -f -#f2 #f1 #f01 #g2 [1,2: #g1 ] #g01 #Hf01 #H2 [1,2: #H1 ] #H01 #g02 #H0 -[ cases (eq_inv_px … H0 … H01) -g01 /3 width=7 by after_refl/ -| cases (eq_inv_nx … H0 … H01) -g01 /3 width=7 by after_push/ -| cases (eq_inv_nx … H0 … H01) -g01 /3 width=5 by after_next/ -] -qed-. - -lemma after_eq_repl_fwd0: ∀f2,f1. eq_repl_fwd (λf. f2 ⊚ f1 ≘ f). -#f2 #f1 @eq_repl_sym /2 width=3 by after_eq_repl_back0/ -qed-. - -(* Main properties **********************************************************) - -corec theorem after_trans1: ∀f0,f3,f4. f0 ⊚ f3 ≘ f4 → - ∀f1,f2. f1 ⊚ f2 ≘ f0 → - ∀f. f2 ⊚ f3 ≘ f → f1 ⊚ f ≘ f4. -#f0 #f3 #f4 * -f0 -f3 -f4 #f0 #f3 #f4 #g0 [1,2: #g3 ] #g4 -[ #Hf4 #H0 #H3 #H4 #g1 #g2 #Hg0 #g #Hg - cases (after_inv_xxp … Hg0 … H0) -g0 - #f1 #f2 #Hf0 #H1 #H2 - cases (after_inv_ppx … Hg … H2 H3) -g2 -g3 - #f #Hf #H /3 width=7 by after_refl/ -| #Hf4 #H0 #H3 #H4 #g1 #g2 #Hg0 #g #Hg - cases (after_inv_xxp … Hg0 … H0) -g0 - #f1 #f2 #Hf0 #H1 #H2 - cases (after_inv_pnx … Hg … H2 H3) -g2 -g3 - #f #Hf #H /3 width=7 by after_push/ -| #Hf4 #H0 #H4 #g1 #g2 #Hg0 #g #Hg - cases (after_inv_xxn … Hg0 … H0) -g0 * - [ #f1 #f2 #Hf0 #H1 #H2 - cases (after_inv_nxx … Hg … H2) -g2 - #f #Hf #H /3 width=7 by after_push/ - | #f1 #Hf0 #H1 /3 width=6 by after_next/ - ] -] -qed-. - -corec theorem after_trans2: ∀f1,f0,f4. f1 ⊚ f0 ≘ f4 → - ∀f2, f3. f2 ⊚ f3 ≘ f0 → - ∀f. f1 ⊚ f2 ≘ f → f ⊚ f3 ≘ f4. -#f1 #f0 #f4 * -f1 -f0 -f4 #f1 #f0 #f4 #g1 [1,2: #g0 ] #g4 -[ #Hf4 #H1 #H0 #H4 #g2 #g3 #Hg0 #g #Hg - cases (after_inv_xxp … Hg0 … H0) -g0 - #f2 #f3 #Hf0 #H2 #H3 - cases (after_inv_ppx … Hg … H1 H2) -g1 -g2 - #f #Hf #H /3 width=7 by after_refl/ -| #Hf4 #H1 #H0 #H4 #g2 #g3 #Hg0 #g #Hg - cases (after_inv_xxn … Hg0 … H0) -g0 * - [ #f2 #f3 #Hf0 #H2 #H3 - cases (after_inv_ppx … Hg … H1 H2) -g1 -g2 - #f #Hf #H /3 width=7 by after_push/ - | #f2 #Hf0 #H2 - cases (after_inv_pnx … Hg … H1 H2) -g1 -g2 - #f #Hf #H /3 width=6 by after_next/ - ] -| #Hf4 #H1 #H4 #f2 #f3 #Hf0 #g #Hg - cases (after_inv_nxx … Hg … H1) -g1 - #f #Hg #H /3 width=6 by after_next/ -] -qed-. - -(* Main inversion lemmas ****************************************************) - -corec theorem after_mono: ∀f1,f2,x,y. f1 ⊚ f2 ≘ x → f1 ⊚ f2 ≘ y → x ≡ y. -#f1 #f2 #x #y * -f1 -f2 -x -#f1 #f2 #x #g1 [1,2: #g2 ] #g #Hx #H1 [1,2: #H2 ] #H0x #Hy -[ cases (after_inv_ppx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_push/ -| cases (after_inv_pnx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_next/ -| cases (after_inv_nxx … Hy … H1) -g1 /3 width=8 by eq_next/ -] -qed-. - -lemma after_mono_eq: ∀f1,f2,f. f1 ⊚ f2 ≘ f → ∀g1,g2,g. g1 ⊚ g2 ≘ g → - f1 ≡ g1 → f2 ≡ g2 → f ≡ g. -/4 width=4 by after_mono, after_eq_repl_back1, after_eq_repl_back2/ qed-. - -(* Properties on tls ********************************************************) - -lemma after_tls: ∀n,f1,f2,f. @❪0, f1❫ ≘ n → - f1 ⊚ f2 ≘ f → ⫱*[n]f1 ⊚ f2 ≘ ⫱*[n]f. -#n elim n -n // -#n #IH #f1 #f2 #f #Hf1 #Hf -cases (at_inv_pxn … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 -cases (after_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct -(injective_push … Hf) -g destruct /2 width=3 by ex2_intro/ -| #f #i1 #i2 #_ #g #j2 * #_ #x #x1 #_ #H elim (discr_push_next … H) -] -qed-. - -lemma at_inv_xnx: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g. ↑g = f → - ∃∃j2. @❪i1,g❫ ≘ j2 & ↑j2 = i2. -#f #i1 #i2 * -f -i1 -i2 -[ #f #g #j1 #j2 * #_ #_ #x #H elim (discr_next_push … H) -| #f #i1 #i2 #_ #g #j1 #j2 * #_ #_ #x #H elim (discr_next_push … H) -| #f #i1 #i2 #Hi #g #j2 * * #x #H >(injective_next … H) -g /2 width=3 by ex2_intro/ -] -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma at_inv_ppn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → - ∀g,j2. 0 = i1 → ⫯g = f → ↑j2 = i2 → ⊥. -#f #i1 #i2 #Hf #g #j2 #H1 #H <(at_inv_ppx … Hf … H1 H) -f -g -i1 -i2 -#H destruct -qed-. - -lemma at_inv_npp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → - ∀g,j1. ↑j1 = i1 → ⫯g = f → 0 = i2 → ⊥. -#f #i1 #i2 #Hf #g #j1 #H1 #H elim (at_inv_npx … Hf … H1 H) -f -i1 -#x2 #Hg * -i2 #H destruct -qed-. - -lemma at_inv_npn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → - ∀g,j1,j2. ↑j1 = i1 → ⫯g = f → ↑j2 = i2 → @❪j1,g❫ ≘ j2. -#f #i1 #i2 #Hf #g #j1 #j2 #H1 #H elim (at_inv_npx … Hf … H1 H) -f -i1 -#x2 #Hg * -i2 #H destruct // -qed-. - -lemma at_inv_xnp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → - ∀g. ↑g = f → 0 = i2 → ⊥. -#f #i1 #i2 #Hf #g #H elim (at_inv_xnx … Hf … H) -f -#x2 #Hg * -i2 #H destruct -qed-. - -lemma at_inv_xnn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → - ∀g,j2. ↑g = f → ↑j2 = i2 → @❪i1,g❫ ≘ j2. -#f #i1 #i2 #Hf #g #j2 #H elim (at_inv_xnx … Hf … H) -f -#x2 #Hg * -i2 #H destruct // -qed-. - -lemma at_inv_pxp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → 0 = i1 → 0 = i2 → ∃g. ⫯g = f. -#f elim (pn_split … f) * /2 width=2 by ex_intro/ -#g #H #i1 #i2 #Hf #H1 #H2 cases (at_inv_xnp … Hf … H H2) -qed-. - -lemma at_inv_pxn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀j2. 0 = i1 → ↑j2 = i2 → - ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f. -#f elim (pn_split … f) * -#g #H #i1 #i2 #Hf #j2 #H1 #H2 -[ elim (at_inv_ppn … Hf … H1 H H2) -| /3 width=5 by at_inv_xnn, ex2_intro/ -] -qed-. - -lemma at_inv_nxp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → - ∀j1. ↑j1 = i1 → 0 = i2 → ⊥. -#f elim (pn_split f) * -#g #H #i1 #i2 #Hf #j1 #H1 #H2 -[ elim (at_inv_npp … Hf … H1 H H2) -| elim (at_inv_xnp … Hf … H H2) -] -qed-. - -lemma at_inv_nxn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀j1,j2. ↑j1 = i1 → ↑j2 = i2 → - (∃∃g. @❪j1,g❫ ≘ j2 & ⫯g = f) ∨ - ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f. -#f elim (pn_split f) * -/4 width=7 by at_inv_xnn, at_inv_npn, ex2_intro, or_intror, or_introl/ -qed-. - -(* Note: the following inversion lemmas must be checked *) -lemma at_inv_xpx: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f → - (0 = i1 ∧ 0 = i2) ∨ - ∃∃j1,j2. @❪j1,g❫ ≘ j2 & ↑j1 = i1 & ↑j2 = i2. -#f * [2: #i1 ] #i2 #Hf #g #H -[ elim (at_inv_npx … Hf … H) -f /3 width=5 by or_intror, ex3_2_intro/ -| >(at_inv_ppx … Hf … H) -f /3 width=1 by conj, or_introl/ -] -qed-. - -lemma at_inv_xpp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f → 0 = i2 → 0 = i1. -#f #i1 #i2 #Hf #g #H elim (at_inv_xpx … Hf … H) -f * // -#j1 #j2 #_ #_ * -i2 #H destruct -qed-. - -lemma at_inv_xpn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀g,j2. ⫯g = f → ↑j2 = i2 → - ∃∃j1. @❪j1,g❫ ≘ j2 & ↑j1 = i1. -#f #i1 #i2 #Hf #g #j2 #H elim (at_inv_xpx … Hf … H) -f * -[ #_ * -i2 #H destruct -| #x1 #x2 #Hg #H1 * -i2 #H destruct /2 width=3 by ex2_intro/ -] -qed-. - -lemma at_inv_xxp: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → 0 = i2 → - ∃∃g. 0 = i1 & ⫯g = f. -#f elim (pn_split f) * -#g #H #i1 #i2 #Hf #H2 -[ /3 width=6 by at_inv_xpp, ex2_intro/ -| elim (at_inv_xnp … Hf … H H2) -] -qed-. - -lemma at_inv_xxn: ∀f,i1,i2. @❪i1,f❫ ≘ i2 → ∀j2. ↑j2 = i2 → - (∃∃g,j1. @❪j1,g❫ ≘ j2 & ↑j1 = i1 & ⫯g = f) ∨ - ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f. -#f elim (pn_split f) * -#g #H #i1 #i2 #Hf #j2 #H2 -[ elim (at_inv_xpn … Hf … H H2) -i2 /3 width=5 by or_introl, ex3_2_intro/ -| lapply (at_inv_xnn … Hf … H H2) -i2 /3 width=3 by or_intror, ex2_intro/ -] -qed-. - -(* Basic forward lemmas *****************************************************) - -lemma at_increasing: ∀i2,i1,f. @❪i1,f❫ ≘ i2 → i1 ≤ i2. -#i2 elim i2 -i2 -[ #i1 #f #Hf elim (at_inv_xxp … Hf) -Hf // -| #i2 #IH * // - #i1 #f #Hf elim (at_inv_nxn … Hf) -Hf [1,4: * |*: // ] - /3 width=2 by le_S_S, le_S/ -] -qed-. - -lemma at_increasing_strict: ∀g,i1,i2. @❪i1,g❫ ≘ i2 → ∀f. ↑f = g → - i1 < i2 ∧ @❪i1,f❫ ≘ ↓i2. -#g #i1 #i2 #Hg #f #H elim (at_inv_xnx … Hg … H) -Hg -H -/4 width=2 by conj, at_increasing, le_S_S/ -qed-. - -lemma at_fwd_id_ex: ∀f,i. @❪i,f❫ ≘ i → ∃g. ⫯g = f. -#f elim (pn_split f) * /2 width=2 by ex_intro/ -#g #H #i #Hf elim (at_inv_xnx … Hf … H) -Hf -H -#j2 #Hg #H destruct lapply (at_increasing … Hg) -Hg -#H elim (lt_le_false … H) -H // -qed-. - -(* Basic properties *********************************************************) - -corec lemma at_eq_repl_back: ∀i1,i2. eq_repl_back (λf. @❪i1,f❫ ≘ i2). -#i1 #i2 #f1 #H1 cases H1 -f1 -i1 -i2 -[ #f1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12 cases (eq_inv_px … H12 … H) -g1 /2 width=2 by at_refl/ -| #f1 #i1 #i2 #Hf1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12 cases (eq_inv_px … H12 … H) -g1 /3 width=7 by at_push/ -| #f1 #i1 #i2 #Hf1 #g1 #j2 #H #H2 #f2 #H12 cases (eq_inv_nx … H12 … H) -g1 /3 width=5 by at_next/ -] -qed-. - -lemma at_eq_repl_fwd: ∀i1,i2. eq_repl_fwd (λf. @❪i1,f❫ ≘ i2). -#i1 #i2 @eq_repl_sym /2 width=3 by at_eq_repl_back/ -qed-. - -lemma at_le_ex: ∀j2,i2,f. @❪i2,f❫ ≘ j2 → ∀i1. i1 ≤ i2 → - ∃∃j1. @❪i1,f❫ ≘ j1 & j1 ≤ j2. -#j2 elim j2 -j2 [2: #j2 #IH ] #i2 #f #Hf -[ elim (at_inv_xxn … Hf) -Hf [1,3: * |*: // ] - #g [ #x2 ] #Hg [ #H2 ] #H0 - [ * /3 width=3 by at_refl, ex2_intro/ - #i1 #Hi12 destruct lapply (le_S_S_to_le … Hi12) -Hi12 - #Hi12 elim (IH … Hg … Hi12) -x2 -IH - /3 width=7 by at_push, ex2_intro, le_S_S/ - | #i1 #Hi12 elim (IH … Hg … Hi12) -IH -i2 - /3 width=5 by at_next, ex2_intro, le_S_S/ - ] -| elim (at_inv_xxp … Hf) -Hf // - #g * -i2 #H2 #i1 #Hi12 <(le_n_O_to_eq … Hi12) - /3 width=3 by at_refl, ex2_intro/ -] -qed-. - -lemma at_id_le: ∀i1,i2. i1 ≤ i2 → ∀f. @❪i2,f❫ ≘ i2 → @❪i1,f❫ ≘ i1. -#i1 #i2 #H @(le_elim … H) -i1 -i2 [ #i2 | #i1 #i2 #IH ] -#f #Hf elim (at_fwd_id_ex … Hf) /4 width=7 by at_inv_npn, at_push, at_refl/ -qed-. - -(* Main properties **********************************************************) - -theorem at_monotonic: ∀j2,i2,f. @❪i2,f❫ ≘ j2 → ∀j1,i1. @❪i1,f❫ ≘ j1 → - i1 < i2 → j1 < j2. -#j2 elim j2 -j2 -[ #i2 #f #H2f elim (at_inv_xxp … H2f) -H2f // - #g #H21 #_ #j1 #i1 #_ #Hi elim (lt_le_false … Hi) -Hi // -| #j2 #IH #i2 #f #H2f * // - #j1 #i1 #H1f #Hi elim (lt_inv_gen … Hi) - #x2 #_ #H21 elim (at_inv_nxn … H2f … H21) -H2f [1,3: * |*: // ] - #g #H2g #H - [ elim (at_inv_xpn … H1f … H) -f - /4 width=8 by lt_S_S_to_lt, lt_S_S/ - | /4 width=8 by at_inv_xnn, lt_S_S/ - ] -] -qed-. - -theorem at_inv_monotonic: ∀j1,i1,f. @❪i1,f❫ ≘ j1 → ∀j2,i2. @❪i2,f❫ ≘ j2 → - j1 < j2 → i1 < i2. -#j1 elim j1 -j1 -[ #i1 #f #H1f elim (at_inv_xxp … H1f) -H1f // - #g * -i1 #H #j2 #i2 #H2f #Hj elim (lt_inv_O1 … Hj) -Hj - #x2 #H22 elim (at_inv_xpn … H2f … H H22) -f // -| #j1 #IH * - [ #f #H1f elim (at_inv_pxn … H1f) -H1f [ |*: // ] - #g #H1g #H #j2 #i2 #H2f #Hj elim (lt_inv_S1 … Hj) -Hj - /3 width=7 by at_inv_xnn/ - | #i1 #f #H1f #j2 #i2 #H2f #Hj elim (lt_inv_S1 … Hj) -Hj - #y2 #Hj #H22 elim (at_inv_nxn … H1f) -H1f [1,4: * |*: // ] - #g #Hg #H - [ elim (at_inv_xpn … H2f … H H22) -f -H22 - /3 width=7 by lt_S_S/ - | /3 width=7 by at_inv_xnn/ - ] - ] -] -qed-. - -theorem at_mono: ∀f,i,i1. @❪i,f❫ ≘ i1 → ∀i2. @❪i,f❫ ≘ i2 → i2 = i1. -#f #i #i1 #H1 #i2 #H2 elim (lt_or_eq_or_gt i2 i1) // -#Hi elim (lt_le_false i i) /3 width=6 by at_inv_monotonic, eq_sym/ -qed-. - -theorem at_inj: ∀f,i1,i. @❪i1,f❫ ≘ i → ∀i2. @❪i2,f❫ ≘ i → i1 = i2. -#f #i1 #i #H1 #i2 #H2 elim (lt_or_eq_or_gt i2 i1) // -#Hi elim (lt_le_false i i) /3 width=6 by at_monotonic, eq_sym/ -qed-. - -theorem at_div_comm: ∀f2,g2,f1,g1. - H_at_div f2 g2 f1 g1 → H_at_div g2 f2 g1 f1. -#f2 #g2 #f1 #g1 #IH #jg #jf #j #Hg #Hf -elim (IH … Hf Hg) -IH -j /2 width=3 by ex2_intro/ -qed-. - -theorem at_div_pp: ∀f2,g2,f1,g1. - H_at_div f2 g2 f1 g1 → H_at_div (⫯f2) (⫯g2) (⫯f1) (⫯g1). -#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg -elim (at_inv_xpx … Hf) -Hf [1,2: * |*: // ] -[ #H1 #H2 destruct -IH - lapply (at_inv_xpp … Hg ???) -Hg [4: |*: // ] #H destruct - /3 width=3 by at_refl, ex2_intro/ -| #xf #i #Hf2 #H1 #H2 destruct - lapply (at_inv_xpn … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct - elim (IH … Hf2 Hg2) -IH -i /3 width=9 by at_push, ex2_intro/ -] -qed-. - -theorem at_div_nn: ∀f2,g2,f1,g1. - H_at_div f2 g2 f1 g1 → H_at_div (↑f2) (↑g2) (f1) (g1). -#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg -elim (at_inv_xnx … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct -lapply (at_inv_xnn … Hg ????) -Hg [5: |*: // ] #Hg2 -elim (IH … Hf2 Hg2) -IH -i /2 width=3 by ex2_intro/ -qed-. - -theorem at_div_np: ∀f2,g2,f1,g1. - H_at_div f2 g2 f1 g1 → H_at_div (↑f2) (⫯g2) (f1) (↑g1). -#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg -elim (at_inv_xnx … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct -lapply (at_inv_xpn … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct -elim (IH … Hf2 Hg2) -IH -i /3 width=7 by at_next, ex2_intro/ -qed-. - -theorem at_div_pn: ∀f2,g2,f1,g1. - H_at_div f2 g2 f1 g1 → H_at_div (⫯f2) (↑g2) (↑f1) (g1). -/4 width=6 by at_div_np, at_div_comm/ qed-. - -(* Properties on tls ********************************************************) - -lemma at_pxx_tls: ∀n,f. @❪0,f❫ ≘ n → @❪0,⫱*[n]f❫ ≘ 0. -#n elim n -n // -#n #IH #f #Hf -cases (at_inv_pxn … Hf) -Hf [ |*: // ] #g #Hg #H0 destruct -(injective_push … Hx1) >(injective_push … Hx2) -x2 -x1 - /2 width=3 by ex2_intro/ -| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct - elim (discr_push_next … Hx2) -| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct - elim (discr_push_next … Hx1) -] -qed-. - -lemma coafter_inv_pnx: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ~⊚ f2 ≘ f & ↑f = g. -#g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 -[ #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct - elim (discr_next_push … Hx2) -| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct - >(injective_push … Hx1) >(injective_next … Hx2) -x2 -x1 - /2 width=3 by ex2_intro/ -| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct - elim (discr_push_next … Hx1) -] -qed-. - -lemma coafter_inv_nxx: ∀g1,f2,g. g1 ~⊚ f2 ≘ g → ∀f1. ↑f1 = g1 → - ∃∃f. f1 ~⊚ f2 ≘ f & ⫯f = g. -#g1 #f2 #g * -g1 -f2 -g #f1 #f2 #f #g1 -[ #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct - elim (discr_next_push … Hx1) -| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct - elim (discr_next_push … Hx1) -| #g #Hf #H1 #H #x1 #Hx1 destruct - >(injective_next … Hx1) -x1 - /2 width=3 by ex2_intro/ -] -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma coafter_inv_ppp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → f1 ~⊚ f2 ≘ f. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H -elim (coafter_inv_ppx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct -<(injective_push … Hx) -f // -qed-. - -lemma coafter_inv_ppn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ↑f = g → ⊥. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H -elim (coafter_inv_ppx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct -elim (discr_push_next … Hx) -qed-. - -lemma coafter_inv_pnn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ~⊚ f2 ≘ f. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H -elim (coafter_inv_pnx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct -<(injective_next … Hx) -f // -qed-. - -lemma coafter_inv_pnp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → ⊥. -#g1 #g2 #g #Hg #f1 #f2 #f #H1 #H2 #H -elim (coafter_inv_pnx … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct -elim (discr_next_push … Hx) -qed-. - -lemma coafter_inv_nxp: ∀g1,f2,g. g1 ~⊚ f2 ≘ g → - ∀f1,f. ↑f1 = g1 → ⫯f = g → f1 ~⊚ f2 ≘ f. -#g1 #f2 #g #Hg #f1 #f #H1 #H -elim (coafter_inv_nxx … Hg … H1) -g1 #x #Hf #Hx destruct -<(injective_push … Hx) -f // -qed-. - -lemma coafter_inv_nxn: ∀g1,f2,g. g1 ~⊚ f2 ≘ g → - ∀f1,f. ↑f1 = g1 → ↑f = g → ⊥. -#g1 #f2 #g #Hg #f1 #f #H1 #H -elim (coafter_inv_nxx … Hg … H1) -g1 #x #Hf #Hx destruct -elim (discr_push_next … Hx) -qed-. - -lemma coafter_inv_pxp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - ∀f1,f. ⫯f1 = g1 → ⫯f = g → - ∃∃f2. f1 ~⊚ f2 ≘ f & ⫯f2 = g2. -#g1 #g2 #g #Hg #f1 #f #H1 #H elim (pn_split g2) * #f2 #H2 -[ lapply (coafter_inv_ppp … Hg … H1 H2 H) -g1 -g /2 width=3 by ex2_intro/ -| elim (coafter_inv_pnp … Hg … H1 H2 H) -] -qed-. - -lemma coafter_inv_pxn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - ∀f1,f. ⫯f1 = g1 → ↑f = g → - ∃∃f2. f1 ~⊚ f2 ≘ f & ↑f2 = g2. -#g1 #g2 #g #Hg #f1 #f #H1 #H elim (pn_split g2) * #f2 #H2 -[ elim (coafter_inv_ppn … Hg … H1 H2 H) -| lapply (coafter_inv_pnn … Hg … H1 … H) -g1 -g /2 width=3 by ex2_intro/ -] -qed-. - -lemma coafter_inv_xxn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f. ↑f = g → - ∃∃f1,f2. f1 ~⊚ f2 ≘ f & ⫯f1 = g1 & ↑f2 = g2. -#g1 #g2 #g #Hg #f #H elim (pn_split g1) * #f1 #H1 -[ elim (coafter_inv_pxn … Hg … H1 H) -g /2 width=5 by ex3_2_intro/ -| elim (coafter_inv_nxn … Hg … H1 H) -] -qed-. - -lemma coafter_inv_xnn: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - ∀f2,f. ↑f2 = g2 → ↑f = g → - ∃∃f1. f1 ~⊚ f2 ≘ f & ⫯f1 = g1. -#g1 #g2 #g #Hg #f2 #f #H2 destruct #H -elim (coafter_inv_xxn … Hg … H) -g -#z1 #z2 #Hf #H1 #H2 destruct /2 width=3 by ex2_intro/ -qed-. - -lemma coafter_inv_xxp: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f. ⫯f = g → - (∃∃f1,f2. f1 ~⊚ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2) ∨ - ∃∃f1. f1 ~⊚ g2 ≘ f & ↑f1 = g1. -#g1 #g2 #g #Hg #f #H elim (pn_split g1) * #f1 #H1 -[ elim (coafter_inv_pxp … Hg … H1 H) -g - /3 width=5 by or_introl, ex3_2_intro/ -| /4 width=5 by coafter_inv_nxp, or_intror, ex2_intro/ -] -qed-. - -lemma coafter_inv_pxx: ∀g1,g2,g. g1 ~⊚ g2 ≘ g → ∀f1. ⫯f1 = g1 → - (∃∃f2,f. f1 ~⊚ f2 ≘ f & ⫯f2 = g2 & ⫯f = g) ∨ - (∃∃f2,f. f1 ~⊚ f2 ≘ f & ↑f2 = g2 & ↑f = g). -#g1 #g2 #g #Hg #f1 #H1 elim (pn_split g2) * #f2 #H2 -[ elim (coafter_inv_ppx … Hg … H1 H2) -g1 - /3 width=5 by or_introl, ex3_2_intro/ -| elim (coafter_inv_pnx … Hg … H1 H2) -g1 - /3 width=5 by or_intror, ex3_2_intro/ -] -qed-. - -(* Basic properties *********************************************************) - -corec lemma coafter_eq_repl_back2: ∀f1,f. eq_repl_back (λf2. f2 ~⊚ f1 ≘ f). -#f1 #f #f2 * -f2 -f1 -f -#f21 #f1 #f #g21 [1,2: #g1 ] #g #Hf #H21 [1,2: #H1 ] #H #g22 #H0 -[ cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by coafter_refl/ -| cases (eq_inv_px … H0 … H21) -g21 /3 width=7 by coafter_push/ -| cases (eq_inv_nx … H0 … H21) -g21 /3 width=5 by coafter_next/ -] -qed-. - -lemma coafter_eq_repl_fwd2: ∀f1,f. eq_repl_fwd (λf2. f2 ~⊚ f1 ≘ f). -#f1 #f @eq_repl_sym /2 width=3 by coafter_eq_repl_back2/ -qed-. - -corec lemma coafter_eq_repl_back1: ∀f2,f. eq_repl_back (λf1. f2 ~⊚ f1 ≘ f). -#f2 #f #f1 * -f2 -f1 -f -#f2 #f11 #f #g2 [1,2: #g11 ] #g #Hf #H2 [1,2: #H11 ] #H #g2 #H0 -[ cases (eq_inv_px … H0 … H11) -g11 /3 width=7 by coafter_refl/ -| cases (eq_inv_nx … H0 … H11) -g11 /3 width=7 by coafter_push/ -| @(coafter_next … H2 H) /2 width=5 by/ -] -qed-. - -lemma coafter_eq_repl_fwd1: ∀f2,f. eq_repl_fwd (λf1. f2 ~⊚ f1 ≘ f). -#f2 #f @eq_repl_sym /2 width=3 by coafter_eq_repl_back1/ -qed-. - -corec lemma coafter_eq_repl_back0: ∀f1,f2. eq_repl_back (λf. f2 ~⊚ f1 ≘ f). -#f2 #f1 #f * -f2 -f1 -f -#f2 #f1 #f01 #g2 [1,2: #g1 ] #g01 #Hf01 #H2 [1,2: #H1 ] #H01 #g02 #H0 -[ cases (eq_inv_px … H0 … H01) -g01 /3 width=7 by coafter_refl/ -| cases (eq_inv_nx … H0 … H01) -g01 /3 width=7 by coafter_push/ -| cases (eq_inv_px … H0 … H01) -g01 /3 width=5 by coafter_next/ -] -qed-. - -lemma coafter_eq_repl_fwd0: ∀f2,f1. eq_repl_fwd (λf. f2 ~⊚ f1 ≘ f). -#f2 #f1 @eq_repl_sym /2 width=3 by coafter_eq_repl_back0/ -qed-. - -(* Main inversion lemmas ****************************************************) - -corec theorem coafter_mono: ∀f1,f2,x,y. f1 ~⊚ f2 ≘ x → f1 ~⊚ f2 ≘ y → x ≡ y. -#f1 #f2 #x #y * -f1 -f2 -x -#f1 #f2 #x #g1 [1,2: #g2 ] #g #Hx #H1 [1,2: #H2 ] #H0x #Hy -[ cases (coafter_inv_ppx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_push/ -| cases (coafter_inv_pnx … Hy … H1 H2) -g1 -g2 /3 width=8 by eq_next/ -| cases (coafter_inv_nxx … Hy … H1) -g1 /3 width=8 by eq_push/ -] -qed-. - -lemma coafter_mono_eq: ∀f1,f2,f. f1 ~⊚ f2 ≘ f → ∀g1,g2,g. g1 ~⊚ g2 ≘ g → - f1 ≡ g1 → f2 ≡ g2 → f ≡ g. -/4 width=4 by coafter_mono, coafter_eq_repl_back1, coafter_eq_repl_back2/ qed-. - -(* Forward lemmas with pushs ************************************************) - -lemma coafter_fwd_pushs: ∀j,i,g2,f1,g. g2 ~⊚ ⫯*[i]f1 ≘ g → @❪i, g2❫ ≘ j → - ∃f. ⫯*[j] f = g. -#j elim j -j -[ #i #g2 #f1 #g #Hg #H - elim (at_inv_xxp … H) -H [|*: // ] #f2 #H1 #H2 destruct - /2 width=2 by ex_intro/ -| #j #IH * [| #i ] #g2 #f1 #g #Hg #H - [ elim (at_inv_pxn … H) -H [|*: // ] #f2 #Hij #H destruct - elim (coafter_inv_nxx … Hg) -Hg [|*: // ] #f #Hf #H destruct - elim (IH … Hf Hij) -f1 -f2 -IH /2 width=2 by ex_intro/ - | elim (at_inv_nxn … H) -H [1,4: * |*: // ] #f2 #Hij #H destruct - [ elim (coafter_inv_ppx … Hg) -Hg [|*: // ] #f #Hf #H destruct - elim (IH … Hf Hij) -f1 -f2 -i /2 width=2 by ex_intro/ - | elim (coafter_inv_nxx … Hg) -Hg [|*: // ] #f #Hf #H destruct - elim (IH … Hf Hij) -f1 -f2 -i /2 width=2 by ex_intro/ - ] - ] -] -qed-. - -(* Inversion lemmas with tail ***********************************************) - -lemma coafter_inv_tl1: ∀g2,g1,g. g2 ~⊚ ⫱g1 ≘ g → - ∃∃f. ⫯g2 ~⊚ g1 ≘ f & ⫱f = g. -#g2 #g1 #g elim (pn_split g1) * #f1 #H1 #H destruct -[ /3 width=7 by coafter_refl, ex2_intro/ -| @(ex2_intro … (↑g)) /2 width=7 by coafter_push/ (**) (* full auto fails *) -] -qed-. - -lemma coafter_inv_tl0: ∀g2,g1,g. g2 ~⊚ g1 ≘ ⫱g → - ∃∃f1. ⫯g2 ~⊚ f1 ≘ g & ⫱f1 = g1. -#g2 #g1 #g elim (pn_split g) * #f #H0 #H destruct -[ /3 width=7 by coafter_refl, ex2_intro/ -| @(ex2_intro … (↑g1)) /2 width=7 by coafter_push/ (**) (* full auto fails *) -] -qed-. - -(* Properties with iterated tail ********************************************) - -lemma coafter_tls: ∀j,i,f1,f2,f. @❪i, f1❫ ≘ j → - f1 ~⊚ f2 ≘ f → ⫱*[j]f1 ~⊚ ⫱*[i]f2 ≘ ⫱*[j]f. -#j elim j -j [ #i | #j #IH * [| #i ] ] #f1 #f2 #f #Hf1 #Hf -[ elim (at_inv_xxp … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 destruct // -| elim (at_inv_pxn … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 - elim (coafter_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct - lapply (IH … Hg1 Hg) -IH -Hg1 -Hg // -| elim (at_inv_nxn … Hf1) -Hf1 [1,4: * |*: // ] #g1 #Hg1 #H1 - [ elim (coafter_inv_pxx … Hf … H1) -Hf * #g2 #g #Hg #H2 #H0 destruct - lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H // - | elim (coafter_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct - lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H // - ] -] -qed. - -lemma coafter_tls_O: ∀n,f1,f2,f. @❪0, f1❫ ≘ n → - f1 ~⊚ f2 ≘ f → ⫱*[n]f1 ~⊚ f2 ≘ ⫱*[n]f. -/2 width=1 by coafter_tls/ qed. - -lemma coafter_tls_succ: ∀g2,g1,g. g2 ~⊚ g1 ≘ g → - ∀n. @❪0, g2❫ ≘ n → ⫱*[↑n]g2 ~⊚ ⫱g1 ≘ ⫱*[↑n]g. -#g2 #g1 #g #Hg #n #Hg2 -lapply (coafter_tls … Hg2 … Hg) -Hg #Hg -lapply (at_pxx_tls … Hg2) -Hg2 #H -elim (at_inv_pxp … H) -H [ |*: // ] #f2 #H2 -elim (coafter_inv_pxx … Hg … H2) -Hg * #f1 #f #Hf #H1 #H0 destruct -(injective_next … H) -H // -qed-. - -lemma isdiv_inv_push: ∀g. 𝛀❪g❫ → ∀f. ⫯f = g → ⊥. -#g #H elim (isdiv_inv_gen … H) -H -#f #Hf * -g #g #H elim (discr_push_next … H) -qed-. - -(* Main inversion lemmas ****************************************************) - -corec theorem isdiv_inv_eq_repl: ∀f1,f2. 𝛀❪f1❫ → 𝛀❪f2❫ → f1 ≡ f2. -#f1 #f2 #H1 #H2 -cases (isdiv_inv_gen … H1) -H1 -cases (isdiv_inv_gen … H2) -H2 -/3 width=5 by eq_next/ -qed-. - -(* Basic properties *********************************************************) - -corec lemma isdiv_eq_repl_back: eq_repl_back … isdiv. -#f1 #H cases (isdiv_inv_gen … H) -H -#g1 #Hg1 #H1 #f2 #Hf cases (eq_inv_nx … Hf … H1) -f1 -/3 width=3 by isdiv_next/ -qed-. - -lemma isdiv_eq_repl_fwd: eq_repl_fwd … isdiv. -/3 width=3 by isdiv_eq_repl_back, eq_repl_sym/ qed-. - -(* Alternative definition ***************************************************) - -corec lemma eq_next_isdiv: ∀f. ↑f ≡ f → 𝛀❪f❫. -#f #H cases (eq_inv_nx … H) -H /4 width=3 by isdiv_next, eq_trans/ -qed. - -corec lemma eq_next_inv_isdiv: ∀f. 𝛀❪f❫ → ↑f ≡ f. -#f * -f -#f #g #Hf #Hg @(eq_next … Hg) [2: @eq_next_inv_isdiv // | skip ] -@eq_f // -qed-. - -(* Properties with iterated next ********************************************) - -lemma isdiv_nexts: ∀n,f. 𝛀❪f❫ → 𝛀❪↑*[n]f❫. -#n elim n -n /3 width=3 by isdiv_next/ -qed. - -(* Inversion lemmas with iterated next **************************************) - -lemma isdiv_inv_nexts: ∀n,g. 𝛀❪↑*[n]g❫ → 𝛀❪g❫. -#n elim n -n /3 width=3 by isdiv_inv_next/ -qed. - -(* Properties with tail *****************************************************) - -lemma isdiv_tl: ∀f. 𝛀❪f❫ → 𝛀❪⫱f❫. -#f cases (pn_split f) * #g * -f #H -[ elim (isdiv_inv_push … H) -H // -| /2 width=3 by isdiv_inv_next/ -] -qed. - -(* Properties with iterated tail ********************************************) - -lemma isdiv_tls: ∀n,g. 𝛀❪g❫ → 𝛀❪⫱*[n]g❫. -#n elim n -n /3 width=1 by isdiv_tl/ -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isfin.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isfin.ma deleted file mode 100644 index 3a9d2656c..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isfin.ma +++ /dev/null @@ -1,96 +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/notation/relations/isfinite_1.ma". -include "ground_2/relocation/rtmap_fcla.ma". - -(* RELOCATION MAP ***********************************************************) - -definition isfin: predicate rtmap ≝ - λf. ∃n. 𝐂❪f❫ ≘ n. - -interpretation "test for finite colength (rtmap)" - 'IsFinite f = (isfin f). - -(* Basic eliminators ********************************************************) - -lemma isfin_ind (R:predicate rtmap): (∀f. 𝐈❪f❫ → R f) → - (∀f. 𝐅❪f❫ → R f → R (⫯f)) → - (∀f. 𝐅❪f❫ → R f → R (↑f)) → - ∀f. 𝐅❪f❫ → R f. -#R #IH1 #IH2 #IH3 #f #H elim H -H -#n #H elim H -f -n /3 width=2 by ex_intro/ -qed-. - -(* Basic inversion lemmas ***************************************************) - -lemma isfin_inv_push: ∀g. 𝐅❪g❫ → ∀f. ⫯f = g → 𝐅❪f❫. -#g * /3 width=4 by fcla_inv_px, ex_intro/ -qed-. - -lemma isfin_inv_next: ∀g. 𝐅❪g❫ → ∀f. ↑f = g → 𝐅❪f❫. -#g * #n #H #f #H0 elim (fcla_inv_nx … H … H0) -g -/2 width=2 by ex_intro/ -qed-. - -(* Basic properties *********************************************************) - -lemma isfin_eq_repl_back: eq_repl_back … isfin. -#f1 * /3 width=4 by fcla_eq_repl_back, ex_intro/ -qed-. - -lemma isfin_eq_repl_fwd: eq_repl_fwd … isfin. -/3 width=3 by isfin_eq_repl_back, eq_repl_sym/ qed-. - -lemma isfin_isid: ∀f. 𝐈❪f❫ → 𝐅❪f❫. -/3 width=2 by fcla_isid, ex_intro/ qed. - -lemma isfin_push: ∀f. 𝐅❪f❫ → 𝐅❪⫯f❫. -#f * /3 width=2 by fcla_push, ex_intro/ -qed. - -lemma isfin_next: ∀f. 𝐅❪f❫ → 𝐅❪↑f❫. -#f * /3 width=2 by fcla_next, ex_intro/ -qed. - -(* Properties with iterated push ********************************************) - -lemma isfin_pushs: ∀n,f. 𝐅❪f❫ → 𝐅❪⫯*[n]f❫. -#n elim n -n /3 width=3 by isfin_push/ -qed. - -(* Inversion lemmas with iterated push **************************************) - -lemma isfin_inv_pushs: ∀n,g. 𝐅❪⫯*[n]g❫ → 𝐅❪g❫. -#n elim n -n /3 width=3 by isfin_inv_push/ -qed. - -(* Properties with tail *****************************************************) - -lemma isfin_tl: ∀f. 𝐅❪f❫ → 𝐅❪⫱f❫. -#f elim (pn_split f) * #g #H #Hf destruct -/3 width=3 by isfin_inv_push, isfin_inv_next/ -qed. - -(* Inversion lemmas with tail ***********************************************) - -lemma isfin_inv_tl: ∀f. 𝐅❪⫱f❫ → 𝐅❪f❫. -#f elim (pn_split f) * /2 width=1 by isfin_next, isfin_push/ -qed-. - -(* Inversion lemmas with iterated tail **************************************) - -lemma isfin_inv_tls: ∀n,f. 𝐅❪⫱*[n]f❫ → 𝐅❪f❫. -#n elim n -n /3 width=1 by isfin_inv_tl/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isid.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isid.ma deleted file mode 100644 index 7fea33f00..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isid.ma +++ /dev/null @@ -1,103 +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/notation/relations/isidentity_1.ma". -include "ground_2/relocation/rtmap_tls.ma". - -(* RELOCATION MAP ***********************************************************) - -coinductive isid: predicate rtmap ≝ -| isid_push: ∀f,g. isid f → ⫯f = g → isid g -. - -interpretation "test for identity (rtmap)" - 'IsIdentity f = (isid f). - -(* Basic inversion lemmas ***************************************************) - -lemma isid_inv_gen: ∀g. 𝐈❪g❫ → ∃∃f. 𝐈❪f❫ & ⫯f = g. -#g * -g -#f #g #Hf * /2 width=3 by ex2_intro/ -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma isid_inv_push: ∀g. 𝐈❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫. -#g #H elim (isid_inv_gen … H) -H -#f #Hf * -g #g #H >(injective_push … H) -H // -qed-. - -lemma isid_inv_next: ∀g. 𝐈❪g❫ → ∀f. ↑f = g → ⊥. -#g #H elim (isid_inv_gen … H) -H -#f #Hf * -g #g #H elim (discr_next_push … H) -qed-. - -(* Main inversion lemmas ****************************************************) - -corec theorem isid_inv_eq_repl: ∀f1,f2. 𝐈❪f1❫ → 𝐈❪f2❫ → f1 ≡ f2. -#f1 #f2 #H1 #H2 -cases (isid_inv_gen … H1) -H1 -cases (isid_inv_gen … H2) -H2 -/3 width=5 by eq_push/ -qed-. - -(* Basic properties *********************************************************) - -corec lemma isid_eq_repl_back: eq_repl_back … isid. -#f1 #H cases (isid_inv_gen … H) -H -#g1 #Hg1 #H1 #f2 #Hf cases (eq_inv_px … Hf … H1) -f1 -/3 width=3 by isid_push/ -qed-. - -lemma isid_eq_repl_fwd: eq_repl_fwd … isid. -/3 width=3 by isid_eq_repl_back, eq_repl_sym/ qed-. - -(* Alternative definition ***************************************************) - -corec lemma eq_push_isid: ∀f. ⫯f ≡ f → 𝐈❪f❫. -#f #H cases (eq_inv_px … H) -H /4 width=3 by isid_push, eq_trans/ -qed. - -corec lemma eq_push_inv_isid: ∀f. 𝐈❪f❫ → ⫯f ≡ f. -#f * -f -#f #g #Hf #Hg @(eq_push … Hg) [2: @eq_push_inv_isid // | skip ] -@eq_f // -qed-. - -(* Properties with iterated push ********************************************) - -lemma isid_pushs: ∀n,f. 𝐈❪f❫ → 𝐈❪⫯*[n]f❫. -#n elim n -n /3 width=3 by isid_push/ -qed. - -(* Inversion lemmas with iterated push **************************************) - -lemma isid_inv_pushs: ∀n,g. 𝐈❪⫯*[n]g❫ → 𝐈❪g❫. -#n elim n -n /3 width=3 by isid_inv_push/ -qed. - -(* Properties with tail *****************************************************) - -lemma isid_tl: ∀f. 𝐈❪f❫ → 𝐈❪⫱f❫. -#f cases (pn_split f) * #g * -f #H -[ /2 width=3 by isid_inv_push/ -| elim (isid_inv_next … H) -H // -] -qed. - -(* Properties with iterated tail ********************************************) - -lemma isid_tls: ∀n,g. 𝐈❪g❫ → 𝐈❪⫱*[n]g❫. -#n elim n -n /3 width=1 by isid_tl/ -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma deleted file mode 100644 index c947583a3..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_istot.ma +++ /dev/null @@ -1,103 +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/notation/relations/istotal_1.ma". -include "ground_2/relocation/rtmap_at.ma". - -(* RELOCATION MAP ***********************************************************) - -definition istot: predicate rtmap ≝ λf. ∀i. ∃j. @❪i,f❫ ≘ j. - -interpretation "test for totality (rtmap)" - 'IsTotal f = (istot f). - -(* Basic inversion lemmas ***************************************************) - -lemma istot_inv_push: ∀g. 𝐓❪g❫ → ∀f. ⫯f = g → 𝐓❪f❫. -#g #Hg #f #H #i elim (Hg (↑i)) -Hg -#j #Hg elim (at_inv_npx … Hg … H) -Hg -H /2 width=3 by ex_intro/ -qed-. - -lemma istot_inv_next: ∀g. 𝐓❪g❫ → ∀f. ↑f = g → 𝐓❪f❫. -#g #Hg #f #H #i elim (Hg i) -Hg -#j #Hg elim (at_inv_xnx … Hg … H) -Hg -H /2 width=2 by ex_intro/ -qed-. - -(* Properties on tl *********************************************************) - -lemma istot_tl: ∀f. 𝐓❪f❫ → 𝐓❪⫱f❫. -#f cases (pn_split f) * -#g * -f /2 width=3 by istot_inv_next, istot_inv_push/ -qed. - -(* Properties on tls ********************************************************) - -lemma istot_tls: ∀n,f. 𝐓❪f❫ → 𝐓❪⫱*[n]f❫. -#n elim n -n /3 width=1 by istot_tl/ -qed. - -(* Main forward lemmas on at ************************************************) - -corec theorem at_ext: ∀f1,f2. 𝐓❪f1❫ → 𝐓❪f2❫ → - (∀i,i1,i2. @❪i,f1❫ ≘ i1 → @❪i,f2❫ ≘ i2 → i1 = i2) → - f1 ≡ f2. -#f1 cases (pn_split f1) * #g1 #H1 -#f2 cases (pn_split f2) * #g2 #H2 -#Hf1 #Hf2 #Hi -[ @(eq_push … H1 H2) @at_ext -at_ext /2 width=3 by istot_inv_push/ -Hf1 -Hf2 - #i #i1 #i2 #Hg1 #Hg2 lapply (Hi (↑i) (↑i1) (↑i2) ??) /2 width=7 by at_push/ -| cases (Hf2 0) -Hf1 -Hf2 -at_ext - #j2 #Hf2 cases (at_increasing_strict … Hf2 … H2) -H2 - lapply (Hi 0 0 j2 … Hf2) /2 width=2 by at_refl/ -Hi -Hf2 -H1 - #H2 #H cases (lt_le_false … H) -H // -| cases (Hf1 0) -Hf1 -Hf2 -at_ext - #j1 #Hf1 cases (at_increasing_strict … Hf1 … H1) -H1 - lapply (Hi 0 j1 0 Hf1 ?) /2 width=2 by at_refl/ -Hi -Hf1 -H2 - #H1 #H cases (lt_le_false … H) -H // -| @(eq_next … H1 H2) @at_ext -at_ext /2 width=3 by istot_inv_next/ -Hf1 -Hf2 - #i #i1 #i2 #Hg1 #Hg2 lapply (Hi i (↑i1) (↑i2) ??) /2 width=5 by at_next/ -] -qed-. - -(* Advanced properties on at ************************************************) - -lemma at_dec: ∀f,i1,i2. 𝐓❪f❫ → Decidable (@❪i1,f❫ ≘ i2). -#f #i1 #i2 #Hf lapply (Hf i1) -Hf * -#j2 #Hf elim (eq_nat_dec i2 j2) -[ #H destruct /2 width=1 by or_introl/ -| /4 width=6 by at_mono, or_intror/ -] -qed-. - -lemma is_at_dec_le: ∀f,i2,i. 𝐓❪f❫ → (∀i1. i1 + i ≤ i2 → @❪i1,f❫ ≘ i2 → ⊥) → - Decidable (∃i1. @❪i1,f❫ ≘ i2). -#f #i2 #i #Hf elim i -i -[ #Ht @or_intror * /3 width=3 by at_increasing/ -| #i #IH #Ht elim (at_dec f (i2-i) i2) /3 width=2 by ex_intro, or_introl/ - #Hi2 @IH -IH #i1 #H #Hi elim (le_to_or_lt_eq … H) -H /2 width=3 by/ - #H destruct -Ht /2 width=1 by/ -] -qed-. - -lemma is_at_dec: ∀f,i2. 𝐓❪f❫ → Decidable (∃i1. @❪i1,f❫ ≘ i2). -#f #i2 #Hf @(is_at_dec_le ?? (↑i2)) /2 width=4 by lt_le_false/ -qed-. - -(* Advanced properties on isid **********************************************) - -lemma isid_at_total: ∀f. 𝐓❪f❫ → (∀i1,i2. @❪i1,f❫ ≘ i2 → i1 = i2) → 𝐈❪f❫. -#f #H1f #H2f @isid_at -#i lapply (H1f i) -H1f * -#j #Hf >(H2f … Hf) in ⊢ (???%); -H2f // -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isuni.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isuni.ma deleted file mode 100644 index b88288a82..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_isuni.ma +++ /dev/null @@ -1,56 +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/notation/relations/isuniform_1.ma". -include "ground_2/relocation/rtmap_isfin.ma". - -(* RELOCATION MAP ***********************************************************) - -inductive isuni: predicate rtmap ≝ -| isuni_isid: ∀f. 𝐈❪f❫ → isuni f -| isuni_next: ∀f. isuni f → ∀g. ↑f = g → isuni g -. - -interpretation "test for uniformity (rtmap)" - 'IsUniform f = (isuni f). - -(* Basic inversion lemmas ***************************************************) - -lemma isuni_inv_push: ∀g. 𝐔❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫. -#g * -g /2 width=3 by isid_inv_push/ -#f #_ #g #H #x #Hx destruct elim (discr_push_next … Hx) -qed-. - -lemma isuni_inv_next: ∀g. 𝐔❪g❫ → ∀f. ↑f = g → 𝐔❪f❫. -#g * -g #f #Hf -[ #x #Hx elim (isid_inv_next … Hf … Hx) -| #g #H #x #Hx destruct /2 width=1 by injective_push/ -] -qed-. - -lemma isuni_split: ∀g. 𝐔❪g❫ → (∃∃f. 𝐈❪f❫ & ⫯f = g) ∨ (∃∃f.𝐔❪f❫ & ↑f = g). -#g #H elim (pn_split g) * #f #Hf -/4 width=3 by isuni_inv_next, isuni_inv_push, or_introl, or_intror, ex2_intro/ -qed-. - -(* basic forward lemmas *****************************************************) - -lemma isuni_fwd_push: ∀g. 𝐔❪g❫ → ∀f. ⫯f = g → 𝐔❪f❫. -/3 width=3 by isuni_inv_push, isuni_isid/ qed-. - -(* Forward lemmas with test for finite colength *****************************) - -lemma isuni_fwd_isfin: ∀f. 𝐔❪f❫ → 𝐅❪f❫. -#f #H elim H -f /3 width=1 by isfin_next, isfin_isid/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_nexts.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_nexts.ma deleted file mode 100644 index 2de10f889..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_nexts.ma +++ /dev/null @@ -1,59 +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/notation/functions/uparrowstar_2.ma". -include "ground_2/relocation/rtmap_eq.ma". - -(* RELOCATION MAP ***********************************************************) - -rec definition nexts (f:rtmap) (n:nat) on n: rtmap ≝ match n with -[ O ⇒ f | S m ⇒ ↑(nexts f m) ]. - -interpretation "nexts (rtmap)" 'UpArrowStar n f = (nexts f n). - -(* Basic_inversion lemmas *****************************************************) - -lemma eq_inv_nexts_sn: ∀n,f1,g2. ↑*[n] f1 ≡ g2 → - ∃∃f2. f1 ≡ f2 & ↑*[n] f2 = g2. -#n elim n -n /2 width=3 by ex2_intro/ -#n #IH #f1 #g2 #H elim (eq_inv_nx … H) -H [|*: // ] -#f0 #Hf10 #H1 elim (IH … Hf10) -IH -Hf10 #f2 #Hf12 #H2 destruct -/2 width=3 by ex2_intro/ -qed-. - -lemma eq_inv_nexts_dx: ∀n,f2,g1. g1 ≡ ↑*[n] f2 → - ∃∃f1. f1 ≡ f2 & ↑*[n] f1 = g1. -#n elim n -n /2 width=3 by ex2_intro/ -#n #IH #f2 #g1 #H elim (eq_inv_xn … H) -H [|*: // ] -#f0 #Hf02 #H1 elim (IH … Hf02) -IH -Hf02 #f1 #Hf12 #H2 destruct -/2 width=3 by ex2_intro/ -qed-. - -(* Basic properties *********************************************************) - -lemma nexts_O: ∀f. f = ↑*[0] f. -// qed. - -lemma nexts_S: ∀f,n. ↑↑*[n] f = ↑*[↑n] f. -// qed. - -lemma nexts_eq_repl: ∀n. eq_repl (λf1,f2. ↑*[n] f1 ≡ ↑*[n] f2). -#n elim n -n /3 width=5 by eq_next/ -qed. - -(* Advanced properties ******************************************************) - -lemma nexts_xn: ∀n,f. ↑*[n] ↑f = ↑*[↑n] f. -#n elim n -n // -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_pushs.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_pushs.ma deleted file mode 100644 index dd88b8c35..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_pushs.ma +++ /dev/null @@ -1,59 +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/notation/functions/upspoonstar_2.ma". -include "ground_2/relocation/rtmap_eq.ma". - -(* RELOCATION MAP ***********************************************************) - -rec definition pushs (f:rtmap) (n:nat) on n: rtmap ≝ match n with -[ O ⇒ f | S m ⇒ ⫯(pushs f m) ]. - -interpretation "pushs (rtmap)" 'UpSpoonStar n f = (pushs f n). - -(* Basic_inversion lemmas *****************************************************) - -lemma eq_inv_pushs_sn: ∀n,f1,g2. ⫯*[n] f1 ≡ g2 → - ∃∃f2. f1 ≡ f2 & ⫯*[n] f2 = g2. -#n elim n -n /2 width=3 by ex2_intro/ -#n #IH #f1 #g2 #H elim (eq_inv_px … H) -H [|*: // ] -#f0 #Hf10 #H1 elim (IH … Hf10) -IH -Hf10 #f2 #Hf12 #H2 destruct -/2 width=3 by ex2_intro/ -qed-. - -lemma eq_inv_pushs_dx: ∀n,f2,g1. g1 ≡ ⫯*[n] f2 → - ∃∃f1. f1 ≡ f2 & ⫯*[n] f1 = g1. -#n elim n -n /2 width=3 by ex2_intro/ -#n #IH #f2 #g1 #H elim (eq_inv_xp … H) -H [|*: // ] -#f0 #Hf02 #H1 elim (IH … Hf02) -IH -Hf02 #f1 #Hf12 #H2 destruct -/2 width=3 by ex2_intro/ -qed-. - -(* Basic properties *********************************************************) - -lemma pushs_O: ∀f. f = ⫯*[0] f. -// qed. - -lemma pushs_S: ∀f,n. ⫯⫯*[n] f = ⫯*[↑n] f. -// qed. - -lemma pushs_eq_repl: ∀n. eq_repl (λf1,f2. ⫯*[n] f1 ≡ ⫯*[n] f2). -#n elim n -n /3 width=5 by eq_push/ -qed. - -(* Advanced properties ******************************************************) - -lemma pushs_xn: ∀n,f. ⫯*[n] ⫯f = ⫯*[↑n] f. -#n elim n -n // -qed. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sand.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sand.ma deleted file mode 100644 index 2a2058c59..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sand.ma +++ /dev/null @@ -1,118 +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/notation/relations/rintersection_3.ma". -include "ground_2/relocation/rtmap_sle.ma". - -coinductive sand: relation3 rtmap rtmap rtmap ≝ -| sand_pp: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → sand g1 g2 g -| sand_np: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ⫯f = g → sand g1 g2 g -| sand_pn: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → sand g1 g2 g -| sand_nn: ∀f1,f2,f,g1,g2,g. sand f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → sand g1 g2 g -. - -interpretation "intersection (rtmap)" - 'RIntersection f1 f2 f = (sand f1 f2 f). - -(* Basic inversion lemmas ***************************************************) - -lemma sand_inv_ppx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → - ∃∃f. f1 ⋒ f2 ≘ f & ⫯f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -lemma sand_inv_npx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → - ∃∃f. f1 ⋒ f2 ≘ f & ⫯f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -lemma sand_inv_pnx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ⋒ f2 ≘ f & ⫯f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -lemma sand_inv_nnx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ⋒ f2 ≘ f & ↑f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -(* Basic properties *********************************************************) - -corec lemma sand_eq_repl_back1: ∀f2,f. eq_repl_back … (λf1. f1 ⋒ f2 ≘ f). -#f2 #f #f1 * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x #Hx -try cases (eq_inv_px … Hx … H1) try cases (eq_inv_nx … Hx … H1) -g1 -/3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ -qed-. - -lemma sand_eq_repl_fwd1: ∀f2,f. eq_repl_fwd … (λf1. f1 ⋒ f2 ≘ f). -#f2 #f @eq_repl_sym /2 width=3 by sand_eq_repl_back1/ -qed-. - -corec lemma sand_eq_repl_back2: ∀f1,f. eq_repl_back … (λf2. f1 ⋒ f2 ≘ f). -#f1 #f #f2 * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx -try cases (eq_inv_px … Hx … H2) try cases (eq_inv_nx … Hx … H2) -g2 -/3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ -qed-. - -lemma sand_eq_repl_fwd2: ∀f1,f. eq_repl_fwd … (λf2. f1 ⋒ f2 ≘ f). -#f1 #f @eq_repl_sym /2 width=3 by sand_eq_repl_back2/ -qed-. - -corec lemma sand_eq_repl_back3: ∀f1,f2. eq_repl_back … (λf. f1 ⋒ f2 ≘ f). -#f1 #f2 #f * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx -try cases (eq_inv_px … Hx … H0) try cases (eq_inv_nx … Hx … H0) -g -/3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ -qed-. - -lemma sand_eq_repl_fwd3: ∀f1,f2. eq_repl_fwd … (λf. f1 ⋒ f2 ≘ f). -#f1 #f2 @eq_repl_sym /2 width=3 by sand_eq_repl_back3/ -qed-. - -corec lemma sand_refl: ∀f. f ⋒ f ≘ f. -#f cases (pn_split f) * #g #H -[ @(sand_pp … H H H) | @(sand_nn … H H H) ] -H // -qed. - -corec lemma sand_sym: ∀f1,f2,f. f1 ⋒ f2 ≘ f → f2 ⋒ f1 ≘ f. -#f1 #f2 #f * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf * * * -g1 -g2 -g -[ @sand_pp | @sand_pn | @sand_np | @sand_nn ] /2 width=7 by/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sdj.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sdj.ma deleted file mode 100644 index 330ad6e98..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sdj.ma +++ /dev/null @@ -1,146 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.tcs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "ground_2/notation/relations/parallel_2.ma". -include "ground_2/relocation/rtmap_isid.ma". - -(* RELOCATION MAP ***********************************************************) - -coinductive sdj: relation rtmap ≝ -| sdj_pp: ∀f1,f2,g1,g2. sdj f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → sdj g1 g2 -| sdj_np: ∀f1,f2,g1,g2. sdj f1 f2 → ↑f1 = g1 → ⫯f2 = g2 → sdj g1 g2 -| sdj_pn: ∀f1,f2,g1,g2. sdj f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → sdj g1 g2 -. - -interpretation "disjointness (rtmap)" - 'Parallel f1 f2 = (sdj f1 f2). - -(* Basic properties *********************************************************) - -axiom sdj_eq_repl_back1: ∀f2. eq_repl_back … (λf1. f1 ∥ f2). - -lemma sdj_eq_repl_fwd1: ∀f2. eq_repl_fwd … (λf1. f1 ∥ f2). -#f2 @eq_repl_sym /2 width=3 by sdj_eq_repl_back1/ -qed-. - -axiom sdj_eq_repl_back2: ∀f1. eq_repl_back … (λf2. f1 ∥ f2). - -lemma sdj_eq_repl_fwd2: ∀f1. eq_repl_fwd … (λf2. f1 ∥ f2). -#f1 @eq_repl_sym /2 width=3 by sdj_eq_repl_back2/ -qed-. - -corec lemma sdj_sym: symmetric … sdj. -#f1 #f2 * -f1 -f2 -#f1 #f2 #g1 #g2 #Hf #H1 #H2 -[ @(sdj_pp … H2 H1) | @(sdj_pn … H2 H1) | @(sdj_np … H2 H1) ] -g2 -g1 -/2 width=1 by/ -qed-. - -(* Basic inversion lemmas ***************************************************) - -lemma sdj_inv_pp: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ∥ f2. -#g1 #g2 * -g1 -g2 -#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct -[ lapply (injective_push … Hx1) -Hx1 - lapply (injective_push … Hx2) -Hx2 // -| elim (discr_push_next … Hx1) -| elim (discr_push_next … Hx2) -] -qed-. - -lemma sdj_inv_np: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → f1 ∥ f2. -#g1 #g2 * -g1 -g2 -#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct -[ elim (discr_next_push … Hx1) -| lapply (injective_next … Hx1) -Hx1 - lapply (injective_push … Hx2) -Hx2 // -| elim (discr_push_next … Hx2) -] -qed-. - -lemma sdj_inv_pn: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → f1 ∥ f2. -#g1 #g2 * -g1 -g2 -#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct -[ elim (discr_next_push … Hx2) -| elim (discr_push_next … Hx1) -| lapply (injective_push … Hx1) -Hx1 - lapply (injective_next … Hx2) -Hx2 // -] -qed-. - -lemma sdj_inv_nn: ∀g1,g2. g1 ∥ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → ⊥. -#g1 #g2 * -g1 -g2 -#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct -[ elim (discr_next_push … Hx1) -| elim (discr_next_push … Hx2) -| elim (discr_next_push … Hx1) -] -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma sdj_inv_nx: ∀g1,g2. g1 ∥ g2 → ∀f1. ↑f1 = g1 → - ∃∃f2. f1 ∥ f2 & ⫯f2 = g2. -#g1 #g2 elim (pn_split g2) * #f2 #H2 #H #f1 #H1 -[ lapply (sdj_inv_np … H … H1 H2) -H /2 width=3 by ex2_intro/ -| elim (sdj_inv_nn … H … H1 H2) -] -qed-. - -lemma sdj_inv_xn: ∀g1,g2. g1 ∥ g2 → ∀f2. ↑f2 = g2 → - ∃∃f1. f1 ∥ f2 & ⫯f1 = g1. -#g1 #g2 elim (pn_split g1) * #f1 #H1 #H #f2 #H2 -[ lapply (sdj_inv_pn … H … H1 H2) -H /2 width=3 by ex2_intro/ -| elim (sdj_inv_nn … H … H1 H2) -] -qed-. - -lemma sdj_inv_xp: ∀g1,g2. g1 ∥ g2 → ∀f2. ⫯f2 = g2 → - ∨∨ ∃∃f1. f1 ∥ f2 & ⫯f1 = g1 - | ∃∃f1. f1 ∥ f2 & ↑f1 = g1. -#g1 #g2 elim (pn_split g1) * #f1 #H1 #H #f2 #H2 -[ lapply (sdj_inv_pp … H … H1 H2) | lapply (sdj_inv_np … H … H1 H2) ] -H -H2 -/3 width=3 by ex2_intro, or_introl, or_intror/ -qed-. - -lemma sdj_inv_px: ∀g1,g2. g1 ∥ g2 → ∀f1. ⫯f1 = g1 → - ∨∨ ∃∃f2. f1 ∥ f2 & ⫯f2 = g2 - | ∃∃f2. f1 ∥ f2 & ↑f2 = g2. -#g1 #g2 elim (pn_split g2) * #f2 #H2 #H #f1 #H1 -[ lapply (sdj_inv_pp … H … H1 H2) | lapply (sdj_inv_pn … H … H1 H2) ] -H -H1 -/3 width=3 by ex2_intro, or_introl, or_intror/ -qed-. - -(* Properties with isid *****************************************************) - -corec lemma sdj_isid_dx: ∀f2. 𝐈❪f2❫ → ∀f1. f1 ∥ f2. -#f2 * -f2 -#f2 #g2 #Hf2 #H2 #f1 cases (pn_split f1) * -/3 width=5 by sdj_np, sdj_pp/ -qed. - -corec lemma sdj_isid_sn: ∀f1. 𝐈❪f1❫ → ∀f2. f1 ∥ f2. -#f1 * -f1 -#f1 #g1 #Hf1 #H1 #f2 cases (pn_split f2) * -/3 width=5 by sdj_pn, sdj_pp/ -qed. - -(* Inversion lemmas with isid ***********************************************) - -corec lemma sdj_inv_refl: ∀f. f ∥ f → 𝐈❪f❫. -#f cases (pn_split f) * #g #Hg #H -[ lapply (sdj_inv_pp … H … Hg Hg) -H /3 width=3 by isid_push/ -| elim (sdj_inv_nn … H … Hg Hg) -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sle.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sle.ma deleted file mode 100644 index c08d574cd..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sle.ma +++ /dev/null @@ -1,189 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.tcs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "ground_2/relocation/rtmap_isid.ma". -include "ground_2/relocation/rtmap_isdiv.ma". - -(* RELOCATION MAP ***********************************************************) - -coinductive sle: relation rtmap ≝ -| sle_push: ∀f1,f2,g1,g2. sle f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → sle g1 g2 -| sle_next: ∀f1,f2,g1,g2. sle f1 f2 → ↑f1 = g1 → ↑f2 = g2 → sle g1 g2 -| sle_weak: ∀f1,f2,g1,g2. sle f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → sle g1 g2 -. - -interpretation "inclusion (rtmap)" - 'subseteq f1 f2 = (sle f1 f2). - -(* Basic properties *********************************************************) - -axiom sle_eq_repl_back1: ∀f2. eq_repl_back … (λf1. f1 ⊆ f2). - -lemma sle_eq_repl_fwd1: ∀f2. eq_repl_fwd … (λf1. f1 ⊆ f2). -#f2 @eq_repl_sym /2 width=3 by sle_eq_repl_back1/ -qed-. - -axiom sle_eq_repl_back2: ∀f1. eq_repl_back … (λf2. f1 ⊆ f2). - -lemma sle_eq_repl_fwd2: ∀f1. eq_repl_fwd … (λf2. f1 ⊆ f2). -#f1 @eq_repl_sym /2 width=3 by sle_eq_repl_back2/ -qed-. - -corec lemma sle_refl: ∀f. f ⊆ f. -#f cases (pn_split f) * #g #H -[ @(sle_push … H H) | @(sle_next … H H) ] -H // -qed. - -lemma sle_refl_eq: ∀f1,f2. f1 ≡ f2 → f1 ⊆ f2. -/2 width=3 by sle_eq_repl_back2/ qed. - -(* Basic inversion lemmas ***************************************************) - -lemma sle_inv_xp: ∀g1,g2. g1 ⊆ g2 → ∀f2. ⫯f2 = g2 → - ∃∃f1. f1 ⊆ f2 & ⫯f1 = g1. -#g1 #g2 * -g1 -g2 -#f1 #f2 #g1 #g2 #H #H1 #H2 #x2 #Hx2 destruct -[ lapply (injective_push … Hx2) -Hx2 /2 width=3 by ex2_intro/ ] -elim (discr_push_next … Hx2) -qed-. - -lemma sle_inv_nx: ∀g1,g2. g1 ⊆ g2 → ∀f1. ↑f1 = g1 → - ∃∃f2. f1 ⊆ f2 & ↑f2 = g2. -#g1 #g2 * -g1 -g2 -#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #Hx1 destruct -[2: lapply (injective_next … Hx1) -Hx1 /2 width=3 by ex2_intro/ ] -elim (discr_next_push … Hx1) -qed-. - -lemma sle_inv_pn: ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → f1 ⊆ f2. -#g1 #g2 * -g1 -g2 -#f1 #f2 #g1 #g2 #H #H1 #H2 #x1 #x2 #Hx1 #Hx2 destruct -[ elim (discr_next_push … Hx2) -| elim (discr_push_next … Hx1) -| lapply (injective_push … Hx1) -Hx1 - lapply (injective_next … Hx2) -Hx2 // -] -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma sle_inv_pp: ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ⊆ f2. -#g1 #g2 #H #f1 #f2 #H1 #H2 elim (sle_inv_xp … H … H2) -g2 -#x1 #H #Hx1 destruct lapply (injective_push … Hx1) -Hx1 // -qed-. - -lemma sle_inv_nn: ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → f1 ⊆ f2. -#g1 #g2 #H #f1 #f2 #H1 #H2 elim (sle_inv_nx … H … H1) -g1 -#x2 #H #Hx2 destruct lapply (injective_next … Hx2) -Hx2 // -qed-. - -lemma sle_inv_px: ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 → - (∃∃f2. f1 ⊆ f2 & ⫯f2 = g2) ∨ ∃∃f2. f1 ⊆ f2 & ↑f2 = g2. -#g1 #g2 elim (pn_split g2) * #f2 #H2 #H #f1 #H1 -[ lapply (sle_inv_pp … H … H1 H2) | lapply (sle_inv_pn … H … H1 H2) ] -H -H1 -/3 width=3 by ex2_intro, or_introl, or_intror/ -qed-. - -lemma sle_inv_xn: ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 → - (∃∃f1. f1 ⊆ f2 & ⫯f1 = g1) ∨ ∃∃f1. f1 ⊆ f2 & ↑f1 = g1. -#g1 #g2 elim (pn_split g1) * #f1 #H1 #H #f2 #H2 -[ lapply (sle_inv_pn … H … H1 H2) | lapply (sle_inv_nn … H … H1 H2) ] -H -H2 -/3 width=3 by ex2_intro, or_introl, or_intror/ -qed-. - -(* Main properties **********************************************************) - -corec theorem sle_trans: Transitive … sle. -#f1 #f * -f1 -f -#f1 #f #g1 #g #Hf #H1 #H #g2 #H0 -[ cases (sle_inv_px … H0 … H) * |*: cases (sle_inv_nx … H0 … H) ] -g -/3 width=5 by sle_push, sle_next, sle_weak/ -qed-. - -(* Properties with iteraded push ********************************************) - -lemma sle_pushs: ∀f1,f2. f1 ⊆ f2 → ∀i. ⫯*[i] f1 ⊆ ⫯*[i] f2. -#f1 #f2 #Hf12 #i elim i -i /2 width=5 by sle_push/ -qed. - -(* Properties with tail *****************************************************) - -lemma sle_px_tl: ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 → f1 ⊆ ⫱g2. -#g1 #g2 #H #f1 #H1 elim (sle_inv_px … H … H1) -H -H1 * // -qed. - -lemma sle_xn_tl: ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 → ⫱g1 ⊆ f2. -#g1 #g2 #H #f2 #H2 elim (sle_inv_xn … H … H2) -H -H2 * // -qed. - -lemma sle_tl: ∀f1,f2. f1 ⊆ f2 → ⫱f1 ⊆ ⫱f2. -#f1 elim (pn_split f1) * #g1 #H1 #f2 #H -[ lapply (sle_px_tl … H … H1) -H // -| elim (sle_inv_nx … H … H1) -H // -] -qed. - -(* Inversion lemmas with tail ***********************************************) - -lemma sle_inv_tl_sn: ∀f1,f2. ⫱f1 ⊆ f2 → f1 ⊆ ↑f2. -#f1 elim (pn_split f1) * #g1 #H destruct -/2 width=5 by sle_next, sle_weak/ -qed-. - -lemma sle_inv_tl_dx: ∀f1,f2. f1 ⊆ ⫱f2 → ⫯f1 ⊆ f2. -#f1 #f2 elim (pn_split f2) * #g2 #H destruct -/2 width=5 by sle_push, sle_weak/ -qed-. - -(* Properties with iteraded tail ********************************************) - -lemma sle_tls: ∀f1,f2. f1 ⊆ f2 → ∀i. ⫱*[i] f1 ⊆ ⫱*[i] f2. -#f1 #f2 #Hf12 #i elim i -i /2 width=5 by sle_tl/ -qed. - -(* Properties with isid *****************************************************) - -corec lemma sle_isid_sn: ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⊆ f2. -#f1 * -f1 -#f1 #g1 #Hf1 #H1 #f2 cases (pn_split f2) * -/3 width=5 by sle_weak, sle_push/ -qed. - -(* Inversion lemmas with isid ***********************************************) - -corec lemma sle_inv_isid_dx: ∀f1,f2. f1 ⊆ f2 → 𝐈❪f2❫ → 𝐈❪f1❫. -#f1 #f2 * -f1 -f2 -#f1 #f2 #g1 #g2 #Hf * * #H -[2,3: elim (isid_inv_next … H) // ] -lapply (isid_inv_push … H ??) -H -/3 width=3 by isid_push/ -qed-. - -(* Properties with isdiv ****************************************************) - -corec lemma sle_isdiv_dx: ∀f2. 𝛀❪f2❫ → ∀f1. f1 ⊆ f2. -#f2 * -f2 -#f2 #g2 #Hf2 #H2 #f1 cases (pn_split f1) * -/3 width=5 by sle_weak, sle_next/ -qed. - -(* Inversion lemmas with isdiv **********************************************) - -corec lemma sle_inv_isdiv_sn: ∀f1,f2. f1 ⊆ f2 → 𝛀❪f1❫ → 𝛀❪f2❫. -#f1 #f2 * -f1 -f2 -#f1 #f2 #g1 #g2 #Hf * * #H -[1,3: elim (isdiv_inv_push … H) // ] -lapply (isdiv_inv_next … H ??) -H -/3 width=3 by isdiv_next/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sor.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sor.ma deleted file mode 100644 index 9191eb321..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sor.ma +++ /dev/null @@ -1,552 +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_2.ma". -include "ground_2/notation/relations/runion_3.ma". -include "ground_2/relocation/rtmap_isfin.ma". -include "ground_2/relocation/rtmap_sle.ma". - -coinductive sor: relation3 rtmap rtmap rtmap ≝ -| sor_pp: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → sor g1 g2 g -| sor_np: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ↑f = g → sor g1 g2 g -| sor_pn: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → sor g1 g2 g -| sor_nn: ∀f1,f2,f,g1,g2,g. sor f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → sor g1 g2 g -. - -interpretation "union (rtmap)" - 'RUnion f1 f2 f = (sor f1 f2 f). - -(* Basic inversion lemmas ***************************************************) - -lemma sor_inv_ppx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → - ∃∃f. f1 ⋓ f2 ≘ f & ⫯f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -lemma sor_inv_npx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → - ∃∃f. f1 ⋓ f2 ≘ f & ↑f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -lemma sor_inv_pnx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ⋓ f2 ≘ f & ↑f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -lemma sor_inv_nnx: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ⋓ f2 ≘ f & ↑f = g. -#g1 #g2 #g * -g1 -g2 -g -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct -try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) -try elim (discr_push_next … Hx1) try elim (discr_next_push … Hx1) -try (>(injective_push … Hx2) -x2) try (>(injective_next … Hx2) -x2) -try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) -/2 width=3 by ex2_intro/ -qed-. - -(* Advanced inversion lemmas ************************************************) - -lemma sor_inv_ppn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ↑f = g → ⊥. -#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 -elim (sor_inv_ppx … H … H1 H2) -g1 -g2 #x #_ #H destruct -/2 width=3 by discr_push_next/ -qed-. - -lemma sor_inv_nxp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥. -#g1 #g2 #g #H #f1 #f #H1 #H0 -elim (pn_split g2) * #f2 #H2 -[ elim (sor_inv_npx … H … H1 H2) -| elim (sor_inv_nnx … H … H1 H2) -] -g1 -g2 #x #_ #H destruct -/2 width=3 by discr_next_push/ -qed-. - -lemma sor_inv_xnp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f2,f. ↑f2 = g2 → ⫯f = g → ⊥. -#g1 #g2 #g #H #f2 #f #H2 #H0 -elim (pn_split g1) * #f1 #H1 -[ elim (sor_inv_pnx … H … H1 H2) -| elim (sor_inv_nnx … H … H1 H2) -] -g1 -g2 #x #_ #H destruct -/2 width=3 by discr_next_push/ -qed-. - -lemma sor_inv_ppp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → f1 ⋓ f2 ≘ f. -#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 -elim (sor_inv_ppx … H … H1 H2) -g1 -g2 #x #Hx #H destruct -<(injective_push … H) -f // -qed-. - -lemma sor_inv_npn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f2,f. ↑f1 = g1 → ⫯f2 = g2 → ↑f = g → f1 ⋓ f2 ≘ f. -#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 -elim (sor_inv_npx … H … H1 H2) -g1 -g2 #x #Hx #H destruct -<(injective_next … H) -f // -qed-. - -lemma sor_inv_pnn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f2,f. ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ⋓ f2 ≘ f. -#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 -elim (sor_inv_pnx … H … H1 H2) -g1 -g2 #x #Hx #H destruct -<(injective_next … H) -f // -qed-. - -lemma sor_inv_nnn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f2,f. ↑f1 = g1 → ↑f2 = g2 → ↑f = g → f1 ⋓ f2 ≘ f. -#g1 #g2 #g #H #f1 #f2 #f #H1 #H2 #H0 -elim (sor_inv_nnx … H … H1 H2) -g1 -g2 #x #Hx #H destruct -<(injective_next … H) -f // -qed-. - -lemma sor_inv_pxp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f. ⫯f1 = g1 → ⫯f = g → - ∃∃f2. f1 ⋓ f2 ≘ f & ⫯f2 = g2. -#g1 #g2 #g #H #f1 #f #H1 #H0 -elim (pn_split g2) * #f2 #H2 -[ /3 width=7 by sor_inv_ppp, ex2_intro/ -| elim (sor_inv_xnp … H … H2 H0) -] -qed-. - -lemma sor_inv_xpp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f2,f. ⫯f2 = g2 → ⫯f = g → - ∃∃f1. f1 ⋓ f2 ≘ f & ⫯f1 = g1. -#g1 #g2 #g #H #f2 #f #H2 #H0 -elim (pn_split g1) * #f1 #H1 -[ /3 width=7 by sor_inv_ppp, ex2_intro/ -| elim (sor_inv_nxp … H … H1 H0) -] -qed-. - -lemma sor_inv_pxn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f. ⫯f1 = g1 → ↑f = g → - ∃∃f2. f1 ⋓ f2 ≘ f & ↑f2 = g2. -#g1 #g2 #g #H #f1 #f #H1 #H0 -elim (pn_split g2) * #f2 #H2 -[ elim (sor_inv_ppn … H … H1 H2 H0) -| /3 width=7 by sor_inv_pnn, ex2_intro/ -] -qed-. - -lemma sor_inv_xpn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f2,f. ⫯f2 = g2 → ↑f = g → - ∃∃f1. f1 ⋓ f2 ≘ f & ↑f1 = g1. -#g1 #g2 #g #H #f2 #f #H2 #H0 -elim (pn_split g1) * #f1 #H1 -[ elim (sor_inv_ppn … H … H1 H2 H0) -| /3 width=7 by sor_inv_npn, ex2_intro/ -] -qed-. - -lemma sor_inv_xxp: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f. ⫯f = g → - ∃∃f1,f2. f1 ⋓ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2. -#g1 #g2 #g #H #f #H0 -elim (pn_split g1) * #f1 #H1 -[ elim (sor_inv_pxp … H … H1 H0) -g /2 width=5 by ex3_2_intro/ -| elim (sor_inv_nxp … H … H1 H0) -] -qed-. - -lemma sor_inv_nxn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f1,f. ↑f1 = g1 → ↑f = g → - (∃∃f2. f1 ⋓ f2 ≘ f & ⫯f2 = g2) ∨ - ∃∃f2. f1 ⋓ f2 ≘ f & ↑f2 = g2. -#g1 #g2 elim (pn_split g2) * -/4 width=7 by sor_inv_npn, sor_inv_nnn, ex2_intro, or_intror, or_introl/ -qed-. - -lemma sor_inv_xnn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → - ∀f2,f. ↑f2 = g2 → ↑f = g → - (∃∃f1. f1 ⋓ f2 ≘ f & ⫯f1 = g1) ∨ - ∃∃f1. f1 ⋓ f2 ≘ f & ↑f1 = g1. -#g1 elim (pn_split g1) * -/4 width=7 by sor_inv_pnn, sor_inv_nnn, ex2_intro, or_intror, or_introl/ -qed-. - -lemma sor_inv_xxn: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f. ↑f = g → - ∨∨ ∃∃f1,f2. f1 ⋓ f2 ≘ f & ↑f1 = g1 & ⫯f2 = g2 - | ∃∃f1,f2. f1 ⋓ f2 ≘ f & ⫯f1 = g1 & ↑f2 = g2 - | ∃∃f1,f2. f1 ⋓ f2 ≘ f & ↑f1 = g1 & ↑f2 = g2. -#g1 #g2 #g #H #f #H0 -elim (pn_split g1) * #f1 #H1 -[ elim (sor_inv_pxn … H … H1 H0) -g - /3 width=5 by or3_intro1, ex3_2_intro/ -| elim (sor_inv_nxn … H … H1 H0) -g * - /3 width=5 by or3_intro0, or3_intro2, ex3_2_intro/ -] -qed-. - -(* Main inversion lemmas ****************************************************) - -corec theorem sor_mono: ∀f1,f2,x,y. f1 ⋓ f2 ≘ x → f1 ⋓ f2 ≘ y → x ≡ y. -#f1 #f2 #x #y * -f1 -f2 -x -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #H -[ cases (sor_inv_ppx … H … H1 H2) -| cases (sor_inv_npx … H … H1 H2) -| cases (sor_inv_pnx … H … H1 H2) -| cases (sor_inv_nnx … H … H1 H2) -] -g1 -g2 -/3 width=5 by eq_push, eq_next/ -qed-. - -(* Basic properties *********************************************************) - -corec lemma sor_eq_repl_back1: ∀f2,f. eq_repl_back … (λf1. f1 ⋓ f2 ≘ f). -#f2 #f #f1 * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x #Hx -try cases (eq_inv_px … Hx … H1) try cases (eq_inv_nx … Hx … H1) -g1 -/3 width=7 by sor_pp, sor_np, sor_pn, sor_nn/ -qed-. - -lemma sor_eq_repl_fwd1: ∀f2,f. eq_repl_fwd … (λf1. f1 ⋓ f2 ≘ f). -#f2 #f @eq_repl_sym /2 width=3 by sor_eq_repl_back1/ -qed-. - -corec lemma sor_eq_repl_back2: ∀f1,f. eq_repl_back … (λf2. f1 ⋓ f2 ≘ f). -#f1 #f #f2 * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx -try cases (eq_inv_px … Hx … H2) try cases (eq_inv_nx … Hx … H2) -g2 -/3 width=7 by sor_pp, sor_np, sor_pn, sor_nn/ -qed-. - -lemma sor_eq_repl_fwd2: ∀f1,f. eq_repl_fwd … (λf2. f1 ⋓ f2 ≘ f). -#f1 #f @eq_repl_sym /2 width=3 by sor_eq_repl_back2/ -qed-. - -corec lemma sor_eq_repl_back3: ∀f1,f2. eq_repl_back … (λf. f1 ⋓ f2 ≘ f). -#f1 #f2 #f * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx -try cases (eq_inv_px … Hx … H0) try cases (eq_inv_nx … Hx … H0) -g -/3 width=7 by sor_pp, sor_np, sor_pn, sor_nn/ -qed-. - -lemma sor_eq_repl_fwd3: ∀f1,f2. eq_repl_fwd … (λf. f1 ⋓ f2 ≘ f). -#f1 #f2 @eq_repl_sym /2 width=3 by sor_eq_repl_back3/ -qed-. - -corec lemma sor_idem: ∀f. f ⋓ f ≘ f. -#f cases (pn_split f) * #g #H -[ @(sor_pp … H H H) | @(sor_nn … H H H) ] -H // -qed. - -corec lemma sor_comm: ∀f1,f2,f. f1 ⋓ f2 ≘ f → f2 ⋓ f1 ≘ f. -#f1 #f2 #f * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf * * * -g1 -g2 -g -[ @sor_pp | @sor_pn | @sor_np | @sor_nn ] /2 width=7 by/ -qed-. - -(* Properties with tail *****************************************************) - -lemma sor_tl: ∀f1,f2,f. f1 ⋓ f2 ≘ f → ⫱f1 ⋓ ⫱f2 ≘ ⫱f. -#f1 cases (pn_split f1) * #g1 #H1 -#f2 cases (pn_split f2) * #g2 #H2 -#f #Hf -[ cases (sor_inv_ppx … Hf … H1 H2) -| cases (sor_inv_pnx … Hf … H1 H2) -| cases (sor_inv_npx … Hf … H1 H2) -| cases (sor_inv_nnx … Hf … H1 H2) -] -Hf #g #Hg #H destruct // -qed. - -lemma sor_xxn_tl: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f. ↑f = g → - (∃∃f1,f2. f1 ⋓ f2 ≘ f & ↑f1 = g1 & ⫱g2 = f2) ∨ - (∃∃f1,f2. f1 ⋓ f2 ≘ f & ⫱g1 = f1 & ↑f2 = g2). -#g1 #g2 #g #H #f #H0 elim (sor_inv_xxn … H … H0) -H -H0 * -/3 width=5 by ex3_2_intro, or_introl, or_intror/ -qed-. - -lemma sor_xnx_tl: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f2. ↑f2 = g2 → - ∃∃f1,f. f1 ⋓ f2 ≘ f & ⫱g1 = f1 & ↑f = g. -#g1 elim (pn_split g1) * #f1 #H1 #g2 #g #H #f2 #H2 -[ elim (sor_inv_pnx … H … H1 H2) | elim (sor_inv_nnx … H … H1 H2) ] -g2 -/3 width=5 by ex3_2_intro/ -qed-. - -lemma sor_nxx_tl: ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1. ↑f1 = g1 → - ∃∃f2,f. f1 ⋓ f2 ≘ f & ⫱g2 = f2 & ↑f = g. -#g1 #g2 elim (pn_split g2) * #f2 #H2 #g #H #f1 #H1 -[ elim (sor_inv_npx … H … H1 H2) | elim (sor_inv_nnx … H … H1 H2) ] -g1 -/3 width=5 by ex3_2_intro/ -qed-. - -(* Properties with iterated tail ********************************************) - -lemma sor_tls: ∀f1,f2,f. f1 ⋓ f2 ≘ f → - ∀n. ⫱*[n]f1 ⋓ ⫱*[n]f2 ≘ ⫱*[n]f. -#f1 #f2 #f #Hf #n elim n -n /2 width=1 by sor_tl/ -qed. - -(* Properies with test for identity *****************************************) - -corec lemma sor_isid_sn: ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⋓ f2 ≘ f2. -#f1 * -f1 -#f1 #g1 #Hf1 #H1 #f2 cases (pn_split f2) * -/3 width=7 by sor_pp, sor_pn/ -qed. - -corec lemma sor_isid_dx: ∀f2. 𝐈❪f2❫ → ∀f1. f1 ⋓ f2 ≘ f1. -#f2 * -f2 -#f2 #g2 #Hf2 #H2 #f1 cases (pn_split f1) * -/3 width=7 by sor_pp, sor_np/ -qed. - -lemma sor_isid: ∀f1,f2,f. 𝐈❪f1❫ → 𝐈❪f2❫ → 𝐈❪f❫ → f1 ⋓ f2 ≘ f. -/4 width=3 by sor_eq_repl_back2, sor_eq_repl_back1, isid_inv_eq_repl/ qed. - -(* Inversion lemmas with tail ***********************************************) - -lemma sor_inv_tl_sn: ∀f1,f2,f. ⫱f1 ⋓ f2 ≘ f → f1 ⋓ ↑f2 ≘ ↑f. -#f1 #f2 #f elim (pn_split f1) * -#g1 #H destruct /2 width=7 by sor_pn, sor_nn/ -qed-. - -lemma sor_inv_tl_dx: ∀f1,f2,f. f1 ⋓ ⫱f2 ≘ f → ↑f1 ⋓ f2 ≘ ↑f. -#f1 #f2 #f elim (pn_split f2) * -#g2 #H destruct /2 width=7 by sor_np, sor_nn/ -qed-. - -(* Inversion lemmas with test for identity **********************************) - -lemma sor_isid_inv_sn: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f. -/3 width=4 by sor_isid_sn, sor_mono/ -qed-. - -lemma sor_isid_inv_dx: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f2❫ → f1 ≡ f. -/3 width=4 by sor_isid_dx, sor_mono/ -qed-. - -corec lemma sor_fwd_isid1: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫. -#f1 #f2 #f * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H #Hg -[ /4 width=6 by isid_inv_push, isid_push/ ] -cases (isid_inv_next … Hg … H) -qed-. - -corec lemma sor_fwd_isid2: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f2❫. -#f1 #f2 #f * -f1 -f2 -f -#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H #Hg -[ /4 width=6 by isid_inv_push, isid_push/ ] -cases (isid_inv_next … Hg … H) -qed-. - -lemma sor_inv_isid3: ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫ ∧ 𝐈❪f2❫. -/3 width=4 by sor_fwd_isid2, sor_fwd_isid1, conj/ qed-. - -(* Properties with finite colength assignment *******************************) - -lemma sor_fcla_ex: ∀f1,n1. 𝐂❪f1❫ ≘ n1 → ∀f2,n2. 𝐂❪f2❫ ≘ n2 → - ∃∃f,n. f1 ⋓ f2 ≘ f & 𝐂❪f❫ ≘ n & (n1 ∨ n2) ≤ n & n ≤ n1 + n2. -#f1 #n1 #Hf1 elim Hf1 -f1 -n1 /3 width=6 by sor_isid_sn, ex4_2_intro/ -#f1 #n1 #Hf1 #IH #f2 #n2 * -f2 -n2 /3 width=6 by fcla_push, fcla_next, ex4_2_intro, sor_isid_dx/ -#f2 #n2 #Hf2 elim (IH … Hf2) -IH -Hf2 -Hf1 [2,4: #f #n (max_O2 n) /2 width=1 by isrt_max/ -qed. - -lemma isrt_max_idem1: ∀n,c1,c2. 𝐑𝐓❪n,c1❫ → 𝐑𝐓❪n,c2❫ → 𝐑𝐓❪n,c1∨c2❫. -#n #c1 #c2 #H1 #H2 >(idempotent_max n) /2 width=1 by isrt_max/ -qed. - -(* Inversion properties with test for constrained rt-transition counter *****) - -lemma isrt_inv_max: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → - ∃∃n1,n2. 𝐑𝐓❪n1,c1❫ & 𝐑𝐓❪n2,c2❫ & (n1 ∨ n2) = n. -#n #c1 #c2 * #ri #rs #H -elim (max_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #_ #_ #H1 #H2 #H3 #H4 -elim (max_inv_O3 … H1) -H1 /3 width=5 by ex3_2_intro, ex1_2_intro/ -qed-. - -lemma isrt_O_inv_max: ∀c1,c2. 𝐑𝐓❪0,c1 ∨ c2❫ → ∧∧ 𝐑𝐓❪0,c1❫ & 𝐑𝐓❪0,c2❫. -#c1 #c2 #H -elim (isrt_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H -elim (max_inv_O3 … H) -H #H1 #H2 destruct -/2 width=1 by conj/ -qed-. - -lemma isrt_inv_max_O_dx: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → 𝐑𝐓❪0,c2❫ → 𝐑𝐓❪n,c1❫. -#n #c1 #c2 #H #H2 -elim (isrt_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct -lapply (isrt_inj … Hn2 H2) -c2 #H destruct // -qed-. - -lemma isrt_inv_max_eq_t: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → eq_t c1 c2 → - ∧∧ 𝐑𝐓❪n,c1❫ & 𝐑𝐓❪n,c2❫. -#n #c1 #c2 #H #Hc12 -elim (isrt_inv_max … H) -H #n1 #n2 #Hc1 #Hc2 #H destruct -lapply (isrt_eq_t_trans … Hc1 … Hc12) -Hc12 #H -<(isrt_inj … H … Hc2) -Hc2 -(plus_n_O n) /2 width=1 by isrt_plus/ -qed. - -lemma isrt_succ: ∀n,c. 𝐑𝐓❪n,c❫ → 𝐑𝐓❪↑n,c+𝟘𝟙❫. -/2 width=1 by isrt_plus/ qed. - -(* Inversion properties with test for constrained rt-transition counter *****) - -lemma isrt_inv_plus: ∀n,c1,c2. 𝐑𝐓❪n,c1 + c2❫ → - ∃∃n1,n2. 𝐑𝐓❪n1,c1❫ & 𝐑𝐓❪n2,c2❫ & n1 + n2 = n. -#n #c1 #c2 * #ri #rs #H -elim (plus_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #_ #_ #H1 #H2 #H3 #H4 -elim (plus_inv_O3 … H1) -H1 /3 width=5 by ex3_2_intro, ex1_2_intro/ -qed-. - -lemma isrt_inv_plus_O_dx: ∀n,c1,c2. 𝐑𝐓❪n,c1 + c2❫ → 𝐑𝐓❪0,c2❫ → 𝐑𝐓❪n,c1❫. -#n #c1 #c2 #H #H2 -elim (isrt_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct -lapply (isrt_inj … Hn2 H2) -c2 #H destruct // -qed-. - -lemma isrt_inv_plus_SO_dx: ∀n,c1,c2. 𝐑𝐓❪n,c1 + c2❫ → 𝐑𝐓❪1,c2❫ → - ∃∃m. 𝐑𝐓❪m,c1❫ & n = ↑m. -#n #c1 #c2 #H #H2 -elim (isrt_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct -lapply (isrt_inj … Hn2 H2) -c2 #H destruct -/2 width=3 by ex2_intro/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_isrt_shift.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_isrt_shift.ma deleted file mode 100644 index 7f1905163..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_isrt_shift.ma +++ /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 "ground_2/steps/rtc_shift.ma". -include "ground_2/steps/rtc_isrt.ma". - -(* RT-TRANSITION COUNTER ****************************************************) - -(* Properties with test for costrained rt-transition counter ****************) - -lemma isr_shift: ∀c. 𝐑𝐓❪0,c❫ → 𝐑𝐓❪0,↕*c❫. -#c * #ri #rs #H destruct /2 width=3 by ex1_2_intro/ -qed. - -(* Inversion properties with test for costrained rt-counter *****************) - -lemma isrt_inv_shift: ∀n,c. 𝐑𝐓❪n,↕*c❫ → 𝐑𝐓❪0,c❫ ∧ 0 = n. -#n #c * #ri #rs #H -elim (shift_inv_dx … H) -H #rt0 #rs0 #ti0 #ts0 #_ #_ #H1 #H2 #H3 -elim (max_inv_O3 … H1) -H1 /3 width=3 by ex1_2_intro, conj/ -qed-. - -lemma isr_inv_shift: ∀c. 𝐑𝐓❪0,↕*c❫ → 𝐑𝐓❪0,c❫. -#c #H elim (isrt_inv_shift … H) -H // -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist.ma deleted file mode 100644 index 81c584343..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist.ma +++ /dev/null @@ -1,56 +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/notation/relations/istype_2.ma". -include "ground_2/steps/rtc.ma". - -(* T-TRANSITION COUNTER *****************************************************) - -definition ist: relation2 nat rtc ≝ - λts,c. 〈0,0,0,ts〉 = c. - -interpretation "test for t-transition counter (rtc)" - 'IsType ts c = (ist ts c). - -(* Basic properties *********************************************************) - -lemma ist_00: 𝐓❪0,𝟘𝟘❫. -// qed. - -lemma ist_01: 𝐓❪1,𝟘𝟙❫. -// qed. - -(* Basic inversion properties ***********************************************) - -lemma ist_inv_00: ∀n. 𝐓❪n,𝟘𝟘❫ → 0 = n. -#n #H destruct // -qed-. - -lemma ist_inv_01: ∀n. 𝐓❪n,𝟘𝟙❫ → 1 = n. -#n #H destruct // -qed-. - -lemma ist_inv_10: ∀n. 𝐓❪n,𝟙𝟘❫ → ⊥. -#h #H destruct -qed-. - -(* Main inversion properties ************************************************) - -theorem ist_inj: ∀n1,n2,c. 𝐓❪n1,c❫ → 𝐓❪n2,c❫ → n1 = n2. -#n1 #n2 #c #H1 #H2 destruct // -qed-. - -theorem ist_mono: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪n,c2❫ → c1 = c2. -#n #c1 #c2 #H1 #H2 destruct // -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_max.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_max.ma deleted file mode 100644 index e0b1aa661..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_max.ma +++ /dev/null @@ -1,61 +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_3_2.ma". -include "ground_2/steps/rtc_max.ma". -include "ground_2/steps/rtc_ist.ma". - -(* RT-TRANSITION COUNTER ****************************************************) - -(* Properties with test for t-transition counter ****************************) - -lemma ist_max: ∀n1,n2,c1,c2. 𝐓❪n1,c1❫ → 𝐓❪n2,c2❫ → 𝐓❪n1∨n2,c1∨c2❫. -#n1 #n2 #c1 #c2 #H1 #H2 destruct // -qed. - -lemma ist_max_O1: ∀n,c1,c2. 𝐓❪0,c1❫ → 𝐓❪n,c2❫ → 𝐓❪n,c1∨c2❫. -/2 width=1 by ist_max/ qed. - -lemma ist_max_O2: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1∨c2❫. -#n #c1 #c2 #H1 #H2 >(max_O2 n) /2 width=1 by ist_max/ -qed. - -lemma ist_max_idem1: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪n,c2❫ → 𝐓❪n,c1∨c2❫. -#n #c1 #c2 #H1 #H2 >(idempotent_max n) /2 width=1 by ist_max/ -qed. - -(* Inversion properties with test for t-transition counter ******************) - -lemma ist_inv_max: - ∀n,c1,c2. 𝐓❪n,c1 ∨ c2❫ → - ∃∃n1,n2. 𝐓❪n1,c1❫ & 𝐓❪n2,c2❫ & (n1 ∨ n2) = n. -#n #c1 #c2 #H -elim (max_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #H1 #H2 #H3 #H4 #H5 #H6 destruct -elim (max_inv_O3 … H1) -H1 #H11 #H12 destruct -elim (max_inv_O3 … H2) -H2 #H21 #H22 destruct -elim (max_inv_O3 … H3) -H3 #H31 #H32 destruct -/2 width=5 by ex3_2_intro/ -qed-. - -lemma ist_O_inv_max: ∀c1,c2. 𝐓❪0,c1 ∨ c2❫ → ∧∧ 𝐓❪0,c1❫ & 𝐓❪0,c2❫. -#c1 #c2 #H -elim (ist_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H -elim (max_inv_O3 … H) -H #H1 #H2 destruct -/2 width=1 by conj/ -qed-. - -lemma ist_inv_max_O_dx: ∀n,c1,c2. 𝐓❪n,c1 ∨ c2❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1❫. -#n #c1 #c2 #H #H2 -elim (ist_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct // -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_plus.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_plus.ma deleted file mode 100644 index 4380420c3..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_plus.ma +++ /dev/null @@ -1,67 +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_3_2.ma". -include "ground_2/steps/rtc_plus.ma". -include "ground_2/steps/rtc_ist.ma". - -(* RT-TRANSITION COUNTER ****************************************************) - -(* Properties with test for t-transition counter ****************************) - -lemma ist_plus: ∀n1,n2,c1,c2. 𝐓❪n1,c1❫ → 𝐓❪n2,c2❫ → 𝐓❪n1+n2,c1+c2❫. -#n1 #n2 #c1 #c2 #H1 #H2 destruct // -qed. - -lemma ist_plus_O1: ∀n,c1,c2. 𝐓❪0,c1❫ → 𝐓❪n,c2❫ → 𝐓❪n,c1+c2❫. -/2 width=1 by ist_plus/ qed. - -lemma ist_plus_O2: ∀n,c1,c2. 𝐓❪n,c1❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1+c2❫. -#n #c1 #c2 #H1 #H2 >(plus_n_O n) /2 width=1 by ist_plus/ -qed. - -lemma ist_succ: ∀n,c. 𝐓❪n,c❫ → 𝐓❪↑n,c+𝟘𝟙❫. -/2 width=1 by ist_plus/ qed. - -(* Inversion properties with test for constrained rt-transition counter *****) - -lemma ist_inv_plus: - ∀n,c1,c2. 𝐓❪n,c1 + c2❫ → - ∃∃n1,n2. 𝐓❪n1,c1❫ & 𝐓❪n2,c2❫ & n1 + n2 = n. -#n #c1 #c2 #H -elim (plus_inv_dx … H) -H #ri1 #rs1 #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #H1 #H2 #H3 #H4 #H5 #H6 destruct -elim (plus_inv_O3 … H1) -H1 #H11 #H12 destruct -elim (plus_inv_O3 … H2) -H2 #H21 #H22 destruct -elim (plus_inv_O3 … H3) -H3 #H31 #H32 destruct -/3 width=5 by ex3_2_intro/ -qed-. - -lemma ist_inv_plus_O_dx: ∀n,c1,c2. 𝐓❪n,c1 + c2❫ → 𝐓❪0,c2❫ → 𝐓❪n,c1❫. -#n #c1 #c2 #H #H2 -elim (ist_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct // -qed-. - -lemma ist_inv_plus_SO_dx: - ∀n,c1,c2. 𝐓❪n,c1 + c2❫ → 𝐓❪1,c2❫ → - ∃∃m. 𝐓❪m,c1❫ & n = ↑m. -#n #c1 #c2 #H #H2 destruct -elim (ist_inv_plus … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct -/2 width=3 by ex2_intro/ -qed-. - -lemma ist_inv_plus_10_dx: ∀n,c. 𝐓❪n,c+𝟙𝟘❫ → ⊥. -#n #c #H -elim (ist_inv_plus … H) -H #n1 #n2 #_ #H #_ -/2 width=2 by ist_inv_10/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_shift.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_shift.ma deleted file mode 100644 index 66af3f4a5..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_ist_shift.ma +++ /dev/null @@ -1,38 +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/steps/rtc_shift.ma". -include "ground_2/steps/rtc_ist.ma". - -(* RT-TRANSITION COUNTER ****************************************************) - -(* Properties with test for t-transition counter ****************************) - -lemma ist_zero_shift: ∀c. 𝐓❪0,c❫ → 𝐓❪0,↕*c❫. -#c #H destruct // -qed. - -(* Inversion properties with test for t-transition counter ******************) - -lemma ist_inv_shift: ∀n,c. 𝐓❪n,↕*c❫ → ∧∧ 𝐓❪0,c❫ & 0 = n. -#n #c #H -elim (shift_inv_dx … H) -H #rt0 #rs0 #ti0 #ts0 #H1 #_ #H2 #H3 #H4 destruct -elim (max_inv_O3 … H1) -H1 #H11 #H12 destruct -elim (max_inv_O3 … H2) -H2 #H21 #H22 destruct -/2 width=1 by conj/ -qed-. - -lemma ist_inv_zero_shift: ∀c. 𝐓❪0,↕*c❫ → 𝐓❪0,c❫. -#c #H elim (ist_inv_shift … H) -H // -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_max.ma b/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_max.ma deleted file mode 100644 index a6e0efa87..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/steps/rtc_max.ma +++ /dev/null @@ -1,59 +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_6_8.ma". -include "ground_2/steps/rtc.ma". - -(* RT-TRANSITION COUNTER ****************************************************) - -definition max (c1:rtc) (c2:rtc): rtc ≝ match c1 with [ - mk_rtc ri1 rs1 ti1 ts1 ⇒ match c2 with [ - mk_rtc ri2 rs2 ti2 ts2 ⇒ 〈ri1∨ri2,rs1∨rs2,ti1∨ti2,ts1∨ts2〉 - ] -]. - -interpretation "maximum (rtc)" - 'or c1 c2 = (max c1 c2). - -(* Basic properties *********************************************************) - -lemma max_rew: ∀ri1,ri2,rs1,rs2,ti1,ti2,ts1,ts2. - 〈ri1∨ri2,rs1∨rs2,ti1∨ti2,ts1∨ts2〉 = - (〈ri1,rs1,ti1,ts1〉 ∨ 〈ri2,rs2,ti2,ts2〉). -// qed. - -lemma max_O_dx: ∀c. c = (c ∨ 𝟘𝟘). -* #ri #rs #ti #ts - - - - - Summary of the Specification - Here is a numerical account of the specification's contents - and its timeline. - -
- - - Specification becomes an independent package. - - - Centralized xoa infrastructure removed. - - - Decentralized xoa infrastructure. - - - Generic rt-transition counter (rtc). - - - Platform-independent multiple relocation (rtmap). - - - Multiple relocation with streams of naturals. - - - Multiple relocation with lists of booleans. - - - Natural numbers with infinity (ynat). - - - Specification starts. - - - Logical Structure of the Specification - This table reports the specification's components and their planes. - -
- -
- diff --git a/matita/matita/contribs/lambdadelta/ground_2/web/ground_2_src.tbl b/matita/matita/contribs/lambdadelta/ground_2/web/ground_2_src.tbl deleted file mode 100644 index 0dfbaaecf..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/web/ground_2_src.tbl +++ /dev/null @@ -1,101 +0,0 @@ -name "ground_2_src" - -table { - class "gray" - [ { "component" * } { - [ { "plane" * } { - [ "files" * ] - } - ] - } - ] - class "water" - [ { "generic rt-transition counter" * } { - [ { "" * } { - [ "rtc_ist ( 𝐓❪?,?❫ )" "rtc_ist_shift" "rtc_ist_plus" "rtc_ist_max" * ] - [ "rtc_isrc ( 𝐑𝐓❪?,?❫ )" "rtc_isrt_shift" "rtc_isrt_plus" "rtc_isrt_max" "rtc_isrt_max_shift" * ] - [ "rtc ( 〈?,?,?,?〉 ) ( 𝟘𝟘 ) ( 𝟙𝟘 ) ( 𝟘𝟙 )" "rtc_shift ( ↕*? )" "rtc_plus ( ? + ? )" "rtc_max ( ? ∨ ? )" "rtc_max_shift" * ] - } - ] - } - ] - class "green" - [ { "multiple relocation" * } { - [ { "" * } { - [ "rtmap" "rtmap_eq ( ? ≡ ? )" "rtmap_pushs ( ⫯*[?]? )" "rtmap_nexts ( ↑*[?]? )" - "rtmap_tl ( ⫱? )" "rtmap_tls ( ⫱*[?]? )" "rtmap_isid ( 𝐈❪?❫ )" "rtmap_id" "rtmap_isdiv ( 𝛀❪?❫ )" - "rtmap_fcla ( 𝐂❪?❫ ≘ ? )" "rtmap_isfin ( 𝐅❪?❫ )" "rtmap_isuni ( 𝐔❪?❫ )" "rtmap_uni ( 𝐔❨?❩ )" - "rtmap_sle ( ? ⊆ ? )" "rtmap_sdj ( ? ∥ ? )" "rtmap_sand ( ? ⋒ ? ≘ ? )" "rtmap_sor ( ? ⋓ ? ≘ ? )" - "rtmap_at ( @❪?,?❫ ≘ ? )" "rtmap_istot ( 𝐓❪?❫ )" "rtmap_after ( ? ⊚ ? ≘ ? )" "rtmap_coafter ( ? ~⊚ ? ≘ ? )" - "rtmap_basic ( 𝐁❨?,?❩ )" "rtmap_basic_after" - * ] - [ "nstream ( ⫯? ) ( ↑? )" "nstream_eq" "" "" - "" "" "nstream_isid" "nstream_id ( 𝐈𝐝 )" "" - "" "" "" "" - "" "" "" "nstream_sor" - "" "nstream_istot ( ?@❨?❩ )" "nstream_after ( ? ∘ ? )" "nstream_coafter ( ? ~∘ ? )" - "nstream_basic" "" - * ] -(* - [ "trace ( ∥?∥ )" "trace_at ( @❪?,?❫ ≘ ? )" "trace_after ( ? ⊚ ? ≘ ? )" "trace_isid ( 𝐈❪?❫ )" "trace_isun ( 𝐔❪?❫ )" - "trace_sle ( ? ⊆ ? )" "trace_sor ( ? ⋓ ? ≘ ? )" "trace_snot ( ∁ ? )" * ] -*) - [ "mr2 ( ◊ ) ( ❨?,?❩;? )" "mr2_append ( ? @@? )" "mr2_at ( @❪?,?❫ ≘ ? )" "mr2_plus ( ? + ? )" "mr2_minus ( ? ▭ ? ≘ ? )" * ] - } - ] - } - ] - class "grass" - [ { "natural numbers with infinity" * } { - [ { "" * } { - [ "ynat ( ∞ )" "ynat_pred ( ↓? )" "ynat_succ ( ↑? )" - "ynat_le ( ? ≤ ? )" "ynat_lt ( ? < ? )" - "ynat_plus ( ? + ? )" "ynat_minus_sn ( ? - ? )" * - ] - } - ] - } - ] - class "yellow" - [ { "extensions to the library" * } { - [ { "" * } { - [ "stream ( ? ⨮{?} ? )" "stream_eq ( ? ≗{?} ? )" "stream_hdtl ( ⫰{?}? )" "stream_tls ( ⫰*{?}[?]? )" * ] - [ "list ( Ⓔ{?} ) ( ? ⨮{?} ? )" "list_length ( |?| )" * ] - [ "bool ( Ⓕ ) ( Ⓣ )" "arith ( ?^? ) ( ↑? ) ( ↓? ) ( ? ∨ ? ) ( ? ∧ ? )" "arith_2a" "arith_2b" * ] - [ "ltc" "ltc_ctc" * ] - [ "logic ( ⊥ ) ( ⊤ )" "relations ( ? ⊆ ? )" "functions" "exteq ( ? ≐{?,?} ? )" "star" "lstar_2a" * ] - } - ] - } - ] - class "orange" - [ { "generated library" * } { - [ { "generalization with equality" * } { - [ "insert_eq" * ] - } - ] - [ { "permutation of quantifiers" * } { - [ "pull" * ] - } - ] - [ { "logical decomposables" * } { - [ "xoa ( ∃∃ ) ( ∨∨ ) ( ∧∧ )" * ] - } - ] - } - ] - class "red" - [ { "" * } { - [ { "" * } { - [ * ] - } - ] - } - ] -} - -class "top" { * } - -class "capitalize italic" { 0 } - -class "italic" { 1 } diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa.conf.xml b/matita/matita/contribs/lambdadelta/ground_2/xoa.conf.xml deleted file mode 100644 index e7546ade3..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa.conf.xml +++ /dev/null @@ -1,52 +0,0 @@ - - -
- . - ground_2/xoa - ground_2/notation/xoa - basics/pts.ma - 3 - 4 - 1 2 - 1 3 - 1 4 - 2 2 - 2 3 - 3 1 - 3 2 - 3 3 - 3 4 - 3 5 - 4 1 - 4 2 - 4 3 - 4 4 - 4 5 - 5 1 - 5 2 - 5 3 - 5 4 - 5 5 - 5 6 - 5 7 - 6 3 - 6 4 - 6 5 - 6 6 - 6 7 - 6 8 - 6 9 - 7 3 - 7 4 - 7 5 - 7 6 - 7 7 - 7 10 - 8 4 - 8 5 - 9 3 - 3 - 4 - 5 -
-
diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/and_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/and_3.ma deleted file mode 100644 index 93b1480ec..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/and_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/and_3.ma". - -(* multiple conjunction connective (3) *) - -inductive and3 (P0,P1,P2:Prop) : Prop ≝ - | and3_intro: P0 → P1 → P2 → and3 ? ? ? -. - -interpretation "multiple conjunction connective (3)" 'And P0 P1 P2 = (and3 P0 P1 P2). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/and_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/and_4.ma deleted file mode 100644 index b21bca6bc..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/and_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/and_4.ma". - -(* multiple conjunction connective (4) *) - -inductive and4 (P0,P1,P2,P3:Prop) : Prop ≝ - | and4_intro: P0 → P1 → P2 → P3 → and4 ? ? ? ? -. - -interpretation "multiple conjunction connective (4)" 'And P0 P1 P2 P3 = (and4 P0 P1 P2 P3). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_2.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_2.ma deleted file mode 100644 index cf8298003..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_2.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_1_2.ma". - -(* multiple existental quantifier (1, 2) *) - -inductive ex1_2 (A0,A1:Type[0]) (P0:A0→A1→Prop) : Prop ≝ - | ex1_2_intro: ∀x0,x1. P0 x0 x1 → ex1_2 ? ? ? -. - -interpretation "multiple existental quantifier (1, 2)" 'Ex2 P0 = (ex1_2 ? ? P0). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_3.ma deleted file mode 100644 index 79bb95c3f..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_1_3.ma". - -(* multiple existental quantifier (1, 3) *) - -inductive ex1_3 (A0,A1,A2:Type[0]) (P0:A0→A1→A2→Prop) : Prop ≝ - | ex1_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → ex1_3 ? ? ? ? -. - -interpretation "multiple existental quantifier (1, 3)" 'Ex3 P0 = (ex1_3 ? ? ? P0). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_4.ma deleted file mode 100644 index b5faca410..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_1_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_1_4.ma". - -(* multiple existental quantifier (1, 4) *) - -inductive ex1_4 (A0,A1,A2,A3:Type[0]) (P0:A0→A1→A2→A3→Prop) : Prop ≝ - | ex1_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → ex1_4 ? ? ? ? ? -. - -interpretation "multiple existental quantifier (1, 4)" 'Ex4 P0 = (ex1_4 ? ? ? ? P0). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_2_2.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_2_2.ma deleted file mode 100644 index 78063925b..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_2_2.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_2_2.ma". - -(* multiple existental quantifier (2, 2) *) - -inductive ex2_2 (A0,A1:Type[0]) (P0,P1:A0→A1→Prop) : Prop ≝ - | ex2_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → ex2_2 ? ? ? ? -. - -interpretation "multiple existental quantifier (2, 2)" 'Ex2 P0 P1 = (ex2_2 ? ? P0 P1). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_2_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_2_3.ma deleted file mode 100644 index 580a46ffe..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_2_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_2_3.ma". - -(* multiple existental quantifier (2, 3) *) - -inductive ex2_3 (A0,A1,A2:Type[0]) (P0,P1:A0→A1→A2→Prop) : Prop ≝ - | ex2_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → ex2_3 ? ? ? ? ? -. - -interpretation "multiple existental quantifier (2, 3)" 'Ex3 P0 P1 = (ex2_3 ? ? ? P0 P1). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_1.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_1.ma deleted file mode 100644 index fb9c8e3a7..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_1.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_3_1.ma". - -(* multiple existental quantifier (3, 1) *) - -inductive ex3 (A0:Type[0]) (P0,P1,P2:A0→Prop) : Prop ≝ - | ex3_intro: ∀x0. P0 x0 → P1 x0 → P2 x0 → ex3 ? ? ? ? -. - -interpretation "multiple existental quantifier (3, 1)" 'Ex P0 P1 P2 = (ex3 ? P0 P1 P2). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_2.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_2.ma deleted file mode 100644 index 0319dfbf0..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_2.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_3_2.ma". - -(* multiple existental quantifier (3, 2) *) - -inductive ex3_2 (A0,A1:Type[0]) (P0,P1,P2:A0→A1→Prop) : Prop ≝ - | ex3_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → P2 x0 x1 → ex3_2 ? ? ? ? ? -. - -interpretation "multiple existental quantifier (3, 2)" 'Ex2 P0 P1 P2 = (ex3_2 ? ? P0 P1 P2). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_3.ma deleted file mode 100644 index 8e6226ea5..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_3_3.ma". - -(* multiple existental quantifier (3, 3) *) - -inductive ex3_3 (A0,A1,A2:Type[0]) (P0,P1,P2:A0→A1→A2→Prop) : Prop ≝ - | ex3_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → ex3_3 ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (3, 3)" 'Ex3 P0 P1 P2 = (ex3_3 ? ? ? P0 P1 P2). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_4.ma deleted file mode 100644 index 544127c75..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_3_4.ma". - -(* multiple existental quantifier (3, 4) *) - -inductive ex3_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2:A0→A1→A2→A3→Prop) : Prop ≝ - | ex3_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → ex3_4 ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (3, 4)" 'Ex4 P0 P1 P2 = (ex3_4 ? ? ? ? P0 P1 P2). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_5.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_5.ma deleted file mode 100644 index 3e16b39ce..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_3_5.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_3_5.ma". - -(* multiple existental quantifier (3, 5) *) - -inductive ex3_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2:A0→A1→A2→A3→A4→Prop) : Prop ≝ - | ex3_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → ex3_5 ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (3, 5)" 'Ex5 P0 P1 P2 = (ex3_5 ? ? ? ? ? P0 P1 P2). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_1.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_1.ma deleted file mode 100644 index ca8200d6d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_1.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_4_1.ma". - -(* multiple existental quantifier (4, 1) *) - -inductive ex4 (A0:Type[0]) (P0,P1,P2,P3:A0→Prop) : Prop ≝ - | ex4_intro: ∀x0. P0 x0 → P1 x0 → P2 x0 → P3 x0 → ex4 ? ? ? ? ? -. - -interpretation "multiple existental quantifier (4, 1)" 'Ex P0 P1 P2 P3 = (ex4 ? P0 P1 P2 P3). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_1_props.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_1_props.ma deleted file mode 100644 index 877d462aa..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_1_props.ma +++ /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 "ground_2/xoa/ex_4_1.ma". - -(* Properties with multiple existental quantifier (4, 1) ********************) - -lemma ex4_commute (A0) (P0,P1,P2,P3:A0→Prop): - (∃∃x0. P0 x0 & P1 x0 & P2 x0 & P3 x0) → ∃∃x0. P2 x0 & P3 x0 & P0 x0 & P1 x0. -#A0 #P0 #P1 #P2 #P3 * /2 width=5 by ex4_intro/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_2.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_2.ma deleted file mode 100644 index c0c53c4a5..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_2.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_4_2.ma". - -(* multiple existental quantifier (4, 2) *) - -inductive ex4_2 (A0,A1:Type[0]) (P0,P1,P2,P3:A0→A1→Prop) : Prop ≝ - | ex4_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → P2 x0 x1 → P3 x0 x1 → ex4_2 ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (4, 2)" 'Ex2 P0 P1 P2 P3 = (ex4_2 ? ? P0 P1 P2 P3). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_3.ma deleted file mode 100644 index c50d392b1..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_4_3.ma". - -(* multiple existental quantifier (4, 3) *) - -inductive ex4_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3:A0→A1→A2→Prop) : Prop ≝ - | ex4_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → ex4_3 ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (4, 3)" 'Ex3 P0 P1 P2 P3 = (ex4_3 ? ? ? P0 P1 P2 P3). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_4.ma deleted file mode 100644 index 3d7be9425..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_4_4.ma". - -(* multiple existental quantifier (4, 4) *) - -inductive ex4_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3:A0→A1→A2→A3→Prop) : Prop ≝ - | ex4_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → ex4_4 ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (4, 4)" 'Ex4 P0 P1 P2 P3 = (ex4_4 ? ? ? ? P0 P1 P2 P3). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_5.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_5.ma deleted file mode 100644 index be59183ea..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_4_5.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_4_5.ma". - -(* multiple existental quantifier (4, 5) *) - -inductive ex4_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3:A0→A1→A2→A3→A4→Prop) : Prop ≝ - | ex4_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → ex4_5 ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (4, 5)" 'Ex5 P0 P1 P2 P3 = (ex4_5 ? ? ? ? ? P0 P1 P2 P3). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_1.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_1.ma deleted file mode 100644 index e137f98f8..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_1.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_5_1.ma". - -(* multiple existental quantifier (5, 1) *) - -inductive ex5 (A0:Type[0]) (P0,P1,P2,P3,P4:A0→Prop) : Prop ≝ - | ex5_intro: ∀x0. P0 x0 → P1 x0 → P2 x0 → P3 x0 → P4 x0 → ex5 ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (5, 1)" 'Ex P0 P1 P2 P3 P4 = (ex5 ? P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_2.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_2.ma deleted file mode 100644 index 9a5c63294..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_2.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_5_2.ma". - -(* multiple existental quantifier (5, 2) *) - -inductive ex5_2 (A0,A1:Type[0]) (P0,P1,P2,P3,P4:A0→A1→Prop) : Prop ≝ - | ex5_2_intro: ∀x0,x1. P0 x0 x1 → P1 x0 x1 → P2 x0 x1 → P3 x0 x1 → P4 x0 x1 → ex5_2 ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (5, 2)" 'Ex2 P0 P1 P2 P3 P4 = (ex5_2 ? ? P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_3.ma deleted file mode 100644 index 3b805e3aa..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_5_3.ma". - -(* multiple existental quantifier (5, 3) *) - -inductive ex5_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→Prop) : Prop ≝ - | ex5_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → ex5_3 ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (5, 3)" 'Ex3 P0 P1 P2 P3 P4 = (ex5_3 ? ? ? P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_4.ma deleted file mode 100644 index 21ca1d2b4..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_5_4.ma". - -(* multiple existental quantifier (5, 4) *) - -inductive ex5_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→Prop) : Prop ≝ - | ex5_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → ex5_4 ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (5, 4)" 'Ex4 P0 P1 P2 P3 P4 = (ex5_4 ? ? ? ? P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_5.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_5.ma deleted file mode 100644 index 3f3705768..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_5.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_5_5.ma". - -(* multiple existental quantifier (5, 5) *) - -inductive ex5_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→A4→Prop) : Prop ≝ - | ex5_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → ex5_5 ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (5, 5)" 'Ex5 P0 P1 P2 P3 P4 = (ex5_5 ? ? ? ? ? P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_6.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_6.ma deleted file mode 100644 index 90f6e7726..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_6.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_5_6.ma". - -(* multiple existental quantifier (5, 6) *) - -inductive ex5_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→A4→A5→Prop) : Prop ≝ - | ex5_6_intro: ∀x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 → P1 x0 x1 x2 x3 x4 x5 → P2 x0 x1 x2 x3 x4 x5 → P3 x0 x1 x2 x3 x4 x5 → P4 x0 x1 x2 x3 x4 x5 → ex5_6 ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (5, 6)" 'Ex6 P0 P1 P2 P3 P4 = (ex5_6 ? ? ? ? ? ? P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_7.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_7.ma deleted file mode 100644 index e98221121..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_5_7.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_5_7.ma". - -(* multiple existental quantifier (5, 7) *) - -inductive ex5_7 (A0,A1,A2,A3,A4,A5,A6:Type[0]) (P0,P1,P2,P3,P4:A0→A1→A2→A3→A4→A5→A6→Prop) : Prop ≝ - | ex5_7_intro: ∀x0,x1,x2,x3,x4,x5,x6. P0 x0 x1 x2 x3 x4 x5 x6 → P1 x0 x1 x2 x3 x4 x5 x6 → P2 x0 x1 x2 x3 x4 x5 x6 → P3 x0 x1 x2 x3 x4 x5 x6 → P4 x0 x1 x2 x3 x4 x5 x6 → ex5_7 ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (5, 7)" 'Ex7 P0 P1 P2 P3 P4 = (ex5_7 ? ? ? ? ? ? ? P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_3.ma deleted file mode 100644 index 7e18738b8..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_6_3.ma". - -(* multiple existental quantifier (6, 3) *) - -inductive ex6_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→Prop) : Prop ≝ - | ex6_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → P5 x0 x1 x2 → ex6_3 ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (6, 3)" 'Ex3 P0 P1 P2 P3 P4 P5 = (ex6_3 ? ? ? P0 P1 P2 P3 P4 P5). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_4.ma deleted file mode 100644 index 0af981717..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_6_4.ma". - -(* multiple existental quantifier (6, 4) *) - -inductive ex6_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→Prop) : Prop ≝ - | ex6_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → P5 x0 x1 x2 x3 → ex6_4 ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (6, 4)" 'Ex4 P0 P1 P2 P3 P4 P5 = (ex6_4 ? ? ? ? P0 P1 P2 P3 P4 P5). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_5.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_5.ma deleted file mode 100644 index b3b514d4d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_5.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_6_5.ma". - -(* multiple existental quantifier (6, 5) *) - -inductive ex6_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→Prop) : Prop ≝ - | ex6_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → P5 x0 x1 x2 x3 x4 → ex6_5 ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (6, 5)" 'Ex5 P0 P1 P2 P3 P4 P5 = (ex6_5 ? ? ? ? ? P0 P1 P2 P3 P4 P5). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_6.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_6.ma deleted file mode 100644 index 52c336134..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_6.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_6_6.ma". - -(* multiple existental quantifier (6, 6) *) - -inductive ex6_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→Prop) : Prop ≝ - | ex6_6_intro: ∀x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 → P1 x0 x1 x2 x3 x4 x5 → P2 x0 x1 x2 x3 x4 x5 → P3 x0 x1 x2 x3 x4 x5 → P4 x0 x1 x2 x3 x4 x5 → P5 x0 x1 x2 x3 x4 x5 → ex6_6 ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (6, 6)" 'Ex6 P0 P1 P2 P3 P4 P5 = (ex6_6 ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_7.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_7.ma deleted file mode 100644 index d2ba5eef3..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_7.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_6_7.ma". - -(* multiple existental quantifier (6, 7) *) - -inductive ex6_7 (A0,A1,A2,A3,A4,A5,A6:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→A6→Prop) : Prop ≝ - | ex6_7_intro: ∀x0,x1,x2,x3,x4,x5,x6. P0 x0 x1 x2 x3 x4 x5 x6 → P1 x0 x1 x2 x3 x4 x5 x6 → P2 x0 x1 x2 x3 x4 x5 x6 → P3 x0 x1 x2 x3 x4 x5 x6 → P4 x0 x1 x2 x3 x4 x5 x6 → P5 x0 x1 x2 x3 x4 x5 x6 → ex6_7 ? ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (6, 7)" 'Ex7 P0 P1 P2 P3 P4 P5 = (ex6_7 ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_8.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_8.ma deleted file mode 100644 index e37883be1..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_8.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_6_8.ma". - -(* multiple existental quantifier (6, 8) *) - -inductive ex6_8 (A0,A1,A2,A3,A4,A5,A6,A7:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→A6→A7→Prop) : Prop ≝ - | ex6_8_intro: ∀x0,x1,x2,x3,x4,x5,x6,x7. P0 x0 x1 x2 x3 x4 x5 x6 x7 → P1 x0 x1 x2 x3 x4 x5 x6 x7 → P2 x0 x1 x2 x3 x4 x5 x6 x7 → P3 x0 x1 x2 x3 x4 x5 x6 x7 → P4 x0 x1 x2 x3 x4 x5 x6 x7 → P5 x0 x1 x2 x3 x4 x5 x6 x7 → ex6_8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (6, 8)" 'Ex8 P0 P1 P2 P3 P4 P5 = (ex6_8 ? ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_9.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_9.ma deleted file mode 100644 index 9ee06cdc2..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_6_9.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_6_9.ma". - -(* multiple existental quantifier (6, 9) *) - -inductive ex6_9 (A0,A1,A2,A3,A4,A5,A6,A7,A8:Type[0]) (P0,P1,P2,P3,P4,P5:A0→A1→A2→A3→A4→A5→A6→A7→A8→Prop) : Prop ≝ - | ex6_9_intro: ∀x0,x1,x2,x3,x4,x5,x6,x7,x8. P0 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P1 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P2 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P3 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P4 x0 x1 x2 x3 x4 x5 x6 x7 x8 → P5 x0 x1 x2 x3 x4 x5 x6 x7 x8 → ex6_9 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (6, 9)" 'Ex9 P0 P1 P2 P3 P4 P5 = (ex6_9 ? ? ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_10.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_10.ma deleted file mode 100644 index 263c6e04b..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_10.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_7_10.ma". - -(* multiple existental quantifier (7, 10) *) - -inductive ex7_10 (A0,A1,A2,A3,A4,A5,A6,A7,A8,A9:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→A5→A6→A7→A8→A9→Prop) : Prop ≝ - | ex7_10_intro: ∀x0,x1,x2,x3,x4,x5,x6,x7,x8,x9. P0 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P1 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P2 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P3 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P4 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P5 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → P6 x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 → ex7_10 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (7, 10)" 'Ex10 P0 P1 P2 P3 P4 P5 P6 = (ex7_10 ? ? ? ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_3.ma deleted file mode 100644 index 582b06cab..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_7_3.ma". - -(* multiple existental quantifier (7, 3) *) - -inductive ex7_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→Prop) : Prop ≝ - | ex7_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → P5 x0 x1 x2 → P6 x0 x1 x2 → ex7_3 ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (7, 3)" 'Ex3 P0 P1 P2 P3 P4 P5 P6 = (ex7_3 ? ? ? P0 P1 P2 P3 P4 P5 P6). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_4.ma deleted file mode 100644 index f1bbb932d..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_7_4.ma". - -(* multiple existental quantifier (7, 4) *) - -inductive ex7_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→Prop) : Prop ≝ - | ex7_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → P5 x0 x1 x2 x3 → P6 x0 x1 x2 x3 → ex7_4 ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (7, 4)" 'Ex4 P0 P1 P2 P3 P4 P5 P6 = (ex7_4 ? ? ? ? P0 P1 P2 P3 P4 P5 P6). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_5.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_5.ma deleted file mode 100644 index 85ee3b4ca..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_5.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_7_5.ma". - -(* multiple existental quantifier (7, 5) *) - -inductive ex7_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→Prop) : Prop ≝ - | ex7_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → P5 x0 x1 x2 x3 x4 → P6 x0 x1 x2 x3 x4 → ex7_5 ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (7, 5)" 'Ex5 P0 P1 P2 P3 P4 P5 P6 = (ex7_5 ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_6.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_6.ma deleted file mode 100644 index 3e3b4777e..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_6.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_7_6.ma". - -(* multiple existental quantifier (7, 6) *) - -inductive ex7_6 (A0,A1,A2,A3,A4,A5:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→A5→Prop) : Prop ≝ - | ex7_6_intro: ∀x0,x1,x2,x3,x4,x5. P0 x0 x1 x2 x3 x4 x5 → P1 x0 x1 x2 x3 x4 x5 → P2 x0 x1 x2 x3 x4 x5 → P3 x0 x1 x2 x3 x4 x5 → P4 x0 x1 x2 x3 x4 x5 → P5 x0 x1 x2 x3 x4 x5 → P6 x0 x1 x2 x3 x4 x5 → ex7_6 ? ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (7, 6)" 'Ex6 P0 P1 P2 P3 P4 P5 P6 = (ex7_6 ? ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_7.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_7.ma deleted file mode 100644 index 51e99a0cd..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_7_7.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_7_7.ma". - -(* multiple existental quantifier (7, 7) *) - -inductive ex7_7 (A0,A1,A2,A3,A4,A5,A6:Type[0]) (P0,P1,P2,P3,P4,P5,P6:A0→A1→A2→A3→A4→A5→A6→Prop) : Prop ≝ - | ex7_7_intro: ∀x0,x1,x2,x3,x4,x5,x6. P0 x0 x1 x2 x3 x4 x5 x6 → P1 x0 x1 x2 x3 x4 x5 x6 → P2 x0 x1 x2 x3 x4 x5 x6 → P3 x0 x1 x2 x3 x4 x5 x6 → P4 x0 x1 x2 x3 x4 x5 x6 → P5 x0 x1 x2 x3 x4 x5 x6 → P6 x0 x1 x2 x3 x4 x5 x6 → ex7_7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (7, 7)" 'Ex7 P0 P1 P2 P3 P4 P5 P6 = (ex7_7 ? ? ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_8_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_8_4.ma deleted file mode 100644 index 489c1f9e7..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_8_4.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_8_4.ma". - -(* multiple existental quantifier (8, 4) *) - -inductive ex8_4 (A0,A1,A2,A3:Type[0]) (P0,P1,P2,P3,P4,P5,P6,P7:A0→A1→A2→A3→Prop) : Prop ≝ - | ex8_4_intro: ∀x0,x1,x2,x3. P0 x0 x1 x2 x3 → P1 x0 x1 x2 x3 → P2 x0 x1 x2 x3 → P3 x0 x1 x2 x3 → P4 x0 x1 x2 x3 → P5 x0 x1 x2 x3 → P6 x0 x1 x2 x3 → P7 x0 x1 x2 x3 → ex8_4 ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (8, 4)" 'Ex4 P0 P1 P2 P3 P4 P5 P6 P7 = (ex8_4 ? ? ? ? P0 P1 P2 P3 P4 P5 P6 P7). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_8_5.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_8_5.ma deleted file mode 100644 index 145d8c2b8..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_8_5.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_8_5.ma". - -(* multiple existental quantifier (8, 5) *) - -inductive ex8_5 (A0,A1,A2,A3,A4:Type[0]) (P0,P1,P2,P3,P4,P5,P6,P7:A0→A1→A2→A3→A4→Prop) : Prop ≝ - | ex8_5_intro: ∀x0,x1,x2,x3,x4. P0 x0 x1 x2 x3 x4 → P1 x0 x1 x2 x3 x4 → P2 x0 x1 x2 x3 x4 → P3 x0 x1 x2 x3 x4 → P4 x0 x1 x2 x3 x4 → P5 x0 x1 x2 x3 x4 → P6 x0 x1 x2 x3 x4 → P7 x0 x1 x2 x3 x4 → ex8_5 ? ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (8, 5)" 'Ex5 P0 P1 P2 P3 P4 P5 P6 P7 = (ex8_5 ? ? ? ? ? P0 P1 P2 P3 P4 P5 P6 P7). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_9_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_9_3.ma deleted file mode 100644 index fd300b4cc..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/ex_9_3.ma +++ /dev/null @@ -1,28 +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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/ex_9_3.ma". - -(* multiple existental quantifier (9, 3) *) - -inductive ex9_3 (A0,A1,A2:Type[0]) (P0,P1,P2,P3,P4,P5,P6,P7,P8:A0→A1→A2→Prop) : Prop ≝ - | ex9_3_intro: ∀x0,x1,x2. P0 x0 x1 x2 → P1 x0 x1 x2 → P2 x0 x1 x2 → P3 x0 x1 x2 → P4 x0 x1 x2 → P5 x0 x1 x2 → P6 x0 x1 x2 → P7 x0 x1 x2 → P8 x0 x1 x2 → ex9_3 ? ? ? ? ? ? ? ? ? ? ? ? -. - -interpretation "multiple existental quantifier (9, 3)" 'Ex3 P0 P1 P2 P3 P4 P5 P6 P7 P8 = (ex9_3 ? ? ? P0 P1 P2 P3 P4 P5 P6 P7 P8). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/or_3.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/or_3.ma deleted file mode 100644 index 091c27615..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/or_3.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/or_3.ma". - -(* multiple disjunction connective (3) *) - -inductive or3 (P0,P1,P2:Prop) : Prop ≝ - | or3_intro0: P0 → or3 ? ? ? - | or3_intro1: P1 → or3 ? ? ? - | or3_intro2: P2 → or3 ? ? ? -. - -interpretation "multiple disjunction connective (3)" 'Or P0 P1 P2 = (or3 P0 P1 P2). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/or_4.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/or_4.ma deleted file mode 100644 index 920df9cf7..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/or_4.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/or_4.ma". - -(* multiple disjunction connective (4) *) - -inductive or4 (P0,P1,P2,P3:Prop) : Prop ≝ - | or4_intro0: P0 → or4 ? ? ? ? - | or4_intro1: P1 → or4 ? ? ? ? - | or4_intro2: P2 → or4 ? ? ? ? - | or4_intro3: P3 → or4 ? ? ? ? -. - -interpretation "multiple disjunction connective (4)" 'Or P0 P1 P2 P3 = (or4 P0 P1 P2 P3). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/xoa/or_5.ma b/matita/matita/contribs/lambdadelta/ground_2/xoa/or_5.ma deleted file mode 100644 index 7ff89c3e7..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/xoa/or_5.ma +++ /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 *) -(* *) -(**************************************************************************) - -(* This file was generated by xoa.native: do not edit *********************) - -include "basics/pts.ma". - -include "ground_2/notation/xoa/or_5.ma". - -(* multiple disjunction connective (5) *) - -inductive or5 (P0,P1,P2,P3,P4:Prop) : Prop ≝ - | or5_intro0: P0 → or5 ? ? ? ? ? - | or5_intro1: P1 → or5 ? ? ? ? ? - | or5_intro2: P2 → or5 ? ? ? ? ? - | or5_intro3: P3 → or5 ? ? ? ? ? - | or5_intro4: P4 → or5 ? ? ? ? ? -. - -interpretation "multiple disjunction connective (5)" 'Or P0 P1 P2 P3 P4 = (or5 P0 P1 P2 P3 P4). - diff --git a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat.ma b/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat.ma deleted file mode 100644 index 4f3f85bb9..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat.ma +++ /dev/null @@ -1,42 +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/lib/arith.ma". -include "ground_2/notation/functions/infinity_0.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* the type of natural numbers with infinity *) -inductive ynat: Type[0] ≝ -| yinj: nat → ynat -| Y : ynat -. - -coercion yinj. - -interpretation "ynat infinity" 'Infinity = Y. - -(* Inversion lemmas *********************************************************) - -lemma yinj_inj: ∀m,n. yinj m = yinj n → m = n. -#m #n #H destruct // -qed-. - -(* Basic properties *********************************************************) - -lemma eq_ynat_dec: ∀n1,n2:ynat. Decidable (n1 = n2). -* [ #n1 ] * [1,3: #n2 ] /2 width=1 by or_introl/ -[2,3: @or_intror #H destruct ] -elim (eq_nat_dec n1 n2) /4 width=1 by yinj_inj, or_intror, or_introl/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_le.ma b/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_le.ma deleted file mode 100644 index 54e946e96..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_le.ma +++ /dev/null @@ -1,155 +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/ynat/ynat_succ.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* order relation *) -inductive yle: relation ynat ≝ -| yle_inj: ∀m,n. m ≤ n → yle m n -| yle_Y : ∀m. yle m (∞) -. - -interpretation "ynat 'less or equal to'" 'leq x y = (yle x y). - -(* Basic inversion lemmas ***************************************************) - -fact yle_inv_inj2_aux: ∀x,y. x ≤ y → ∀n. y = yinj n → - ∃∃m. m ≤ n & x = yinj m. -#x #y * -x -y -[ #x #y #Hxy #n #Hy destruct /2 width=3 by ex2_intro/ -| #x #n #Hy destruct -] -qed-. - -lemma yle_inv_inj2: ∀x,n. x ≤ yinj n → ∃∃m. m ≤ n & x = yinj m. -/2 width=3 by yle_inv_inj2_aux/ qed-. - -lemma yle_inv_inj: ∀m,n. yinj m ≤ yinj n → m ≤ n. -#m #n #H elim (yle_inv_inj2 … H) -H -#x #Hxn #H destruct // -qed-. - -fact yle_inv_O2_aux: ∀m:ynat. ∀x:ynat. m ≤ x → x = 0 → m = 0. -#m #x * -m -x -[ #m #n #Hmn #H destruct /3 width=1 by le_n_O_to_eq, eq_f/ -| #m #H destruct -] -qed-. - -lemma yle_inv_O2: ∀m:ynat. m ≤ 0 → m = 0. -/2 width =3 by yle_inv_O2_aux/ qed-. - -fact yle_inv_Y1_aux: ∀x,n. x ≤ n → x = ∞ → n = ∞. -#x #n * -x -n // -#x #n #_ #H destruct -qed-. - -lemma yle_inv_Y1: ∀n. ∞ ≤ n → n = ∞. -/2 width=3 by yle_inv_Y1_aux/ qed-. - -lemma yle_antisym: ∀y,x. x ≤ y → y ≤ x → x = y. -#x #y #H elim H -x -y -/4 width=1 by yle_inv_Y1, yle_inv_inj, le_to_le_to_eq, eq_f/ -qed-. - -(* Basic properties *********************************************************) - -lemma le_O1: ∀n:ynat. 0 ≤ n. -* /2 width=1 by yle_inj/ -qed. - -lemma yle_refl: reflexive … yle. -* /2 width=1 by le_n, yle_inj/ -qed. - -lemma yle_split: ∀x,y:ynat. x ≤ y ∨ y ≤ x. -* /2 width=1 by or_intror/ -#x * /2 width=1 by or_introl/ -#y elim (le_or_ge x y) /3 width=1 by yle_inj, or_introl, or_intror/ -qed-. - -(* Inversion lemmas on successor ********************************************) - -fact yle_inv_succ1_aux: ∀x,y:ynat. x ≤ y → ∀m. x = ↑m → m ≤ ↓y ∧ ↑↓y = y. -#x #y * -x -y -[ #x #y #Hxy #m #H elim (ysucc_inv_inj_sn … H) -H - #n #H1 #H2 destruct elim (le_inv_S1 … Hxy) -Hxy - #m #Hnm #H destruct /3 width=1 by yle_inj, conj/ -| #x #y #H destruct /2 width=1 by yle_Y, conj/ -] -qed-. - -lemma yle_inv_succ1: ∀m,y:ynat. ↑m ≤ y → m ≤ ↓y ∧ ↑↓y = y. -/2 width=3 by yle_inv_succ1_aux/ qed-. - -lemma yle_inv_succ: ∀m,n. ↑m ≤ ↑n → m ≤ n. -#m #n #H elim (yle_inv_succ1 … H) -H // -qed-. - -lemma yle_inv_succ2: ∀x,y. x ≤ ↑y → ↓x ≤ y. -#x #y #Hxy elim (ynat_cases x) -[ #H destruct // -| * #m #H destruct /2 width=1 by yle_inv_succ/ -] -qed-. - -(* Properties on predecessor ************************************************) - -lemma yle_pred_sn: ∀m,n. m ≤ n → ↓m ≤ n. -#m #n * -m -n /3 width=3 by transitive_le, yle_inj/ -qed. - -lemma yle_refl_pred_sn: ∀x. ↓x ≤ x. -/2 width=1 by yle_refl, yle_pred_sn/ qed. - -lemma yle_pred: ∀m,n. m ≤ n → ↓m ≤ ↓n. -#m #n * -m -n /3 width=1 by yle_inj, monotonic_pred/ -qed. - -(* Properties on successor **************************************************) - -lemma yle_succ: ∀m,n. m ≤ n → ↑m ≤ ↑n. -#m #n * -m -n /3 width=1 by yle_inj, le_S_S/ -qed. - -lemma yle_succ_dx: ∀m,n. m ≤ n → m ≤ ↑n. -#m #n * -m -n /3 width=1 by le_S, yle_inj/ -qed. - -lemma yle_refl_S_dx: ∀x. x ≤ ↑x. -/2 width=1 by yle_succ_dx/ qed. - -lemma yle_refl_SP_dx: ∀x. x ≤ ↑↓x. -* // * // -qed. - -lemma yle_succ2: ∀x,y. ↓x ≤ y → x ≤ ↑y. -#x #y #Hxy elim (ynat_cases x) -[ #H destruct // -| * #m #H destruct /2 width=1 by yle_succ/ -] -qed-. - -(* Main properties **********************************************************) - -theorem yle_trans: Transitive … yle. -#x #y * -x -y -[ #x #y #Hxy * // - #z #H lapply (yle_inv_inj … H) -H - /3 width=3 by transitive_le, yle_inj/ (**) (* full auto too slow *) -| #x #z #H lapply (yle_inv_Y1 … H) // -] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_lt.ma b/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_lt.ma deleted file mode 100644 index 5a1bb14dd..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_lt.ma +++ /dev/null @@ -1,271 +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/ynat/ynat_le.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* strict order relation *) -inductive ylt: relation ynat ≝ -| ylt_inj: ∀m,n. m < n → ylt m n -| ylt_Y : ∀m:nat. ylt m (∞) -. - -interpretation "ynat 'less than'" 'lt x y = (ylt x y). - -(* Basic forward lemmas *****************************************************) - -lemma ylt_fwd_gen: ∀x,y. x < y → ∃m. x = yinj m. -#x #y * -x -y /2 width=2 by ex_intro/ -qed-. - -lemma ylt_fwd_lt_O1: ∀x,y:ynat. x < y → 0 < y. -#x #y #H elim H -x -y /3 width=2 by ylt_inj, ltn_to_ltO/ -qed-. - -(* Basic inversion lemmas ***************************************************) - -fact ylt_inv_inj2_aux: ∀x,y. x < y → ∀n. y = yinj n → - ∃∃m. m < n & x = yinj m. -#x #y * -x -y -[ #x #y #Hxy #n #Hy elim (le_inv_S1 … Hxy) -Hxy - #m #Hm #H destruct /3 width=3 by le_S_S, ex2_intro/ -| #x #n #Hy destruct -] -qed-. - -lemma ylt_inv_inj2: ∀x,n. x < yinj n → - ∃∃m. m < n & x = yinj m. -/2 width=3 by ylt_inv_inj2_aux/ qed-. - -lemma ylt_inv_inj: ∀m,n. yinj m < yinj n → m < n. -#m #n #H elim (ylt_inv_inj2 … H) -H -#x #Hx #H destruct // -qed-. - -lemma ylt_inv_Y1: ∀n. ∞ < n → ⊥. -#n #H elim (ylt_fwd_gen … H) -H -#y #H destruct -qed-. - -lemma ylt_inv_Y2: ∀x:ynat. x < ∞ → ∃n. x = yinj n. -* /2 width=2 by ex_intro/ -#H elim (ylt_inv_Y1 … H) -qed-. - -lemma ylt_inv_O1: ∀n:ynat. 0 < n → ↑↓n = n. -* // #n #H lapply (ylt_inv_inj … H) -H normalize -/3 width=1 by S_pred, eq_f/ -qed-. - -(* Inversion lemmas on successor ********************************************) - -fact ylt_inv_succ1_aux: ∀x,y:ynat. x < y → ∀m. x = ↑m → m < ↓y ∧ ↑↓y = y. -#x #y * -x -y -[ #x #y #Hxy #m #H elim (ysucc_inv_inj_sn … H) -H - #n #H1 #H2 destruct elim (le_inv_S1 … Hxy) -Hxy - #m #Hnm #H destruct /3 width=1 by ylt_inj, conj/ -| #x #y #H elim (ysucc_inv_inj_sn … H) -H - #m #H #_ destruct /2 width=1 by ylt_Y, conj/ -] -qed-. - -lemma ylt_inv_succ1: ∀m,y:ynat. ↑m < y → m < ↓y ∧ ↑↓y = y. -/2 width=3 by ylt_inv_succ1_aux/ qed-. - -lemma ylt_inv_succ: ∀m,n. ↑m < ↑n → m < n. -#m #n #H elim (ylt_inv_succ1 … H) -H // -qed-. - -(* Forward lemmas on successor **********************************************) - -fact ylt_fwd_succ2_aux: ∀x,y. x < y → ∀n. y = ↑n → x ≤ n. -#x #y * -x -y -[ #x #y #Hxy #m #H elim (ysucc_inv_inj_sn … H) -H - #n #H1 #H2 destruct /3 width=1 by yle_inj, le_S_S_to_le/ -| #x #n #H lapply (ysucc_inv_Y_sn … H) -H // -] -qed-. - -lemma ylt_fwd_succ2: ∀m,n. m < ↑n → m ≤ n. -/2 width=3 by ylt_fwd_succ2_aux/ qed-. - -(* inversion and forward lemmas on order ************************************) - -lemma ylt_fwd_le_succ1: ∀m,n. m < n → ↑m ≤ n. -#m #n * -m -n /2 width=1 by yle_inj/ -qed-. - -lemma ylt_fwd_le_pred2: ∀x,y:ynat. x < y → x ≤ ↓y. -#x #y #H elim H -x -y /3 width=1 by yle_inj, monotonic_pred/ -qed-. - -lemma ylt_fwd_le: ∀m:ynat. ∀n:ynat. m < n → m ≤ n. -#m #n * -m -n /3 width=1 by lt_to_le, yle_inj/ -qed-. - -lemma ylt_yle_false: ∀m:ynat. ∀n:ynat. m < n → n ≤ m → ⊥. -#m #n * -m -n -[ #m #n #Hmn #H lapply (yle_inv_inj … H) -H - #H elim (lt_refl_false n) /2 width=3 by le_to_lt_to_lt/ -| #m #H lapply (yle_inv_Y1 … H) -H - #H destruct -] -qed-. - -lemma ylt_inv_le: ∀x,y. x < y → x < ∞ ∧ ↑x ≤ y. -#x #y #H elim H -x -y /3 width=1 by yle_inj, conj/ -qed-. - -(* Basic properties *********************************************************) - -lemma ylt_O1: ∀x:ynat. ↑↓x = x → 0 < x. -* // * /2 width=1 by ylt_inj/ normalize -#H destruct -qed. - -lemma yle_inv_succ_sn_lt (x:ynat) (y:ynat): - ↑x ≤ y → ∧∧ x ≤ ↓y & 0 < y. -#x #y #H elim (yle_inv_succ1 … H) -H /3 width=2 by ylt_O1, conj/ -qed-. - -(* Properties on predecessor ************************************************) - -lemma ylt_pred: ∀m,n:ynat. m < n → 0 < m → ↓m < ↓n. -#m #n * -m -n -/4 width=1 by ylt_inv_inj, ylt_inj, monotonic_lt_pred/ -qed. - -(* Properties on successor **************************************************) - -lemma ylt_O_succ: ∀x:ynat. 0 < ↑x. -* /2 width=1 by ylt_inj/ -qed. - -lemma ylt_succ: ∀m,n. m < n → ↑m < ↑n. -#m #n #H elim H -m -n /3 width=1 by ylt_inj, le_S_S/ -qed. - -lemma ylt_succ_Y: ∀x. x < ∞ → ↑x < ∞. -* /2 width=1 by/ qed. - -lemma yle_succ1_inj: ∀x. ∀y:ynat. ↑yinj x ≤ y → x < y. -#x * /3 width=1 by yle_inv_inj, ylt_inj/ -qed. - -lemma ylt_succ2_refl: ∀x,y:ynat. x < y → x < ↑x. -#x #y #H elim (ylt_fwd_gen … H) -y /2 width=1 by ylt_inj/ -qed. - -(* Properties on order ******************************************************) - -lemma yle_split_eq: ∀m,n:ynat. m ≤ n → m < n ∨ m = n. -#m #n * -m -n -[ #m #n #Hmn elim (le_to_or_lt_eq … Hmn) -Hmn - /3 width=1 by or_introl, ylt_inj/ -| * /2 width=1 by or_introl, ylt_Y/ -] -qed-. - -lemma ylt_split: ∀m,n:ynat. m < n ∨ n ≤ m. -#m #n elim (yle_split m n) /2 width=1 by or_intror/ -#H elim (yle_split_eq … H) -H /2 width=1 by or_introl, or_intror/ -qed-. - -lemma ylt_split_eq: ∀m,n:ynat. ∨∨ m < n | n = m | n < m. -#m #n elim (ylt_split m n) /2 width=1 by or3_intro0/ -#H elim (yle_split_eq … H) -H /2 width=1 by or3_intro1, or3_intro2/ -qed-. - -lemma ylt_yle_trans: ∀x:ynat. ∀y:ynat. ∀z:ynat. y ≤ z → x < y → x < z. -#x #y #z * -y -z -[ #y #z #Hyz #H elim (ylt_inv_inj2 … H) -H - #m #Hm #H destruct /3 width=3 by ylt_inj, lt_to_le_to_lt/ -| #y * // -] -qed-. - -lemma yle_ylt_trans: ∀x:ynat. ∀y:ynat. ∀z:ynat. y < z → x ≤ y → x < z. -#x #y #z * -y -z -[ #y #z #Hyz #H elim (yle_inv_inj2 … H) -H - #m #Hm #H destruct /3 width=3 by ylt_inj, le_to_lt_to_lt/ -| #y #H elim (yle_inv_inj2 … H) -H // -] -qed-. - -lemma le_ylt_trans (x) (y) (z): x ≤ y → yinj y < z → yinj x < z. -/3 width=3 by yle_ylt_trans, yle_inj/ -qed-. - -lemma yle_inv_succ1_lt: ∀x,y:ynat. ↑x ≤ y → 0 < y ∧ x ≤ ↓y. -#x #y #H elim (yle_inv_succ1 … H) -H /3 width=1 by ylt_O1, conj/ -qed-. - -lemma yle_lt: ∀x,y. x < ∞ → ↑x ≤ y → x < y. -#x * // #y #H elim (ylt_inv_Y2 … H) -H #n #H destruct -/3 width=1 by ylt_inj, yle_inv_inj/ -qed-. - -(* Main properties **********************************************************) - -theorem ylt_trans: Transitive … ylt. -#x #y * -x -y -[ #x #y #Hxy * // - #z #H lapply (ylt_inv_inj … H) -H - /3 width=3 by transitive_lt, ylt_inj/ (**) (* full auto too slow *) -| #x #z #H elim (ylt_yle_false … H) // -] -qed-. - -lemma lt_ylt_trans (x) (y) (z): x < y → yinj y < z → yinj x < z. -/3 width=3 by ylt_trans, ylt_inj/ -qed-. - -(* Elimination principles ***************************************************) - -fact ynat_ind_lt_le_aux: ∀R:predicate ynat. - (∀y. (∀x. x < y → R x) → R y) → - ∀y:nat. ∀x. x ≤ y → R x. -#R #IH #y elim y -y -[ #x #H >(yle_inv_O2 … H) -x - @IH -IH #x #H elim (ylt_yle_false … H) -H // -| /5 width=3 by ylt_yle_trans, ylt_fwd_succ2/ -] -qed-. - -fact ynat_ind_lt_aux: ∀R:predicate ynat. - (∀y. (∀x. x < y → R x) → R y) → - ∀y:nat. R y. -/4 width=2 by ynat_ind_lt_le_aux/ qed-. - -lemma ynat_ind_lt: ∀R:predicate ynat. - (∀y. (∀x. x < y → R x) → R y) → - ∀y. R y. -#R #IH * /4 width=1 by ynat_ind_lt_aux/ -@IH #x #H elim (ylt_inv_Y2 … H) -H -#n #H destruct /4 width=1 by ynat_ind_lt_aux/ -qed-. - -fact ynat_f_ind_aux: ∀A. ∀f:A→ynat. ∀R:predicate A. - (∀x. (∀a. f a < x → R a) → ∀a. f a = x → R a) → - ∀x,a. f a = x → R a. -#A #f #R #IH #x @(ynat_ind_lt … x) -x -/3 width=3 by/ -qed-. - -lemma ynat_f_ind: ∀A. ∀f:A→ynat. ∀R:predicate A. - (∀x. (∀a. f a < x → R a) → ∀a. f a = x → R a) → ∀a. R a. -#A #f #R #IH #a -@(ynat_f_ind_aux … IH) -IH [2: // | skip ] -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_minus_sn.ma b/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_minus_sn.ma deleted file mode 100644 index 8b6f79602..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_minus_sn.ma +++ /dev/null @@ -1,221 +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/ynat/ynat_plus.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* left subtraction *) -definition yminus_sn (x) (y): ynat ≝ ypred^y x. - -interpretation "ynat left minus" 'minus x y = (yminus_sn x y). - -lemma yminus_O2: ∀m:ynat. m - 0 = m. -// qed. - -lemma yminus_S2: ∀m:ynat. ∀n:nat. m - S n = ↓(m - n). -// qed. - -(* Basic properties *********************************************************) - -lemma yminus_inj: ∀m,n. yinj m - n = yinj (m - n). -#m #n elim n -n // -#n #IH >yminus_S2 >IH -IH >eq_minus_S_pred // -qed. - -lemma yminus_Y_inj: ∀n. ∞ - n = ∞. -#n elim n -n // -qed. - -lemma yminus_O1: ∀x:nat. yinj 0 - x = 0. -// qed. - -lemma yminus_refl: ∀x:nat. yinj x - x = 0. -// qed. - -lemma yminus_minus_comm: ∀x:ynat. ∀y,z. x - y - z = x - z - y. -* // qed. - -(* Properties on predecessor ************************************************) - -lemma yminus_SO2: ∀m:ynat. m - 1 = ↓m. -// qed. - -lemma yminus_pred1: ∀x,y. ↓x - y = ↓(x-y). -#x * // #y elim y -y // -qed. - -lemma yminus_pred: ∀m:ynat. ∀n. 0 < m → 0 < n → ↓m - ↓n = m - n. -* // #m #n >yminus_inj >yminus_inj -/4 width=1 by ylt_inv_inj, minus_pred_pred, eq_f/ -qed-. - -(* Properties on successor **************************************************) - -lemma yminus_succ: ∀m:ynat. ∀n. ↑m - ↑n = m - n. -* // qed. - -lemma yminus_succ1_inj: ∀n:nat. ∀m:ynat. n ≤ m → ↑m - n = ↑(m - n). -#n * -[ #m #Hmn >yminus_inj >yminus_inj - /4 width=1 by yle_inv_inj, plus_minus, eq_f/ -| >yminus_Y_inj // -] -qed-. - -lemma yminus_succ2: ∀x:ynat. ∀y. x - ↑y = ↓(x-y). -* // -qed. - -(* Properties on order ******************************************************) - -lemma yle_minus_sn: ∀m:ynat. ∀n. m - n ≤ m. -* // #n /2 width=1 by yle_inj/ -qed. - -lemma yle_to_minus: ∀m:ynat. ∀n:nat. m ≤ n → m - n = 0. -* -[ #m #n #H >yminus_inj /4 width=1 by yle_inv_inj, eq_minus_O, eq_f/ -| #n #H lapply (yle_inv_Y1 … H) -H #H destruct -] -qed-. - -lemma yminus_to_le: ∀m:ynat. ∀n. m - n = 0 → m ≤ n. -* [2: #n >yminus_Y_inj #H destruct ] -#m #n >yminus_inj #H -lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) -/2 width=1 by yle_inj/ -qed. - -lemma monotonic_yle_minus_dx: ∀x,y. x ≤ y → ∀z. x - z ≤ y - z. -#x #y * /3 width=1 by yle_inj, monotonic_le_minus_l2/ -qed. - -(* Properties on strict order ***********************************************) - -lemma ylt_to_minus: ∀y:ynat. ∀x. yinj x < y → 0 < y - x. -* // #y #x #H >yminus_inj -/4 width=1 by ylt_inj, ylt_inv_inj, lt_plus_to_minus_r/ -qed. - -lemma yminus_to_lt: ∀y:ynat. ∀x. 0 < y - x → x < y. -* // #y #x >yminus_inj #H -/4 width=1 by ylt_inv_inj, ylt_inj, lt_minus_to_plus_r/ -qed-. - -lemma monotonic_ylt_minus_dx: ∀x,y:ynat. x < y → ∀z:nat. z ≤ x → x - z < y - z. -#x #y * -x -y -/4 width=1 by ylt_inj, yle_inv_inj, monotonic_lt_minus_l/ -qed. - -(* Properties on minus ******************************************************) - -lemma yplus_minus: ∀m:ynat. ∀n:nat. m + n - n = m. -#m #n elim n -n // -#n #IHn >(yplus_succ2 m n) >(yminus_succ … n) // -qed. - -lemma yminus_plus2: ∀x:ynat. ∀y,z. x - (y + z) = x - y - z. -* // qed. - -(* Forward lemmas on minus **************************************************) - -lemma yle_plus1_to_minus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y. -#x #z #y #H lapply (monotonic_yle_minus_dx … H y) -H // -qed-. - -lemma yle_plus1_to_minus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y. -/2 width=1 by yle_plus1_to_minus_inj2/ qed-. - -lemma yle_plus2_to_minus_inj2: ∀x,y:ynat. ∀z:nat. x ≤ y + z → x - z ≤ y. -/2 width=1 by monotonic_yle_minus_dx/ qed-. - -lemma yle_plus2_to_minus_inj1: ∀x,y:ynat. ∀z:nat. x ≤ z + y → x - z ≤ y. -/2 width=1 by yle_plus2_to_minus_inj2/ qed-. - -lemma yminus_plus (x:ynat) (y:nat): y ≤ x → x = (x-y)+y. -* // #x #y #H >yminus_inj >yplus_inj -/4 width=1 by yle_inv_inj, plus_minus, eq_f/ -qed-. - -lemma yplus_minus_assoc_inj: ∀x:nat. ∀y,z:ynat. x ≤ y → z + (y - x) = z + y - x. -#x * -[ #y * // #z >yminus_inj >yplus_inj >yplus_inj - /4 width=1 by yle_inv_inj, plus_minus, eq_f/ -| >yminus_Y_inj // -] -qed-. - -alias symbol "plus" (instance 5) = "ynat plus". -alias symbol "minus" (instance 4) = "ynat left minus". -alias symbol "minus" (instance 3) = "natural minus". -alias symbol "minus" (instance 2) = "ynat left minus". -alias symbol "leq" (instance 6) = "natural 'less or equal to'". -lemma yplus_minus_assoc_comm_inj: ∀z:ynat. ∀x,y:nat. x ≤ y → z - (y - x) = z + x - y. -* // #z #x #y >yminus_inj >yplus_inj >yminus_inj -/4 width=1 by yle_inv_inj, minus_le_minus_minus_comm, eq_f/ -qed-. - -lemma yplus_minus_comm_inj: ∀y:nat. ∀x,z:ynat. y ≤ x → x + z - y = x - y + z. -#y * // #x * // -#z #Hxy >yplus_inj >yminus_inj yplus_inj #H destruct -qed-. - -lemma yplus_inv_minus: - ∀x1,y2:ynat.∀y1,x2:nat. - y1 ≤ x1 → x1 + x2 = y2 + y1 → ∧∧ x1 - y1 = y2 - x2 & x2 ≤ y2. -* -[ #x1 * [| #y1 #x2 #_ >yplus_inj >yplus_Y1 #H destruct ] - #y2 #y1 #x2 #H1 >yplus_inj >yplus_inj #H2 >yminus_inj >yminus_inj - lapply (yle_inv_inj … H1) -H1 #Hyx1 - lapply (yinj_inj … H2) -H2 #Hxy (**) (* destruct lemma needed *) - /5 width=4 by yle_inj, plus2_le_sn_sn, plus_to_minus_2, conj, eq_f2/ -| #y2 #y1 #x2 #_ >yplus_Y1 #H - elim (yplus_inv_Y1 … H) -H #H destruct /2 width=1 by conj/ -] -qed-. - -(* Inversion lemmas on minus ************************************************) - -lemma yle_inv_plus_inj2: ∀x,z:ynat. ∀y:nat. x + y ≤ z → x ≤ z - y ∧ y ≤ z. -/3 width=3 by yle_plus1_to_minus_inj2, yle_trans, conj/ qed-. - -lemma yle_inv_plus_inj1: ∀x,z:ynat. ∀y:nat. y + x ≤ z → x ≤ z - y ∧ y ≤ z. -/2 width=1 by yle_inv_plus_inj2/ qed-. - -lemma yle_inv_plus_inj_dx: ∀z,x:ynat. ∀y:nat. x + y ≤ z → - ∧∧ x ≤ z - y & y ≤ z. -* [| /2 width=1 by conj/ ] -#z * [| #y >yplus_Y1 #H >(yle_inv_Y1 … H) -z /2 width=1 by conj/ ] -#x #y >yplus_inj #H >yminus_inj -/5 width=2 by yle_inv_inj, yle_inj, le_plus_to_minus_r, le_plus_b, conj/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_plus.ma b/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_plus.ma deleted file mode 100644 index 9e0db4161..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_plus.ma +++ /dev/null @@ -1,313 +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_3_2.ma". -include "ground_2/ynat/ynat_lt.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* addition *) -definition yplus: ynat → ynat → ynat ≝ λx,y. match y with -[ yinj n ⇒ ysucc^n x -| Y ⇒ Y -]. - -interpretation "ynat plus" 'plus x y = (yplus x y). - -lemma yplus_O2: ∀m:ynat. m + 0 = m. -// qed. - -lemma yplus_S2: ∀m:ynat. ∀n. m + S n = ↑(m + n). -// qed. - -lemma yplus_Y2: ∀m:ynat. m + (∞) = ∞. -// qed. - -(* Properties on successor **************************************************) - -lemma yplus_succ2: ∀m,n. m + ↑n = ↑(m + n). -#m * // -qed. - -lemma yplus_succ1: ∀m,n. ↑m + n = ↑(m + n). -#m * // #n elim n -n // -qed. - -lemma yplus_succ_swap: ∀m,n. m + ↑n = ↑m + n. -// qed. - -lemma yplus_SO2: ∀m:ynat. m + 1 = ↑m. -* // -qed. - -(* Basic properties *********************************************************) - -lemma yplus_inj: ∀n,m. yinj m + yinj n = yinj (m + n). -#n elim n -n // -#n #IHn #m >(yplus_succ2 ? n) >IHn -IHn -yplus_inj whd in ⊢ (??%%); yplus_Y1 // -] -qed. - -lemma yplus_O1: ∀n:ynat. 0 + n = n. -#n >yplus_comm // qed. - -lemma yplus_comm_23: ∀x,y,z. x + z + y = x + y + z. -#x #y #z >yplus_assoc // -qed. - -lemma yplus_comm_24: ∀x1,x2,x3,x4. x1 + x4 + x3 + x2 = x1 + x2 + x3 + x4. -#x1 #x2 #x3 #x4 ->yplus_assoc >yplus_assoc >yplus_assoc >yplus_assoc -/2 width=1 by eq_f2/ -qed. - -lemma yplus_assoc_23: ∀x1,x2,x3,x4. x1 + x2 + (x3 + x4) = x1 + (x2 + x3) + x4. -#x1 #x2 #x3 #x4 >yplus_assoc >yplus_assoc -/2 width=1 by eq_f2/ -qed. - -(* Inversion lemmas on successor *********************************************) - -lemma yplus_inv_succ_lt_dx: ∀x,y,z:ynat. 0 < y → x + y = ↑z → x + ↓y = z. -#x #y #z #H <(ylt_inv_O1 y) // >yplus_succ2 -/2 width=1 by ysucc_inv_inj/ -qed-. - -lemma yplus_inv_succ_lt_sn: ∀x,y,z:ynat. 0 < x → x + y = ↑z → ↓x + y = z. -#x #y #z #H <(ylt_inv_O1 x) // >yplus_succ1 -/2 width=1 by ysucc_inv_inj/ - -qed-. - -(* Inversion lemmas on order ************************************************) - -lemma yle_inv_plus_dx: ∀x,y. x ≤ y → ∃z. x + z = y. -#x #y #H elim H -x -y /2 width=2 by ex_intro/ -#m #n #H @(ex_intro … (yinj (n-m))) (**) (* explicit constructor *) -/3 width=1 by plus_minus, eq_f/ -qed-. - -lemma yle_inv_plus_sn: ∀x,y. x ≤ y → ∃z. z + x = y. -#x #y #H elim (yle_inv_plus_dx … H) -H -/2 width=2 by ex_intro/ -qed-. - -(* Basic inversion lemmas ***************************************************) - -lemma yplus_inv_inj: ∀z,y,x. x + y = yinj z → - ∃∃m,n. m + n = z & x = yinj m & y = yinj n. -#z * [2: normalize #x #H destruct ] -#y * [2: >yplus_Y1 #H destruct ] -/3 width=5 by yinj_inj, ex3_2_intro/ -qed-. - -lemma yplus_inv_O: ∀x,y:ynat. x + y = 0 → x = 0 ∧ y = 0. -#x #y #H elim (yplus_inv_inj … H) -H -#m * /2 width=1 by conj/ #n yplus_Y2 #H destruct ] -#y yplus_succ1 #H -lapply (ysucc_inv_inj … H) -H #H -elim (IHx … H) -IHx -H /2 width=1 by or_introl, or_intror/ -qed-. - -lemma discr_yplus_x_xy: ∀x,y. x = x + y → x = ∞ ∨ y = 0. -/2 width=1 by discr_yplus_xy_x/ qed-. - -lemma yplus_inv_monotonic_dx_inj: ∀z,x,y. x + yinj z = y + yinj z → x = y. -#z @(nat_ind_plus … z) -z /3 width=2 by ysucc_inv_inj/ -qed-. - -lemma yplus_inv_monotonic_dx: ∀z,x,y. z < ∞ → x + z = y + z → x = y. -#z #x #y #H elim (ylt_inv_Y2 … H) -H /2 width=2 by yplus_inv_monotonic_dx_inj/ -qed-. - -lemma yplus_inv_Y2: ∀x,y. x + y = ∞ → x = ∞ ∨ y = ∞. -* /2 width=1 by or_introl/ #x * // #y >yplus_inj #H destruct -qed-. - -lemma yplus_inv_monotonic_23: ∀z,x1,x2,y1,y2. z < ∞ → - x1 + z + y1 = x2 + z + y2 → x1 + y1 = x2 + y2. -#z #x1 #x2 #y1 #y2 #Hz #H @(yplus_inv_monotonic_dx z) // ->yplus_comm_23 >H -H // -qed-. - -(* Inversion lemmas on strict_order *****************************************) - -lemma ylt_inv_plus_Y: ∀x,y. x + y < ∞ → x < ∞ ∧ y < ∞. -#x #y #H elim (ylt_inv_Y2 … H) -H -#z #H elim (yplus_inv_inj … H) -H /2 width=1 by conj/ -qed-. - -lemma ylt_inv_plus_sn: ∀x,y. x < y → ∃∃z. ↑z + x = y & x < ∞. -#x #y #H elim (ylt_inv_le … H) -H -#Hx #H elim (yle_inv_plus_sn … H) -H -/2 width=2 by ex2_intro/ -qed-. - -lemma ylt_inv_plus_dx: ∀x,y. x < y → ∃∃z. x + ↑z = y & x < ∞. -#x #y #H elim (ylt_inv_plus_sn … H) -H -#z >yplus_comm /2 width=2 by ex2_intro/ -qed-. - -(* Properties on order ******************************************************) - -lemma yle_plus_dx2: ∀n,m. n ≤ m + n. -* // -#n elim n -n // -#n #IHn #m >(yplus_succ2 ? n) @(yle_succ n) // (**) (* full auto fails *) -qed. - -lemma yle_plus_dx1: ∀n,m. m ≤ m + n. -// qed. - -lemma yle_plus_dx1_trans: ∀x,z. z ≤ x → ∀y. z ≤ x + y. -/2 width=3 by yle_trans/ qed. - -lemma yle_plus_dx2_trans: ∀y,z. z ≤ y → ∀x. z ≤ x + y. -/2 width=3 by yle_trans/ qed. - -lemma monotonic_yle_plus_dx: ∀x,y. x ≤ y → ∀z. x + z ≤ y + z. -#x #y #Hxy * // -#z elim z -z /3 width=1 by yle_succ/ -qed. - -lemma monotonic_yle_plus_sn: ∀x,y. x ≤ y → ∀z. z + x ≤ z + y. -/2 width=1 by monotonic_yle_plus_dx/ qed. - -lemma monotonic_yle_plus: ∀x1,y1. x1 ≤ y1 → ∀x2,y2. x2 ≤ y2 → - x1 + x2 ≤ y1 + y2. -/3 width=3 by monotonic_yle_plus_dx, monotonic_yle_plus_sn, yle_trans/ qed. - -lemma ylt_plus_Y: ∀x,y. x < ∞ → y < ∞ → x + y < ∞. -#x #y #Hx elim (ylt_inv_Y2 … Hx) -Hx -#m #Hm #Hy elim (ylt_inv_Y2 … Hy) -Hy // -qed. - -(* Forward lemmas on order **************************************************) - -lemma yle_fwd_plus_sn2: ∀x,y,z. x + y ≤ z → y ≤ z. -/2 width=3 by yle_trans/ qed-. - -lemma yle_fwd_plus_sn1: ∀x,y,z. x + y ≤ z → x ≤ z. -/2 width=3 by yle_trans/ qed-. - -lemma yle_inv_monotonic_plus_dx_inj: ∀x,y:ynat.∀z:nat. x + z ≤ y + z → x ≤ y. -#x #y #z elim z -z /3 width=1 by yle_inv_succ/ -qed-. - -lemma yle_inv_monotonic_plus_sn_inj: ∀x,y:ynat.∀z:nat. z + x ≤ z + y → x ≤ y. -/2 width=2 by yle_inv_monotonic_plus_dx_inj/ qed-. - -lemma yle_inv_monotonic_plus_dx: ∀x,y,z. z < ∞ → x + z ≤ y + z → x ≤ y. -#x #y #z #Hz elim (ylt_inv_Y2 … Hz) -Hz #m #H destruct -/2 width=2 by yle_inv_monotonic_plus_sn_inj/ -qed-. - -lemma yle_inv_monotonic_plus_sn: ∀x,y,z. z < ∞ → z + x ≤ z + y → x ≤ y. -/2 width=3 by yle_inv_monotonic_plus_dx/ qed-. - -lemma yle_fwd_plus_ge: ∀m1,m2:nat. m2 ≤ m1 → ∀n1,n2:ynat. m1 + n1 ≤ m2 + n2 → n1 ≤ n2. -#m1 #m2 #Hm12 #n1 #n2 #H -lapply (monotonic_yle_plus … Hm12 … H) -Hm12 -H -/2 width=2 by yle_inv_monotonic_plus_sn_inj/ -qed-. - -lemma yle_fwd_plus_ge_inj: ∀m1:nat. ∀m2,n1,n2:ynat. m2 ≤ m1 → m1 + n1 ≤ m2 + n2 → n1 ≤ n2. -#m2 #m1 #n1 #n2 #H elim (yle_inv_inj2 … H) -H -#x #H0 #H destruct /3 width=4 by yle_fwd_plus_ge, yle_inj/ -qed-. - -lemma yle_fwd_plus_yge: ∀n2,m1:ynat. ∀n1,m2:nat. m2 ≤ m1 → m1 + n1 ≤ m2 + n2 → n1 ≤ n2. -* // #n2 * /2 width=4 by yle_fwd_plus_ge_inj/ -qed-. - -(* Properties on strict order ***********************************************) - -lemma ylt_plus_dx1_trans: ∀x,z. z < x → ∀y. z < x + y. -/2 width=3 by ylt_yle_trans/ qed. - -lemma ylt_plus_dx2_trans: ∀y,z. z < y → ∀x. z < x + y. -/2 width=3 by ylt_yle_trans/ qed. - -lemma monotonic_ylt_plus_dx_inj: ∀x,y. x < y → ∀z:nat. x + yinj z < y + yinj z. -#x #y #Hxy #z elim z -z /3 width=1 by ylt_succ/ -qed. - -lemma monotonic_ylt_plus_sn_inj: ∀x,y. x < y → ∀z:nat. yinj z + x < yinj z + y. -/2 width=1 by monotonic_ylt_plus_dx_inj/ qed. - -lemma monotonic_ylt_plus_dx: ∀x,y. x < y → ∀z. z < ∞ → x + z < y + z. -#x #y #Hxy #z #Hz elim (ylt_inv_Y2 … Hz) -Hz -#m #H destruct /2 width=1 by monotonic_ylt_plus_dx_inj/ -qed. - -lemma monotonic_ylt_plus_sn: ∀x,y. x < y → ∀z. z < ∞ → z + x < z + y. -/2 width=1 by monotonic_ylt_plus_dx/ qed. - -lemma monotonic_ylt_plus_inj: ∀m1,m2. m1 < m2 → ∀n1,n2. yinj n1 ≤ n2 → m1 + n1 < m2 + n2. -/3 width=3 by monotonic_ylt_plus_sn_inj, monotonic_yle_plus_sn, ylt_yle_trans/ -qed. - -lemma monotonic_ylt_plus: ∀m1,m2. m1 < m2 → ∀n1. n1 < ∞ → ∀n2. n1 ≤ n2 → m1 + n1 < m2 + n2. -#m1 #m2 #Hm12 #n1 #H elim (ylt_inv_Y2 … H) -H #m #H destruct /2 width=1 by monotonic_ylt_plus_inj/ -qed. - -(* Forward lemmas on strict order *******************************************) - -lemma ylt_inv_monotonic_plus_dx: ∀x,y,z. x + z < y + z → x < y. -* [2: #y #z >yplus_comm #H elim (ylt_inv_Y1 … H) ] -#x * // #y * [2: #H elim (ylt_inv_Y1 … H) ] -/4 width=3 by ylt_inv_inj, ylt_inj, lt_plus_to_lt_l/ -qed-. - -lemma ylt_fwd_plus_ge: ∀m1,m2. m2 ≤ m1 → ∀n1,n2. m1 + n1 < m2 + n2 → n1 < n2. -#m1 #m2 #Hm12 #n1 #n2 #H elim (ylt_fwd_gen … H) -#x #H0 elim (yplus_inv_inj … H0) -H0 -#y #z #_ #H2 #H3 destruct -x -elim (yle_inv_inj2 … Hm12) -#x #_ #H0 destruct -lapply (monotonic_ylt_plus … H … Hm12) -H -Hm12 -/2 width=2 by ylt_inv_monotonic_plus_dx/ -qed-. - -(* Properties on predeccessor ***********************************************) - -lemma yplus_pred1: ∀x,y:ynat. 0 < x → ↓x + y = ↓(x+y). -#x * // #y elim y -y // #y #IH #Hx ->yplus_S2 >yplus_S2 >IH -IH // >ylt_inv_O1 -/2 width=1 by ylt_plus_dx1_trans/ -qed-. - -lemma yplus_pred2: ∀x,y:ynat. 0 < y → x + ↓y = ↓(x+y). -/2 width=1 by yplus_pred1/ qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_pred.ma b/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_pred.ma deleted file mode 100644 index b64e38877..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_pred.ma +++ /dev/null @@ -1,41 +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/ynat/ynat.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* the predecessor function *) -definition ypred: ynat → ynat ≝ λm. match m with -[ yinj m ⇒ ↓m -| Y ⇒ Y -]. - -interpretation "ynat predecessor" 'DownArrow m = (ypred m). - -lemma ypred_O: ↓(yinj 0) = yinj 0. -// qed. - -lemma ypred_S: ∀m:nat. ↓(↑m) = yinj m. -// qed. - -lemma ypred_Y: (↓∞) = ∞. -// qed. - -(* Inversion lemmas *********************************************************) - -lemma ypred_inv_refl: ∀m:ynat. ↓m = m → m = 0 ∨ m = ∞. -* // #m #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) -/4 width=1 by pred_inv_fix_sn, or_introl, eq_f/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_succ.ma b/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_succ.ma deleted file mode 100644 index d0c7b3fda..000000000 --- a/matita/matita/contribs/lambdadelta/ground_2/ynat/ynat_succ.ma +++ /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 "ground_2/ynat/ynat_pred.ma". - -(* NATURAL NUMBERS WITH INFINITY ********************************************) - -(* the successor function *) -definition ysucc: ynat → ynat ≝ λm. match m with -[ yinj m ⇒ ↑m -| Y ⇒ Y -]. - -interpretation "ynat successor" 'UpArrow m = (ysucc m). - -lemma ysucc_inj: ∀m:nat. ↑(yinj m) = yinj (↑m). -// qed. - -lemma ysucc_Y: ↑(∞) = ∞. -// qed. - -(* Properties ***************************************************************) - -lemma ypred_succ: ∀m. ↓↑m = m. -* // qed. - -lemma ynat_cases: ∀n:ynat. n = 0 ∨ ∃m:ynat. n = ↑m. -* -[ * /2 width=1 by or_introl/ - #n @or_intror @(ex_intro … n) // (**) (* explicit constructor *) -| @or_intror @(ex_intro … (∞)) // (**) (* explicit constructor *) -] -qed-. - -lemma ysucc_iter_Y: ∀m. ysucc^m (∞) = ∞. -#m elim m -m // -#m #IHm whd in ⊢ (??%?); >IHm // -qed. - -(* Inversion lemmas *********************************************************) - -lemma ysucc_inv_inj: ∀m,n. ↑m = ↑n → m = n. -#m #n #H <(ypred_succ m) <(ypred_succ n) // -qed-. - -lemma ysucc_inv_refl: ∀m. ↑m = m → m = ∞. -* // -#m #H lapply (yinj_inj … H) -H (**) (* destruct lemma needed *) -#H elim (lt_refl_false m) // -qed-. - -lemma ysucc_inv_inj_sn: ∀m2,n1. yinj m2 = ↑n1 → - ∃∃m1. n1 = yinj m1 & m2 = S m1. -#m2 * normalize -[ #n1 #H destruct /2 width=3 by ex2_intro/ -| #H destruct -] -qed-. - -lemma ysucc_inv_inj_dx: ∀m2,n1. ↑n1 = yinj m2 → - ∃∃m1. n1 = yinj m1 & m2 = S m1. -/2 width=1 by ysucc_inv_inj_sn/ qed-. - -lemma ysucc_inv_Y_sn: ∀m. ∞ = ↑m → m = ∞. -* // normalize -#m #H destruct -qed-. - -lemma ysucc_inv_Y_dx: ∀m. ↑m = ∞ → m = ∞. -/2 width=1 by ysucc_inv_Y_sn/ qed-. - -lemma ysucc_inv_O_sn: ∀m. yinj 0 = ↑m → ⊥. (**) (* explicit coercion *) -#m #H elim (ysucc_inv_inj_sn … H) -H -#n #_ #H destruct -qed-. - -lemma ysucc_inv_O_dx: ∀m:ynat. ↑m = 0 → ⊥. -/2 width=2 by ysucc_inv_O_sn/ qed-. - -(* Eliminators **************************************************************) - -lemma ynat_ind: ∀R:predicate ynat. - R 0 → (∀n:nat. R n → R (↑n)) → R (∞) → - ∀x. R x. -#R #H1 #H2 #H3 * // #n elim n -n /2 width=1 by/ -qed-. diff --git a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma index 6e6bb06aa..f9a9afa88 100644 --- a/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma +++ b/matita/matita/contribs/lambdadelta/static_2/i_static/rexs.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "static_2/notation/relations/relationstar_4.ma". include "static_2/static/rex.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma index a0ec3349b..ec5c69191 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops.ma @@ -12,9 +12,9 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_2.ma". -include "ground_2/xoa/ex_4_3.ma". -include "ground_2/relocation/rtmap_coafter.ma". +include "ground/xoa/ex_1_2.ma". +include "ground/xoa/ex_4_3.ma". +include "ground/relocation/rtmap_coafter.ma". include "static_2/notation/relations/rdropstar_4.ma". include "static_2/notation/relations/rdrop_3.ma". include "static_2/relocation/seq.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ctc.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ctc.ma index acd929c41..439333786 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ctc.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ctc.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "static_2/relocation/seq_seq.ma". (* GENERIC SLICING FOR LOCAL ENVIRONMENTS ***********************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ltc.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ltc.ma index d2ca57bba..b427c5e1e 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ltc.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/drops_ltc.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/ltc.ma". +include "ground/lib/ltc.ma". include "static_2/relocation/seq_seq.ma". (* GENERIC SLICING FOR LOCAL ENVIRONMENTS ***********************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma index 6ca29e586..2c3e5548c 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lex.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/pull/pull_4.ma". -include "ground_2/relocation/rtmap_uni.ma". +include "ground/pull/pull_4.ma". +include "ground/relocation/rtmap_uni.ma". include "static_2/notation/relations/relation_3.ma". include "static_2/syntax/cext2.ma". include "static_2/relocation/sex.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma index 2a50e45de..2dceb17d0 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/nstream_after.ma". +include "ground/relocation/nstream_after.ma". include "static_2/notation/relations/rliftstar_3.ma". include "static_2/notation/relations/rlift_3.ma". include "static_2/syntax/term.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma index fa1b12d00..d6dc490e0 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/lifts_basic.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/rtmap_basic_after.ma". +include "ground/relocation/rtmap_basic_after.ma". include "static_2/notation/relations/rlift_4.ma". include "static_2/relocation/lifts.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma index 5994b4b62..49010d330 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/relocation/rtmap_sle.ma". -include "ground_2/relocation/rtmap_sdj.ma". +include "ground/relocation/rtmap_sle.ma". +include "ground/relocation/rtmap_sdj.ma". include "static_2/notation/relations/relation_5.ma". include "static_2/syntax/lenv.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma index cc71886a2..01e0f16fd 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/rtmap_sand.ma". +include "ground/relocation/rtmap_sand.ma". include "static_2/relocation/drops.ma". (* GENERIC ENTRYWISE EXTENSION OF CONTEXT-SENSITIVE REALTIONS FOR TERMS *****) diff --git a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma index 379cfc751..f372e4067 100644 --- a/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma +++ b/matita/matita/contribs/lambdadelta/static_2/relocation/sex_tc.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "static_2/relocation/sex.ma". (* GENERIC ENTRYWISE EXTENSION OF CONTEXT-SENSITIVE REALTIONS FOR TERMS *****) diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma index ed7315b8c..00b3e4fed 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqup.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "static_2/notation/relations/suptermplus_6.ma". include "static_2/notation/relations/suptermplus_7.ma". include "static_2/s_transition/fqu.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma index 61d3da9a1..3a58ae745 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_computation/fqus.ma @@ -12,10 +12,10 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_2_3.ma". -include "ground_2/xoa/ex_3_3.ma". -include "ground_2/xoa/or_5.ma". -include "ground_2/lib/star.ma". +include "ground/xoa/ex_2_3.ma". +include "ground/xoa/ex_3_3.ma". +include "ground/xoa/or_5.ma". +include "ground/lib/star.ma". include "static_2/notation/relations/suptermstar_6.ma". include "static_2/notation/relations/suptermstar_7.ma". include "static_2/s_transition/fquq.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma index d26e1f997..ebc264bd7 100644 --- a/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma +++ b/matita/matita/contribs/lambdadelta/static_2/s_transition/fqu.ma @@ -12,9 +12,9 @@ (* *) (**************************************************************************) -include "ground_2/xoa/and_4.ma". -include "ground_2/xoa/ex_4_2.ma". -include "ground_2/xoa/or_4.ma". +include "ground/xoa/and_4.ma". +include "ground/xoa/ex_4_2.ma". +include "ground/xoa/or_4.ma". include "static_2/notation/relations/supterm_6.ma". include "static_2/notation/relations/supterm_7.ma". include "static_2/syntax/lenv.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma b/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma index a13ca0f16..841c85be2 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/aaa.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_2_3.ma". -include "ground_2/xoa/ex_3_2.ma". +include "ground/xoa/ex_2_3.ma". +include "ground/xoa/ex_3_2.ma". include "static_2/notation/relations/atomicarity_4.ma". include "static_2/syntax/aarity.ma". include "static_2/syntax/lenv.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/frees.ma b/matita/matita/contribs/lambdadelta/static_2/static/frees.ma index cdbf5be5a..887703487 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/frees.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/frees.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/rtmap_sor.ma". +include "ground/relocation/rtmap_sor.ma". include "static_2/notation/relations/freeplus_3.ma". include "static_2/syntax/lenv.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma b/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma index 247179603..7b4f04950 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/frees_drops.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/relocation/nstream_coafter.ma". +include "ground/relocation/nstream_coafter.ma". include "static_2/relocation/drops_drops.ma". include "static_2/static/frees_fqup.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma b/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma index 5b7bb2eed..191612548 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/fsle.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_4_4.ma". -include "ground_2/relocation/rtmap_id.ma". +include "ground/xoa/ex_4_4.ma". +include "ground/relocation/rtmap_id.ma". include "static_2/notation/relations/subseteq_4.ma". include "static_2/syntax/lveq.ma". include "static_2/static/frees.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma index 54b6aa1cb..ef4f18339 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsuba.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_5_4.ma". +include "ground/xoa/ex_5_4.ma". include "static_2/notation/relations/lrsubeqa_3.ma". include "static_2/static/aaa.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma index d264460fb..0a5f81c00 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubc.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_6_4.ma". +include "ground/xoa/ex_6_4.ma". include "static_2/notation/relations/lrsubeqc_4.ma". include "static_2/static/aaa.ma". include "static_2/static/gcp_cr.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma index 2c3a1bf37..95cec9a87 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubf.ma @@ -12,14 +12,14 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_3.ma". -include "ground_2/xoa/ex_4_3.ma". -include "ground_2/xoa/ex_5_5.ma". -include "ground_2/xoa/ex_5_6.ma". -include "ground_2/xoa/ex_6_5.ma". -include "ground_2/xoa/ex_7_6.ma". +include "ground/xoa/ex_3_3.ma". +include "ground/xoa/ex_4_3.ma". +include "ground/xoa/ex_5_5.ma". +include "ground/xoa/ex_5_6.ma". +include "ground/xoa/ex_6_5.ma". +include "ground/xoa/ex_7_6.ma". include "static_2/notation/relations/lrsubeqf_4.ma". -include "ground_2/relocation/nstream_sor.ma". +include "ground/relocation/nstream_sor.ma". include "static_2/static/frees.ma". (* RESTRICTED REFINEMENT FOR CONTEXT-SENSITIVE FREE VARIABLES ***************) diff --git a/matita/matita/contribs/lambdadelta/static_2/static/lsubr.ma b/matita/matita/contribs/lambdadelta/static_2/static/lsubr.ma index 5e70c9880..ef3319758 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/lsubr.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/lsubr.ma @@ -12,10 +12,10 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_2_3.ma". -include "ground_2/xoa/ex_3_2.ma". -include "ground_2/xoa/ex_3_3.ma". -include "ground_2/xoa/ex_3_4.ma". +include "ground/xoa/ex_2_3.ma". +include "ground/xoa/ex_3_2.ma". +include "ground/xoa/ex_3_3.ma". +include "ground/xoa/ex_3_4.ma". include "static_2/notation/relations/lrsubeqc_2.ma". include "static_2/syntax/lenv.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/static/rex.ma b/matita/matita/contribs/lambdadelta/static_2/static/rex.ma index a17dd7d6a..d4c727123 100644 --- a/matita/matita/contribs/lambdadelta/static_2/static/rex.ma +++ b/matita/matita/contribs/lambdadelta/static_2/static/rex.ma @@ -12,11 +12,11 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_2.ma". -include "ground_2/xoa/ex_3_4.ma". -include "ground_2/xoa/ex_4_4.ma". -include "ground_2/xoa/ex_4_5.ma". -include "ground_2/relocation/rtmap_id.ma". +include "ground/xoa/ex_1_2.ma". +include "ground/xoa/ex_3_4.ma". +include "ground/xoa/ex_4_4.ma". +include "ground/xoa/ex_4_5.ma". +include "ground/relocation/rtmap_id.ma". include "static_2/notation/relations/relation_4.ma". include "static_2/syntax/cext2.ma". include "static_2/relocation/sex.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/aarity.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/aarity.ma index db3820964..7a31b8c79 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/aarity.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/aarity.ma @@ -16,7 +16,7 @@ * Initial invocation: - Patience on me to gain peace and perfection! - *) -include "ground_2/lib/relations.ma". +include "ground/lib/relations.ma". include "static_2/notation/functions/item0_0.ma". include "static_2/notation/functions/snitem2_2.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/ac.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/ac.ma index aef4c4452..aa9b4db7b 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/ac.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/ac.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith.ma". +include "ground/lib/arith.ma". include "static_2/notation/functions/one_0.ma". include "static_2/notation/functions/two_0.ma". include "static_2/notation/functions/omega_0.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/append.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/append.ma index 7a26b8865..220944f49 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/append.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/append.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_2.ma". +include "ground/xoa/ex_1_2.ma". include "static_2/notation/functions/snitem_2.ma". include "static_2/notation/functions/snbind1_2.ma". include "static_2/notation/functions/snbind2_3.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/ext2_tc.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/ext2_tc.ma index d6df0a3de..7caaa5edf 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/ext2_tc.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/ext2_tc.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/star.ma". +include "ground/lib/star.ma". include "static_2/syntax/ext2.ma". (* EXTENSION TO BINDERS OF A RELATION FOR TERMS *****************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/item.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/item.ma index ba8357260..1db29eabb 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/item.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/item.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/lib/bool.ma". -include "ground_2/lib/arith.ma". +include "ground/lib/bool.ma". +include "ground/lib/arith.ma". (* ITEMS ********************************************************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma index e8d0343a7..e127fa236 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/lveq.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_4.ma". -include "ground_2/xoa/ex_4_1.ma". +include "ground/xoa/ex_3_4.ma". +include "ground/xoa/ex_4_1.ma". include "static_2/notation/relations/voidstareq_4.ma". include "static_2/syntax/lenv.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/sh.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/sh.ma index bb7aacd2c..815924202 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/sh.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/sh.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/arith.ma". +include "ground/lib/arith.ma". include "static_2/notation/functions/upspoon_2.ma". (* SORT HIERARCHY ***********************************************************) diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/teqo.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/teqo.ma index 4ededae0c..4b37a70df 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/teqo.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/teqo.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_2.ma". +include "ground/xoa/ex_1_2.ma". include "static_2/notation/relations/topiso_2.ma". include "static_2/syntax/term.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/teqx.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/teqx.ma index 819cbb91a..3986d32a4 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/teqx.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/teqx.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_3_2.ma". +include "ground/xoa/ex_3_2.ma". include "static_2/notation/relations/stareq_2.ma". include "static_2/syntax/term.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/term.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/term.ma index 5ab8ef15e..83937e544 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/term.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/term.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_3.ma". +include "ground/xoa/ex_1_3.ma". include "static_2/notation/functions/item0_1.ma". include "static_2/notation/functions/snitem2_3.ma". include "static_2/notation/functions/snbind2_4.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/term_simple.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/term_simple.ma index 50e1a4d22..ca01552ea 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/term_simple.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/term_simple.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_4.ma". +include "ground/xoa/ex_1_4.ma". include "static_2/notation/relations/simple_1.ma". include "static_2/syntax/term.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/term_vector.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/term_vector.ma index 360386bd2..2714a1b91 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/term_vector.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/term_vector.ma @@ -12,7 +12,7 @@ (* *) (**************************************************************************) -include "ground_2/lib/list.ma". +include "ground/lib/list.ma". include "static_2/notation/functions/snapplvector_2.ma". include "static_2/syntax/term_simple.ma". diff --git a/matita/matita/contribs/lambdadelta/static_2/syntax/tweq.ma b/matita/matita/contribs/lambdadelta/static_2/syntax/tweq.ma index 1b44f03de..a5c60ec94 100644 --- a/matita/matita/contribs/lambdadelta/static_2/syntax/tweq.ma +++ b/matita/matita/contribs/lambdadelta/static_2/syntax/tweq.ma @@ -12,8 +12,8 @@ (* *) (**************************************************************************) -include "ground_2/xoa/ex_1_2.ma". -include "ground_2/xoa/ex_3_2.ma". +include "ground/xoa/ex_1_2.ma". +include "ground/xoa/ex_3_2.ma". include "static_2/notation/relations/approxeq_2.ma". include "static_2/syntax/term_weight.ma".