]> matita.cs.unibo.it Git - helm.git/commitdiff
update in ground
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 4 Oct 2021 16:03:25 +0000 (18:03 +0200)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Mon, 4 Oct 2021 16:03:25 +0000 (18:03 +0200)
+ some renaming

228 files changed:
matita/matita/contribs/lambdadelta/bin/recomm/bGroundRelocation.mrc
matita/matita/contribs/lambdadelta/bin/recomm/dGroundRelocation.mrc
matita/matita/contribs/lambdadelta/bin/recomm/recommGcbGroundRelocation.ml
matita/matita/contribs/lambdadelta/bin/recomm/recommGcdGroundRelocation.ml
matita/matita/contribs/lambdadelta/ground/relocation/gr_after.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_after.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_after_ist.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_basic.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_ist.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_ist_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_isu.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_nat_uni_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_uni_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_after_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_basic.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_coafter.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_coafter_ist.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_ist_isf.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_ist_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_isu.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_nat_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_nat_tls_pushs.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_pat_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_uni_pushs.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_fcla.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_id.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_id_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isd.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_nexts.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_tl.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isf.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_isu.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_pushs.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_tl.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_id.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_pat.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_pushs.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_tl.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_ist.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_ist.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isu.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isu_tl.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_isu_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_map.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_nat.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_basic.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_nat.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_nexts.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_nexts_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_basic.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_id.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_lt.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_pat.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_pat_id.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pushs.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_pushs_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sand.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sand_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sle.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_isd.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_pushs.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_sle.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_coafter_ist_isf.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_fcla.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_isf.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_isi.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sle.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sor.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sor_sle.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tl.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tl_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tl_eq_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tls.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_nexts_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_pushs.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_pushs_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_uni.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/gr_uni_eq.ma [deleted file]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_after.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_after_ist.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_basic.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_ist.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_ist_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_isu.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_nat_uni_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_uni_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_after_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_basic.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_coafter.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_coafter_ist.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isf.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_isu.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_nat_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_nat_tls_pushs.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_pat_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_uni_pushs.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_compose.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_fcla.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_id.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_id_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isd.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_nexts.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_tl.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isf.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_isu.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_pushs.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_tl.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_id.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_pat.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_pushs.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_tl.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_ist.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_ist.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isu.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isu_tl.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_isu_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_map.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_nat.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_basic.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_nat.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_nexts.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_nexts_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_basic.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_id.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_lt.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat_id.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pushs.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_pushs_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sand.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sand_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sle.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_isd.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_pushs.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_sle.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_coafter_ist_isf.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_fcla.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_isf.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_isi.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sle.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sor.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sor_sle.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tl.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tl_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tl_eq_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tls.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_nexts_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_pushs.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_pushs_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_uni.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/relocation/pr_uni_eq.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/ground/web/ground_src.tbl

index c2f0b17d3dece5df19babc39ed9c56ef6261f641..9570b5aa2daea22928fea053fe424c1b9c8fc0ca 100644 (file)
@@ -1,23 +1,23 @@
 PcsAnd b "" true false
 PcsAnd b "" true false
-gr_eq
-gr_tl, tl, tail
-gr_pushs, pushs, iterated push
-gr_nexts, nexts, iterated next
-gr_tls, tls, iterated tail
-gr_id, id
-gr_uni, uni, uniform relocations
-gr_basic, basic relocation
-gr_pat, pat, at
-gr_nat, nat
-gr_isi, isi, isid, test for identity
-gr_isu, isuni, test for uniform relocations
-gr_fcla, fcla, finite colength assignment, finite colength
-gr_isf, isf, isfin, test for finite colength
-gr_ist, ist, istot
-gr_isd, isdiv
-gr_after, after
-gr_coafter, coafter
-gr_sle, sle, inclusion
-gr_sdj, sdj
-gr_sand, sand
-gr_sor, sor
+pr_eq
+pr_tl, tl, tail
+pr_pushs, pushs, iterated push
+pr_nexts, nexts, iterated next
+pr_tls, tls, iterated tail
+pr_id, id
+pr_uni, uni, uniform relocations
+pr_basic, basic relocation
+pr_pat, pat, at
+pr_nat, nat
+pr_isi, isi, isid, test for identity
+pr_isu, isuni, test for uniform relocations
+pr_fcla, fcla, finite colength assignment, finite colength
+pr_isf, isf, isfin, test for finite colength
+pr_ist, ist, istot
+pr_isd, isdiv
+pr_after, after
+pr_coafter, coafter
+pr_sle, sle, inclusion
+pr_sdj, sdj
+pr_sand, sand
+pr_sor, sor
index 1dcb63621772f2aff3d13a721f569cb4b92b9a28..6961848d0b46d80ac6985dcede30a37d5136b1b9 100644 (file)
@@ -1,4 +1,4 @@
 PccFor d "" true false
 FINITE RELOCATION MAPS
 FINITE RELOCATION MAPS WITH PAIRS
 PccFor d "" true false
 FINITE RELOCATION MAPS
 FINITE RELOCATION MAPS WITH PAIRS
-GENERIC RELOCATION MAPS
+PARTIAL RELOCATION MAPS
index 70e95bb4e98edd4d63324bc49f3d77ee3fc2d41f..466386a8d17ebc0f1a20b3a228de855f1ed5fab1 100644 (file)
@@ -4,64 +4,64 @@ module R = RecommPcsAnd
 let step k st outs ins =
   if st <> T.OO then k st outs ins else
   match ins with
 let step k st outs ins =
   if st <> T.OO then k st outs ins else
   match ins with
-  | "gr_sor" :: tl -> k T.OK ("gr_sor" :: outs) tl
-  | "sor" :: tl -> k T.OK ("gr_sor" :: outs) tl
-  | "gr_sand" :: tl -> k T.OK ("gr_sand" :: outs) tl
-  | "sand" :: tl -> k T.OK ("gr_sand" :: outs) tl
-  | "gr_sdj" :: tl -> k T.OK ("gr_sdj" :: outs) tl
-  | "sdj" :: tl -> k T.OK ("gr_sdj" :: outs) tl
-  | "gr_sle" :: tl -> k T.OK ("gr_sle" :: outs) tl
-  | "sle" :: tl -> k T.OK ("gr_sle" :: outs) tl
-  | "inclusion" :: tl -> k T.OK ("gr_sle" :: outs) tl
-  | "gr_coafter" :: tl -> k T.OK ("gr_coafter" :: outs) tl
-  | "coafter" :: tl -> k T.OK ("gr_coafter" :: outs) tl
-  | "gr_after" :: tl -> k T.OK ("gr_after" :: outs) tl
-  | "after" :: tl -> k T.OK ("gr_after" :: outs) tl
-  | "gr_isd" :: tl -> k T.OK ("gr_isd" :: outs) tl
-  | "isdiv" :: tl -> k T.OK ("gr_isd" :: outs) tl
-  | "gr_ist" :: tl -> k T.OK ("gr_ist" :: outs) tl
-  | "ist" :: tl -> k T.OK ("gr_ist" :: outs) tl
-  | "istot" :: tl -> k T.OK ("gr_ist" :: outs) tl
-  | "gr_isf" :: tl -> k T.OK ("gr_isf" :: outs) tl
-  | "isf" :: tl -> k T.OK ("gr_isf" :: outs) tl
-  | "isfin" :: tl -> k T.OK ("gr_isf" :: outs) tl
-  | "test" :: "for" :: "finite" :: "colength" :: tl -> k T.OK ("gr_isf" :: outs) tl
-  | "gr_fcla" :: tl -> k T.OK ("gr_fcla" :: outs) tl
-  | "fcla" :: tl -> k T.OK ("gr_fcla" :: outs) tl
-  | "finite" :: "colength" :: "assignment" :: tl -> k T.OK ("gr_fcla" :: outs) tl
-  | "finite" :: "colength" :: tl -> k T.OK ("gr_fcla" :: outs) tl
-  | "gr_isu" :: tl -> k T.OK ("gr_isu" :: outs) tl
-  | "isuni" :: tl -> k T.OK ("gr_isu" :: outs) tl
-  | "test" :: "for" :: "uniform" :: "relocations" :: tl -> k T.OK ("gr_isu" :: outs) tl
-  | "gr_isi" :: tl -> k T.OK ("gr_isi" :: outs) tl
-  | "isi" :: tl -> k T.OK ("gr_isi" :: outs) tl
-  | "isid" :: tl -> k T.OK ("gr_isi" :: outs) tl
-  | "test" :: "for" :: "identity" :: tl -> k T.OK ("gr_isi" :: outs) tl
-  | "gr_nat" :: tl -> k T.OK ("gr_nat" :: outs) tl
-  | "nat" :: tl -> k T.OK ("gr_nat" :: outs) tl
-  | "gr_pat" :: tl -> k T.OK ("gr_pat" :: outs) tl
-  | "pat" :: tl -> k T.OK ("gr_pat" :: outs) tl
-  | "at" :: tl -> k T.OK ("gr_pat" :: outs) tl
-  | "gr_basic" :: tl -> k T.OK ("gr_basic" :: outs) tl
-  | "basic" :: "relocation" :: tl -> k T.OK ("gr_basic" :: outs) tl
-  | "gr_uni" :: tl -> k T.OK ("gr_uni" :: outs) tl
-  | "uni" :: tl -> k T.OK ("gr_uni" :: outs) tl
-  | "uniform" :: "relocations" :: tl -> k T.OK ("gr_uni" :: outs) tl
-  | "gr_id" :: tl -> k T.OK ("gr_id" :: outs) tl
-  | "id" :: tl -> k T.OK ("gr_id" :: outs) tl
-  | "gr_tls" :: tl -> k T.OK ("gr_tls" :: outs) tl
-  | "tls" :: tl -> k T.OK ("gr_tls" :: outs) tl
-  | "iterated" :: "tail" :: tl -> k T.OK ("gr_tls" :: outs) tl
-  | "gr_nexts" :: tl -> k T.OK ("gr_nexts" :: outs) tl
-  | "nexts" :: tl -> k T.OK ("gr_nexts" :: outs) tl
-  | "iterated" :: "next" :: tl -> k T.OK ("gr_nexts" :: outs) tl
-  | "gr_pushs" :: tl -> k T.OK ("gr_pushs" :: outs) tl
-  | "pushs" :: tl -> k T.OK ("gr_pushs" :: outs) tl
-  | "iterated" :: "push" :: tl -> k T.OK ("gr_pushs" :: outs) tl
-  | "gr_tl" :: tl -> k T.OK ("gr_tl" :: outs) tl
-  | "tl" :: tl -> k T.OK ("gr_tl" :: outs) tl
-  | "tail" :: tl -> k T.OK ("gr_tl" :: outs) tl
-  | "gr_eq" :: tl -> k T.OK ("gr_eq" :: outs) tl
+  | "pr_sor" :: tl -> k T.OK ("pr_sor" :: outs) tl
+  | "sor" :: tl -> k T.OK ("pr_sor" :: outs) tl
+  | "pr_sand" :: tl -> k T.OK ("pr_sand" :: outs) tl
+  | "sand" :: tl -> k T.OK ("pr_sand" :: outs) tl
+  | "pr_sdj" :: tl -> k T.OK ("pr_sdj" :: outs) tl
+  | "sdj" :: tl -> k T.OK ("pr_sdj" :: outs) tl
+  | "pr_sle" :: tl -> k T.OK ("pr_sle" :: outs) tl
+  | "sle" :: tl -> k T.OK ("pr_sle" :: outs) tl
+  | "inclusion" :: tl -> k T.OK ("pr_sle" :: outs) tl
+  | "pr_coafter" :: tl -> k T.OK ("pr_coafter" :: outs) tl
+  | "coafter" :: tl -> k T.OK ("pr_coafter" :: outs) tl
+  | "pr_after" :: tl -> k T.OK ("pr_after" :: outs) tl
+  | "after" :: tl -> k T.OK ("pr_after" :: outs) tl
+  | "pr_isd" :: tl -> k T.OK ("pr_isd" :: outs) tl
+  | "isdiv" :: tl -> k T.OK ("pr_isd" :: outs) tl
+  | "pr_ist" :: tl -> k T.OK ("pr_ist" :: outs) tl
+  | "ist" :: tl -> k T.OK ("pr_ist" :: outs) tl
+  | "istot" :: tl -> k T.OK ("pr_ist" :: outs) tl
+  | "pr_isf" :: tl -> k T.OK ("pr_isf" :: outs) tl
+  | "isf" :: tl -> k T.OK ("pr_isf" :: outs) tl
+  | "isfin" :: tl -> k T.OK ("pr_isf" :: outs) tl
+  | "test" :: "for" :: "finite" :: "colength" :: tl -> k T.OK ("pr_isf" :: outs) tl
+  | "pr_fcla" :: tl -> k T.OK ("pr_fcla" :: outs) tl
+  | "fcla" :: tl -> k T.OK ("pr_fcla" :: outs) tl
+  | "finite" :: "colength" :: "assignment" :: tl -> k T.OK ("pr_fcla" :: outs) tl
+  | "finite" :: "colength" :: tl -> k T.OK ("pr_fcla" :: outs) tl
+  | "pr_isu" :: tl -> k T.OK ("pr_isu" :: outs) tl
+  | "isuni" :: tl -> k T.OK ("pr_isu" :: outs) tl
+  | "test" :: "for" :: "uniform" :: "relocations" :: tl -> k T.OK ("pr_isu" :: outs) tl
+  | "pr_isi" :: tl -> k T.OK ("pr_isi" :: outs) tl
+  | "isi" :: tl -> k T.OK ("pr_isi" :: outs) tl
+  | "isid" :: tl -> k T.OK ("pr_isi" :: outs) tl
+  | "test" :: "for" :: "identity" :: tl -> k T.OK ("pr_isi" :: outs) tl
+  | "pr_nat" :: tl -> k T.OK ("pr_nat" :: outs) tl
+  | "nat" :: tl -> k T.OK ("pr_nat" :: outs) tl
+  | "pr_pat" :: tl -> k T.OK ("pr_pat" :: outs) tl
+  | "pat" :: tl -> k T.OK ("pr_pat" :: outs) tl
+  | "at" :: tl -> k T.OK ("pr_pat" :: outs) tl
+  | "pr_basic" :: tl -> k T.OK ("pr_basic" :: outs) tl
+  | "basic" :: "relocation" :: tl -> k T.OK ("pr_basic" :: outs) tl
+  | "pr_uni" :: tl -> k T.OK ("pr_uni" :: outs) tl
+  | "uni" :: tl -> k T.OK ("pr_uni" :: outs) tl
+  | "uniform" :: "relocations" :: tl -> k T.OK ("pr_uni" :: outs) tl
+  | "pr_id" :: tl -> k T.OK ("pr_id" :: outs) tl
+  | "id" :: tl -> k T.OK ("pr_id" :: outs) tl
+  | "pr_tls" :: tl -> k T.OK ("pr_tls" :: outs) tl
+  | "tls" :: tl -> k T.OK ("pr_tls" :: outs) tl
+  | "iterated" :: "tail" :: tl -> k T.OK ("pr_tls" :: outs) tl
+  | "pr_nexts" :: tl -> k T.OK ("pr_nexts" :: outs) tl
+  | "nexts" :: tl -> k T.OK ("pr_nexts" :: outs) tl
+  | "iterated" :: "next" :: tl -> k T.OK ("pr_nexts" :: outs) tl
+  | "pr_pushs" :: tl -> k T.OK ("pr_pushs" :: outs) tl
+  | "pushs" :: tl -> k T.OK ("pr_pushs" :: outs) tl
+  | "iterated" :: "push" :: tl -> k T.OK ("pr_pushs" :: outs) tl
+  | "pr_tl" :: tl -> k T.OK ("pr_tl" :: outs) tl
+  | "tl" :: tl -> k T.OK ("pr_tl" :: outs) tl
+  | "tail" :: tl -> k T.OK ("pr_tl" :: outs) tl
+  | "pr_eq" :: tl -> k T.OK ("pr_eq" :: outs) tl
   | _ -> k T.OO outs ins
 
 let main =
   | _ -> k T.OO outs ins
 
 let main =
index 349cf6b36f9df5dadf6329557d2f73047c0e1303..a146ffc983aa81569c4c014574bfcaf1232ae536 100644 (file)
@@ -4,7 +4,7 @@ module R = RecommPccFor
 let step k st outs ins =
   if st <> T.OO then k st outs ins else
   match ins with
 let step k st outs ins =
   if st <> T.OO then k st outs ins else
   match ins with
-  | "GENERIC" :: "RELOCATION" :: "MAPS" :: tl -> k T.OK ("MAPS" :: "RELOCATION" :: "GENERIC" :: outs) tl
+  | "PARTIAL" :: "RELOCATION" :: "MAPS" :: tl -> k T.OK ("MAPS" :: "RELOCATION" :: "PARTIAL" :: outs) tl
   | "FINITE" :: "RELOCATION" :: "MAPS" :: "WITH" :: "PAIRS" :: tl -> k T.OK ("PAIRS" :: "WITH" :: "MAPS" :: "RELOCATION" :: "FINITE" :: outs) tl
   | "FINITE" :: "RELOCATION" :: "MAPS" :: tl -> k T.OK ("MAPS" :: "RELOCATION" :: "FINITE" :: outs) tl
   | _ -> k T.OO outs ins
   | "FINITE" :: "RELOCATION" :: "MAPS" :: "WITH" :: "PAIRS" :: tl -> k T.OK ("PAIRS" :: "WITH" :: "MAPS" :: "RELOCATION" :: "FINITE" :: outs) tl
   | "FINITE" :: "RELOCATION" :: "MAPS" :: tl -> k T.OK ("MAPS" :: "RELOCATION" :: "FINITE" :: outs) tl
   | _ -> k T.OO outs ins
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after.ma
deleted file mode 100644 (file)
index a5afa31..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/notation/relations/rafter_3.ma".
-include "ground/xoa/ex_3_2.ma". 
-include "ground/relocation/gr_tl.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(*** after *)
-coinductive gr_after: relation3 gr_map gr_map gr_map ≝
-(*** after_refl *)
-| gr_after_refl (f1) (f2) (f) (g1) (g2) (g):
-  gr_after f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → gr_after g1 g2 g
-(*** after_push *)
-| gr_after_push (f1) (f2) (f) (g1) (g2) (g):
-  gr_after f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → gr_after g1 g2 g
-(*** after_next *)
-| gr_after_next (f1) (f2) (f) (g1) (g):
-  gr_after f1 f2 f → ↑f1 = g1 → ↑f = g → gr_after g1 f2 g
-.
-
-interpretation
-  "relational composition (generic relocation maps)"
-  'RAfter f1 f2 f = (gr_after f1 f2 f).
-
-(* Basic inversions *********************************************************)
-
-(*** after_inv_ppx *)
-lemma gr_after_inv_push_bi:
-      ∀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
-  >(eq_inv_gr_push_bi … Hx1) >(eq_inv_gr_push_bi … Hx2) -x2 -x1
-  /2 width=3 by ex2_intro/
-| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct
-  elim (eq_inv_gr_push_next … Hx2)
-| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
-  elim (eq_inv_gr_push_next … Hx1)
-]
-qed-.
-
-(*** after_inv_pnx *)
-lemma gr_after_inv_push_next:
-      ∀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 (eq_inv_gr_next_push … Hx2)
-| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct
-  >(eq_inv_gr_push_bi … Hx1) >(eq_inv_gr_next_bi … Hx2) -x2 -x1
-  /2 width=3 by ex2_intro/
-| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
-  elim (eq_inv_gr_push_next … Hx1)
-]
-qed-.
-
-(*** after_inv_nxx *)
-lemma gr_after_inv_next_sn:
-      ∀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 (eq_inv_gr_next_push … Hx1)
-| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct
-  elim (eq_inv_gr_next_push … Hx1)
-| #g #Hf #H1 #H #x1 #Hx1 destruct
-  >(eq_inv_gr_next_bi … Hx1) -x1
-  /2 width=3 by ex2_intro/
-]
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** after_inv_ppp *)
-lemma gr_after_inv_push_bi_push:
-      ∀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 (gr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
-#x #Hf #Hx destruct <(eq_inv_gr_push_bi … Hx) -f //
-qed-.
-
-(*** after_inv_ppn *)
-lemma gr_after_inv_push_bi_next:
-      ∀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 (gr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
-#x #Hf #Hx destruct elim (eq_inv_gr_push_next … Hx)
-qed-.
-
-(*** after_inv_pnn *)
-lemma gr_after_inv_push_next_next:
-      ∀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 (gr_after_inv_push_next … Hg … H1 H2) -g1 -g2
-#x #Hf #Hx destruct <(eq_inv_gr_next_bi … Hx) -f //
-qed-.
-
-(*** after_inv_pnp *)
-lemma gr_after_inv_push_next_push:
-      ∀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 (gr_after_inv_push_next … Hg … H1 H2) -g1 -g2
-#x #Hf #Hx destruct elim (eq_inv_gr_next_push … Hx)
-qed-.
-
-(*** after_inv_nxn *)
-lemma gr_after_inv_next_sn_next:
-      ∀g1,f2,g. g1 ⊚ f2 ≘ g →
-      ∀f1,f. ↑f1 = g1 → ↑f = g → f1 ⊚ f2 ≘ f.
-#g1 #f2 #g #Hg #f1 #f #H1 #H elim (gr_after_inv_next_sn … Hg … H1) -g1
-#x #Hf #Hx destruct <(eq_inv_gr_next_bi … Hx) -f //
-qed-.
-
-(*** after_inv_nxp *)
-lemma gr_after_inv_next_sn_push:
-      ∀g1,f2,g. g1 ⊚ f2 ≘ g →
-      ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥.
-#g1 #f2 #g #Hg #f1 #f #H1 #H elim (gr_after_inv_next_sn … Hg … H1) -g1
-#x #Hf #Hx destruct elim (eq_inv_gr_next_push … Hx)
-qed-.
-
-(*** after_inv_pxp *)
-lemma gr_after_inv_push_sn_push:
-      ∀g1,g2,g. g1 ⊚ g2 ≘ g →
-      ∀f1,f. ⫯f1 = g1 → ⫯f = g →
-      ∃∃f2. f1 ⊚ f2 ≘ f & ⫯f2 = g2.
-#g1 #g2 elim (gr_map_split_tl g2)
-#Hg2 #g #Hg #f1 #f #H1 #H
-[ lapply (gr_after_inv_push_bi_push … Hg … H1 … H) -g1 -g
-  /2 width=3 by ex2_intro/
-| elim (gr_after_inv_push_next_push … Hg … H1 … H) -g1 -g -f1 -f //
-]
-qed-.
-
-(*** after_inv_pxn *)
-lemma gr_after_inv_push_sn_next:
-      ∀g1,g2,g. g1 ⊚ g2 ≘ g →
-      ∀f1,f. ⫯f1 = g1 → ↑f = g →
-      ∃∃f2. f1 ⊚ f2 ≘ f & ↑f2 = g2.
-#g1 #g2 elim (gr_map_split_tl g2)
-#Hg2 #g #Hg #f1 #f #H1 #H
-[ elim (gr_after_inv_push_bi_next … Hg … H1 … H) -g1 -g -f1 -f //
-| lapply (gr_after_inv_push_next_next … Hg … H1 … H) -g1 -g
-  /2 width=3 by ex2_intro/
-]
-qed-.
-
-(*** after_inv_xxp *)
-lemma gr_after_inv_push:
-      ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f. ⫯f = g →
-      ∃∃f1,f2. f1 ⊚ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2.
-#g1 elim (gr_map_split_tl g1)
-#Hg1 #g2 #g #Hg #f #H
-[ elim (gr_after_inv_push_sn_push … Hg … H) -g /2 width=5 by ex3_2_intro/
-| elim (gr_after_inv_next_sn_push … Hg … H) -g2 -g -f //
-]
-qed-.
-
-(*** after_inv_xxn *)
-lemma gr_after_inv_next:
-      ∀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 elim (gr_map_split_tl g1)
-#Hg1 #g2 #g #Hg #f #H
-[ elim (gr_after_inv_push_sn_next … Hg … H) -g
-  /3 width=5 by or_introl, ex3_2_intro/
-| /4 width=5 by gr_after_inv_next_sn_next, or_intror, ex2_intro/
-]
-qed-.
-
-(*** after_inv_pxx *)
-lemma gr_after_inv_push_sn:
-      ∀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 elim (gr_map_split_tl g2)
-#Hg2 #g #Hg #f1 #H
-[ elim (gr_after_inv_push_bi … Hg … H) -g1
-  /3 width=5 by or_introl, ex3_2_intro/
-| elim (gr_after_inv_push_next … Hg … H) -g1
-  /3 width=5 by or_intror, ex3_2_intro/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_after.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_after.ma
deleted file mode 100644 (file)
index ad71eea..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_after_eq.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Main constructions *******************************************************)
-
-(*** after_trans1 *)
-corec theorem gr_after_trans_sn:
-              ∀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 (gr_after_inv_push … Hg0 … H0) -g0
-  #f1 #f2 #Hf0 #H1 #H2
-  cases (gr_after_inv_push_bi … Hg … H2 H3) -g2 -g3
-  #f #Hf #H /3 width=7 by gr_after_refl/
-| #Hf4 #H0 #H3 #H4 #g1 #g2 #Hg0 #g #Hg
-  cases (gr_after_inv_push … Hg0 … H0) -g0
-  #f1 #f2 #Hf0 #H1 #H2
-  cases (gr_after_inv_push_next … Hg … H2 H3) -g2 -g3
-  #f #Hf #H /3 width=7 by gr_after_push/
-| #Hf4 #H0 #H4 #g1 #g2 #Hg0 #g #Hg
-  cases (gr_after_inv_next … Hg0 … H0) -g0 *
-  [ #f1 #f2 #Hf0 #H1 #H2
-    cases (gr_after_inv_next_sn … Hg … H2) -g2
-    #f #Hf #H /3 width=7 by gr_after_push/
-  | #f1 #Hf0 #H1 /3 width=6 by gr_after_next/
-  ]
-]
-qed-.
-
-(*** after_trans2 *)
-corec theorem gr_after_trans_dx:
-              ∀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 (gr_after_inv_push … Hg0 … H0) -g0
-  #f2 #f3 #Hf0 #H2 #H3
-  cases (gr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
-  #f #Hf #H /3 width=7 by gr_after_refl/
-| #Hf4 #H1 #H0 #H4 #g2 #g3 #Hg0 #g #Hg
-  cases (gr_after_inv_next … Hg0 … H0) -g0 *
-  [ #f2 #f3 #Hf0 #H2 #H3
-    cases (gr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
-    #f #Hf #H /3 width=7 by gr_after_push/
-  | #f2 #Hf0 #H2
-    cases (gr_after_inv_push_next … Hg … H1 H2) -g1 -g2
-    #f #Hf #H /3 width=6 by gr_after_next/
-  ]
-| #Hf4 #H1 #H4 #f2 #f3 #Hf0 #g #Hg
-  cases (gr_after_inv_next_sn … Hg … H1) -g1
-  #f #Hg #H /3 width=6 by gr_after_next/
-]
-qed-.
-
-(* Main inversions **********************************************************)
-
-(*** after_mono *)
-corec theorem gr_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 (gr_after_inv_push_bi … Hy … H1 H2) -g1 -g2 /3 width=8 by gr_eq_push/
-| cases (gr_after_inv_push_next … Hy … H1 H2) -g1 -g2 /3 width=8 by gr_eq_next/
-| cases (gr_after_inv_next_sn … Hy … H1) -g1 /3 width=8 by gr_eq_next/
-]
-qed-.
-
-(*** after_mono_eq *)
-lemma gr_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 gr_after_mono, gr_after_eq_repl_back_dx, gr_after_eq_repl_back_sn/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_after_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_after_ist.ma
deleted file mode 100644 (file)
index ecca35e..0000000
+++ /dev/null
@@ -1,63 +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/arith/nat_pred_succ.ma".
-include "ground/relocation/gr_pat_tls.ma".
-include "ground/relocation/gr_ist_tls.ma".
-include "ground/relocation/gr_after_pat_tls.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(*** H_after_inj *)
-definition H_gr_after_inj: predicate gr_map ≝
-           λf1. 𝐓❪f1❫ →
-           ∀f,f21,f22. f1 ⊚ f21 ≘ f → f1 ⊚ f22 ≘ f → f21 ≡ f22.
-
-(* Main destructions with gr_ist ********************************************)
-
-(*** after_inj_O_aux *)
-corec fact gr_after_inj_unit_aux:
-           ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_after_inj f1.
-#f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
-cases (gr_pat_inv_unit_bi … H1f1) -H1f1 [|*: // ] #g1 #H1
-lapply (gr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
-cases (H2g1 (𝟏)) #p #Hp
-cases (gr_after_inv_push_sn … H1f … H1) -H1f * #g21 #g #H1g #H21 #H
-[ cases (gr_after_inv_push_sn_push … H2f … H1 H) -f1 -f #g22 #H2g #H22
-  @(gr_eq_push … H21 H22) -f21 -f22
-| cases (gr_after_inv_push_sn_next … H2f … H1 H) -f1 -f #g22 #H2g #H22
-  @(gr_eq_next … H21 H22) -f21 -f22
-]
-@(gr_after_inj_unit_aux (⫰*[↓p]g1) … (⫰*[↓p]g)) -gr_after_inj_unit_aux
-/2 width=1 by gr_after_tls_sn_tls, gr_ist_tls, gr_pat_unit_succ_tls/
-qed-.
-
-(*** after_inj_aux *)
-fact gr_after_inj_aux:
-     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_after_inj f1) →
-     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_gr_after_inj f1.
-#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
-#i2 #IH #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
-elim (gr_pat_inv_unit_succ … H1f1) -H1f1 [|*: // ] #g1 #H1g1 #H1
-elim (gr_after_inv_next_sn … H1f … H1) -H1f #g #H1g #H
-lapply (gr_after_inv_next_sn_next … H2f … H1 H) -f #H2g
-/3 width=6 by gr_ist_inv_next/
-qed-.
-
-(*** after_inj *)
-theorem gr_after_inj:
-        ∀f1. H_gr_after_inj f1.
-#f1 #H cases (H (𝟏))
-/3 width=7 by gr_after_inj_aux, gr_after_inj_unit_aux/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_basic.ma
deleted file mode 100644 (file)
index 00c0672..0000000
+++ /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/arith/nat_le_pred.ma".
-include "ground/relocation/gr_basic.ma".
-include "ground/relocation/gr_after_uni.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_basic **********************************************)
-
-(*** after_basic_rc *)
-lemma after_basic_rc (d2) (d1):
-      d1 ≤ d2 → ∀h2,h1.d2 ≤ h1+d1 → 𝐛❨d2,h2❩ ⊚ 𝐛❨d1,h1❩ ≘ 𝐛❨d1,h1+h2❩.
-#d2 #d1 @(nat_ind_2_succ … d2 d1) -d2 -d1
-[ #d1 #H #h2 #h1 #_
-  <(nle_inv_zero_dx … H) -d1 //
-| #d2 #IH #_ #h2 #h1 <nplus_zero_dx #H
-  elim (nle_inv_succ_sn … H) -H #Hd2 #Hh1
-  >Hh1 -Hh1 <nplus_succ_sn
-  /3 width=7 by gr_after_push/
-| #d2 #d1 #IH #H1 #h2 #h1 <nplus_succ_dx #H2
-  lapply (nle_inv_succ_bi … H1) -H1 #H1
-  lapply (nle_inv_succ_bi … H2) -H2 #H2
-  /3 width=7 by gr_after_refl/
-]
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_eq.ma
deleted file mode 100644 (file)
index 095c4ad..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_after.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** after_eq_repl_back2 *)
-corec lemma gr_after_eq_repl_back_sn:
-            ∀f1,f. gr_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 (gr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by gr_after_refl/
-| cases (gr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by gr_after_push/
-| cases (gr_eq_inv_next_sn …  H0 …  H21) -g21 /3 width=5 by gr_after_next/
-]
-qed-.
-
-(*** after_eq_repl_fwd2 *)
-lemma gr_after_eq_repl_fwd_sn:
-      ∀f1,f. gr_eq_repl_fwd (λf2. f2 ⊚ f1 ≘ f).
-#f1 #f @gr_eq_repl_sym /2 width=3 by gr_after_eq_repl_back_sn/
-qed-.
-
-(*** after_eq_repl_back1 *)
-corec lemma gr_after_eq_repl_back_dx:
-            ∀f2,f. gr_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 (gr_eq_inv_push_sn …  H0 …  H11) -g11 /3 width=7 by gr_after_refl/
-| cases (gr_eq_inv_next_sn …  H0 …  H11) -g11 /3 width=7 by gr_after_push/
-| @(gr_after_next … H2 H) /2 width=5 by/
-]
-qed-.
-
-(*** after_eq_repl_fwd1 *)
-lemma gr_after_eq_repl_fwd_dx:
-      ∀f2,f. gr_eq_repl_fwd (λf1. f2 ⊚ f1 ≘ f).
-#f2 #f @gr_eq_repl_sym /2 width=3 by gr_after_eq_repl_back_dx/
-qed-.
-
-(*** after_eq_repl_back0 *)
-corec lemma gr_after_eq_repl_back:
-            ∀f1,f2. gr_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 (gr_eq_inv_push_sn …  H0 …  H01) -g01 /3 width=7 by gr_after_refl/
-| cases (gr_eq_inv_next_sn …  H0 …  H01) -g01 /3 width=7 by gr_after_push/
-| cases (gr_eq_inv_next_sn …  H0 …  H01) -g01 /3 width=5 by gr_after_next/
-]
-qed-.
-
-(*** after_eq_repl_fwd0 *)
-lemma gr_after_eq_repl_fwd:
-      ∀f2,f1. gr_eq_repl_fwd (λf. f2 ⊚ f1 ≘ f).
-#f2 #f1 @gr_eq_repl_sym /2 width=3 by gr_after_eq_repl_back/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_isi.ma
deleted file mode 100644 (file)
index 189c675..0000000
+++ /dev/null
@@ -1,73 +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/relocation/gr_isi.ma".
-include "ground/relocation/gr_after_after.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_isi ************************************************)
-
-(*** after_isid_sn *)
-corec lemma gr_after_isi_sn:
-            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⊚ f2 ≘ f2.
-#f1 * -f1
-#f1 #g1 #Hf1 #H1 #f2 cases (gr_map_split_tl f2) #H2
-/3 width=7 by gr_after_push, gr_after_refl/
-qed.
-
-(*** after_isid_dx *)
-corec lemma gr_after_isi_dx:
-            ∀f2. 𝐈❪f2❫ → ∀f1. f1 ⊚ f2 ≘ f1.
-#f2 * -f2
-#f2 #g2 #Hf2 #H2 #f1 cases (gr_map_split_tl f1) #H1
-[ /3 width=7 by gr_after_refl/
-| @(gr_after_next … H1 H1) /3 width=3 by gr_isi_push/
-]
-qed.
-
-(* Destructions with gr_isi *************************************************)
-
-(*** after_isid_inv_sn *)
-lemma gr_after_isi_inv_sn:
-      ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f.
-/3 width=6 by gr_after_isi_sn, gr_after_mono/ qed-.
-
-(*** after_isid_inv_dx *)
-lemma gr_after_isi_inv_dx:
-      ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f2❫ → f1 ≡ f.
-/3 width=6 by gr_after_isi_dx, gr_after_mono/ qed-.
-
-(*** after_fwd_isid1 *)
-corec lemma gr_after_des_isi_sn:
-            ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫.
-#f1 #f2 #f * -f1 -f2 -f
-#f1 #f2 #f #g1 [1,2: #g2 ] #g #Hf #H1 [1,2: #H2 ] #H0 #H
-[ /4 width=6 by gr_isi_inv_push, gr_isi_push/ ]
-cases (gr_isi_inv_next … H … H0)
-qed-.
-
-(*** after_fwd_isid2 *)
-corec lemma gr_after_des_isi_dx:
-            ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f2❫.
-#f1 #f2 #f * -f1 -f2 -f
-#f1 #f2 #f #g1 [1,2: #g2 ] #g #Hf #H1 [1,2: #H2 ] #H0 #H
-[ /4 width=6 by gr_isi_inv_push, gr_isi_push/ ]
-cases (gr_isi_inv_next … H … H0)
-qed-.
-
-(*** after_inv_isid3 *)
-lemma gr_after_inv_isi:
-      ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫ ∧ 𝐈❪f2❫.
-/3 width=4 by gr_after_des_isi_dx, gr_after_des_isi_sn, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_ist.ma
deleted file mode 100644 (file)
index 466df35..0000000
+++ /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/relocation/gr_pat_lt.ma".
-include "ground/relocation/gr_ist.ma".
-include "ground/relocation/gr_after_pat.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Destructions with gr_ist *************************************************)
-
-(*** after_istot_fwd *)
-lemma gr_after_ist_des:
-      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f2❫ → 𝐓❪f1❫ → 𝐓❪f❫.
-#f2 #f1 #f #Hf #Hf2 #Hf1 #i1 elim (Hf1 i1) -Hf1
-#i2 #Hf1 elim (Hf2 i2) -Hf2
-/3 width=7 by gr_after_des_pat, ex_intro/
-qed-.
-
-(*** after_fwd_istot_dx *)
-lemma gr_after_des_ist_dx:
-      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f❫ → 𝐓❪f1❫.
-#f2 #f1 #f #H #Hf #i1 elim (Hf i1) -Hf
-#i2 #Hf elim (gr_after_pat_des … Hf … H) -f /2 width=2 by ex_intro/
-qed-.
-
-(*** after_fwd_istot_sn *)
-lemma gr_after_des_ist_sn:
-      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f❫ → 𝐓❪f2❫.
-#f2 #f1 #f #H #Hf #i1 elim (Hf i1) -Hf
-#i #Hf elim (gr_after_pat_des … Hf … H) -f
-#i2 #Hf1 #Hf2 lapply (gr_pat_increasing … Hf1) -f1
-#Hi12 elim (gr_pat_le_ex … Hf2 … Hi12) -i2 /2 width=2 by ex_intro/
-qed-.
-
-(*** after_at1_fwd *)
-lemma gr_after_des_ist_pat:
-      ∀f1,i1,i2. @❪i1, f1❫ ≘ i2 → ∀f2. 𝐓❪f2❫ → ∀f. f2 ⊚ f1 ≘ f →
-      ∃∃i. @❪i2, f2❫ ≘ i & @❪i1, f❫ ≘ i.
-#f1 #i1 #i2 #Hf1 #f2 #Hf2 #f #Hf elim (Hf2 i2) -Hf2
-/3 width=8 by gr_after_des_pat, ex2_intro/
-qed-.
-
-(* Inversions with gr_ist ***************************************************)
-
-(*** after_inv_istot *)
-lemma gr_after_inv_ist:
-      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f❫ → ∧∧ 𝐓❪f2❫ & 𝐓❪f1❫.
-/3 width=4 by gr_after_des_ist_sn, gr_after_des_ist_dx, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_ist_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_ist_isi.ma
deleted file mode 100644 (file)
index 9a08ba3..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_ist_isi.ma".
-include "ground/relocation/gr_after_ist.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Destructions with gr_ist and gr_isi **************************************)
-
-(*** after_fwd_isid_sn *)
-lemma gr_after_des_ist_eq_sn:
-      ∀f2,f1,f. 𝐓❪f❫ → f2 ⊚ f1 ≘ f → f1 ≡ f → 𝐈❪f2❫.
-#f2 #f1 #f #H #Hf elim (gr_after_inv_ist … Hf H) -H
-#Hf2 #Hf1 #H @gr_isi_pat_total // -Hf2
-#i2 #i #Hf2 elim (Hf1 i2) -Hf1
-#i0 #Hf1 lapply (gr_pat_increasing … Hf1)
-#Hi20 lapply (gr_after_des_pat_sn … i0 … Hf1 … Hf) -Hf
-/3 width=7 by gr_pat_eq_repl_back, gr_pat_mono, gr_pat_id_le/
-qed-.
-
-(*** after_fwd_isid_dx *)
-lemma gr_after_des_ist_eq_dx:
-      ∀f2,f1,f.  𝐓❪f❫ → f2 ⊚ f1 ≘ f → f2 ≡ f → 𝐈❪f1❫.
-#f2 #f1 #f #H #Hf elim (gr_after_inv_ist … Hf H) -H
-#Hf2 #Hf1 #H2 @gr_isi_pat_total // -Hf1
-#i1 #i2 #Hi12 elim (gr_after_des_ist_pat … Hi12 … Hf) -f1
-/3 width=8 by gr_pat_inj, gr_pat_eq_repl_back/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_isu.ma
deleted file mode 100644 (file)
index f1c8df1..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isu_uni.ma".
-include "ground/relocation/gr_after_uni.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_isu ************************************************)
-
-(*** after_isid_isuni *)
-lemma gr_after_isu_isi_next:
-      ∀f1,f2. 𝐈❪f2❫ → 𝐔❪f1❫ → f1 ⊚ ↑f2 ≘ ↑f1.
-#f1 #f2 #Hf2 #H
-elim (gr_isu_inv_uni … H) -H #h #H
-/5 width=7 by gr_after_uni_isi_next, gr_after_eq_repl_back, gr_after_eq_repl_back_sn, gr_eq_next/
-qed.
-
-(*** after_uni_next2 *)
-lemma gr_after_isu_next_sn:
-      ∀f2. 𝐔❪f2❫ → ∀f1,f. ↑f2 ⊚ f1 ≘ f → f2 ⊚ ↑f1 ≘ f.
-#f2 #H #f1 #f #Hf
-elim (gr_isu_inv_uni … H) -H #h #H
-/5 width=7 by gr_after_uni_next_sn, gr_after_eq_repl_fwd_sn, gr_after_eq_repl_back_sn, gr_eq_next/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_nat_uni_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_nat_uni_tls.ma
deleted file mode 100644 (file)
index 632d35f..0000000
+++ /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/relocation/gr_tls.ma".
-include "ground/relocation/gr_nat.ma".
-include "ground/relocation/gr_isi_uni.ma".
-include "ground/relocation/gr_after_isi.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_nat and gr_uni *************************************)
-
-(*** after_uni_dx *)
-lemma gr_after_nat_uni (l2) (l1):
-      ∀f2. @↑❪l1, f2❫ ≘ l2 →
-      ∀f. f2 ⊚ 𝐮❨l1❩ ≘ f → 𝐮❨l2❩ ⊚ ⫰*[l2] f2 ≘ f.
-#l2 @(nat_ind_succ … l2) -l2
-[ #l1 #f2 #Hf2 #f #Hf
-  elim (gr_nat_inv_zero_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
-  lapply (gr_after_isi_inv_dx … Hf ?) -Hf
-  /3 width=3 by gr_after_isi_sn, gr_after_eq_repl_back/
-| #l2 #IH #l1 #f2 #Hf2 #f #Hf
-  elim (gr_nat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
-  [ #g2 #k1 #Hg2 #H1 #H2 destruct
-    elim (gr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H destruct
-    <gr_tls_swap /3 width=5 by gr_after_next/
-  | #g2 #Hg2 #H2 destruct
-    elim (gr_after_inv_next_sn … Hf) -Hf [ |*: // ] #g #Hg #H destruct
-    <gr_tls_swap /3 width=5 by gr_after_next/
-  ]
-]
-qed.
-
-(*** after_uni_sn *)
-lemma gr_nat_after_uni_tls (l2) (l1):
-      ∀f2. @↑❪l1, f2❫ ≘ l2 →
-      ∀f. 𝐮❨l2❩ ⊚ ⫰*[l2] f2 ≘ f → f2 ⊚ 𝐮❨l1❩ ≘ f.
-#l2 @(nat_ind_succ … l2) -l2
-[ #l1 #f2 #Hf2 #f #Hf
-  elim (gr_nat_inv_zero_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
-  lapply (gr_after_isi_inv_sn … Hf ?) -Hf
-  /3 width=3 by gr_after_isi_dx, gr_after_eq_repl_back/
-| #l2 #IH #l1 #f2 #Hf2 #f #Hf
-  elim (gr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H destruct
-  elim (gr_nat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
-  [ #g2 #k1 #Hg2 #H1 #H2 destruct /3 width=7 by gr_after_push/
-  | #g2 #Hg2 #H2 destruct /3 width=5 by gr_after_next/
-  ]
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat.ma
deleted file mode 100644 (file)
index 2892b20..0000000
+++ /dev/null
@@ -1,87 +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/relocation/gr_pat_pat.ma".
-include "ground/relocation/gr_after.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Destructions with gr_pat *************************************************)
-
-(*** after_at_fwd *)
-lemma gr_after_pat_des (i) (i1):
-      ∀f. @❪i1, f❫ ≘ i → ∀f2,f1. f2 ⊚ f1 ≘ f →
-      ∃∃i2. @❪i1, f1❫ ≘ i2 & @❪i2, f2❫ ≘ i.
-#i elim i -i [2: #i #IH ] #i1 #f #Hf #f2 #f1 #Hf21
-[ elim (gr_pat_inv_succ_dx … Hf) -Hf [1,3:* |*: // ]
-  [1: #g #j1 #Hg #H0 #H |2,4: #g #Hg #H ]
-| elim (gr_pat_inv_unit_dx … Hf) -Hf //
-  #g #H1 #H
-]
-[2: elim (gr_after_inv_next … Hf21 … H) -f *
-    [ #g2 #g1 #Hg21 #H2 #H1 | #g2 #Hg21 #H2 ]
-|*: elim (gr_after_inv_push … Hf21 … H) -f
-    #g2 #g1 #Hg21 #H2 #H1
-]
-[4: -Hg21 |*: elim (IH … Hg … Hg21) -g -IH ]
-/3 width=9 by gr_pat_refl, gr_pat_push, gr_pat_next, ex2_intro/
-qed-.
-
-(*** after_fwd_at *)
-lemma gr_after_des_pat (i) (i2) (i1):
-      ∀f1,f2. @❪i1, f1❫ ≘ i2 → @❪i2, f2❫ ≘ i →
-      ∀f. f2 ⊚ f1 ≘ f → @❪i1, f❫ ≘ i.
-#i elim i -i [2: #i #IH ] #i2 #i1 #f1 #f2 #Hf1 #Hf2 #f #Hf
-[ elim (gr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
-  #g2 [ #j2 ] #Hg2 [ #H22 ] #H20
-  [ elim (gr_pat_inv_succ_dx … Hf1 … H22) -i2 *
-    #g1 [ #j1 ] #Hg1 [ #H11 ] #H10
-    [ elim (gr_after_inv_push_bi … Hf … H20 H10) -f1 -f2 /3 width=7 by gr_pat_push/
-    | elim (gr_after_inv_push_next … Hf … H20 H10) -f1 -f2 /3 width=6 by gr_pat_next/
-    ]
-  | elim (gr_after_inv_next_sn … Hf … H20) -f2 /3 width=7 by gr_pat_next/
-  ]
-| elim (gr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H22 #H20
-  elim (gr_pat_inv_unit_dx … Hf1 … H22) -i2 #g1 #H11 #H10
-  elim (gr_after_inv_push_bi … Hf … H20 H10) -f1 -f2 /2 width=2 by gr_pat_refl/
-]
-qed-.
-
-(*** after_fwd_at2 *)
-lemma gr_after_des_pat_sn (i1) (i):
-      ∀f. @❪i1, f❫ ≘ i → ∀f1,i2. @❪i1, f1❫ ≘ i2 →
-      ∀f2. f2 ⊚ f1 ≘ f → @❪i2, f2❫ ≘ i.
-#i1 #i #f #Hf #f1 #i2 #Hf1 #f2 #H elim (gr_after_pat_des … Hf … H) -f
-#j1 #H #Hf2 <(gr_pat_mono … Hf1 … H) -i1 -i2 //
-qed-.
-
-(*** after_fwd_at1 *)
-lemma gr_after_des_pat_dx (i) (i2) (i1):
-      ∀f,f2. @❪i1, f❫ ≘ i → @❪i2, f2❫ ≘ i →
-      ∀f1. f2 ⊚ f1 ≘ f → @❪i1, f1❫ ≘ i2.
-#i elim i -i [2: #i #IH ] #i2 #i1 #f #f2 #Hf #Hf2 #f1 #Hf1
-[ elim (gr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
-  #g [ #j1 ] #Hg [ #H01 ] #H00
-  elim (gr_pat_inv_succ_dx … Hf2) -Hf2 [1,3,5,7: * |*: // ]
-  #g2 [1,3: #j2 ] #Hg2 [1,2: #H22 ] #H20
-  [ elim (gr_after_inv_push_sn_push … Hf1 … H20 H00) -f2 -f /3 width=7 by gr_pat_push/
-  | elim (gr_after_inv_push_sn_next … Hf1 … H20 H00) -f2 -f /3 width=5 by gr_pat_next/
-  | elim (gr_after_inv_next_sn_push … Hf1 … H20 H00)
-  | /4 width=9 by gr_after_inv_next_sn_next, gr_pat_next/
-  ]
-| elim (gr_pat_inv_unit_dx … Hf) -Hf // #g #H01 #H00
-  elim (gr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H21 #H20
-  elim (gr_after_inv_push_sn_push … Hf1 … H20 H00) -f2 -f /3 width=2 by gr_pat_refl/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_tls.ma
deleted file mode 100644 (file)
index 4c0623e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_pat.ma".
-include "ground/relocation/gr_after.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_pat and gr_tls *************************************)
-
-(* Note: this requires ↑ on first n *)
-(*** after_tls *)
-lemma gr_after_tls_sn_tls (n):
-      ∀f1,f2,f. @❪𝟏, f1❫ ≘ ↑n →
-      f1 ⊚ f2 ≘ f → ⫰*[n]f1 ⊚ f2 ≘ ⫰*[n]f.
-#n @(nat_ind_succ … n) -n //
-#n #IH #f1 #f2 #f #Hf1 #Hf
-cases (gr_pat_inv_unit_succ … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1
-cases (gr_after_inv_next_sn … Hf … H1) -Hf #g #Hg #H0 destruct
-<gr_tls_swap <gr_tls_swap /2 width=1 by/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_uni_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_pat_uni_tls.ma
deleted file mode 100644 (file)
index fe12866..0000000
+++ /dev/null
@@ -1,79 +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/relocation/gr_tls.ma".
-include "ground/relocation/gr_pat.ma".
-(* * it should not depend on gr_isi *)
-include "ground/relocation/gr_isi_uni.ma".
-include "ground/relocation/gr_after_isi.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_pat and gr_uni and gr_tls **************************)
-
-(*** after_uni_succ_dx *)
-lemma gr_after_pat_uni (i2) (i1):
-      ∀f2. @❪i1, f2❫ ≘ i2 →
-      ∀f. f2 ⊚ 𝐮❨i1❩ ≘ f → 𝐮❨i2❩ ⊚ ⫰*[i2] f2 ≘ f.
-#i2 elim i2 -i2
-[ #i1 #f2 #Hf2 #f #Hf
-  elim (gr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
-  elim (gr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H
-  lapply (gr_after_isi_inv_dx … Hg ?) -Hg
-  /4 width=5 by gr_after_isi_sn, gr_after_eq_repl_back, gr_after_next/
-| #i2 #IH #i1 #f2 #Hf2 #f #Hf >nsucc_inj
-  elim (gr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
-  [ #g2 #j1 #Hg2 #H1 #H2 destruct >nsucc_inj in Hf; #Hf
-    elim (gr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H destruct
-    <gr_tls_swap /3 width=5 by gr_after_next/
-  | #g2 #Hg2 #H2 destruct
-    elim (gr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H destruct
-    <gr_tls_swap /3 width=5 by gr_after_next/
-  ]
-]
-qed.
-
-(*** after_uni_succ_sn *)
-lemma gr_pat_after_uni_tls (i2) (i1):
-      ∀f2. @❪i1, f2❫ ≘ i2 →
-      ∀f. 𝐮❨i2❩ ⊚ ⫰*[i2] f2 ≘ f → f2 ⊚ 𝐮❨i1❩ ≘ f.
-#i2 elim i2 -i2
-[ #i1 #f2 #Hf2 #f #Hf
-  elim (gr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
-  elim (gr_after_inv_next_sn … Hf) -Hf [ |*: // ] #g #Hg #H destruct
-  lapply (gr_after_isi_inv_sn … Hg ?) -Hg
-  /4 width=7 by gr_after_isi_dx, gr_after_eq_repl_back, gr_after_push/
-| #i2 #IH #i1 #f2 #Hf2 #f >nsucc_inj #Hf
-  elim (gr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H destruct
-  elim (gr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
-  [ #g2 #j1 #Hg2 #H1 #H2 destruct <gr_tls_swap in Hg; /3 width=7 by gr_after_push/
-  | #g2 #Hg2 #H2 destruct <gr_tls_swap in Hg; /3 width=5 by gr_after_next/
-  ]
-]
-qed-.
-
-(* Advanced constructions with gr_uni ***************************************)
-
-(*** after_uni_one_dx *)
-lemma gr_after_push_unit:
-      ∀f2,f. ⫯f2 ⊚ 𝐮❨𝟏❩ ≘ f → 𝐮❨𝟏❩ ⊚ f2 ≘ f.
-#f2 #f #H
-@(gr_after_pat_uni … (⫯f2))
-/2 width=3 by gr_pat_refl/
-qed.
-
-(*** after_uni_one_sn *)
-lemma gr_after_unit_sn:
-      ∀f1,f. 𝐮❨𝟏❩ ⊚ f1 ≘ f → ⫯f1 ⊚ 𝐮❨𝟏❩ ≘ f.
-/3 width=3 by gr_pat_after_uni_tls, gr_pat_refl/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_after_uni.ma
deleted file mode 100644 (file)
index 41f35ee..0000000
+++ /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 "ground/arith/nat_plus.ma".
-(* * it should not depend on gr_isi *)
-include "ground/relocation/gr_isi_uni.ma".
-include "ground/relocation/gr_after_isi.ma".
-
-(* RELATIONAL COMPOSITION FOR GENERIC RELOCATION MAPS ***********************)
-
-(* Constructions with gr_uni ************************************************)
-
-(*** after_uni *)
-lemma gr_after_uni (h1) (h2): 𝐮❨h1❩ ⊚ 𝐮❨h2❩ ≘ 𝐮❨h2+h1❩.
-#h1 @(nat_ind_succ … h1) -h1
-/3 width=5 by gr_after_isi_sn, gr_after_next, eq_f/
-qed.
-
-(*** after_uni_sn_pushs *)
-lemma gr_after_uni_sn_pushs (h):
-      ∀f. 𝐮❨h❩ ⊚ f ≘ ↑*[h]f.
-#h @(nat_ind_succ … h) -h
-/2 width=5 by gr_after_isi_sn, gr_after_next/
-qed.
-
-lemma gr_after_uni_isi_next (h1):
-      ∀f2. 𝐈❪f2❫ → 𝐮❨h1❩ ⊚ ↑f2 ≘ ↑𝐮❨h1❩.
-#h1 @(nat_ind_succ … h1) -h1
-/5 width=7 by gr_after_isi_dx, gr_after_eq_repl_back_sn, gr_after_next, gr_after_push, gr_isi_inv_eq_push/
-qed.
-
-lemma gr_after_uni_next_sn (h2):
-      ∀f1,f. ↑𝐮❨h2❩ ⊚ f1 ≘ f → 𝐮❨h2❩ ⊚ ↑f1 ≘ f.
-#h2 @(nat_ind_succ … h2) -h2
-[ #f1 #f #Hf
-  elim (gr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H0 destruct
-  /4 width=7 by gr_after_isi_inv_sn, gr_after_isi_sn, gr_after_eq_repl_back, gr_eq_next/
-| #h2 #IH #f1 #f #Hf
-  elim (gr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H0 destruct
-  /3 width=5 by gr_after_next/
-]
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_basic.ma
deleted file mode 100644 (file)
index 50f6e27..0000000
+++ /dev/null
@@ -1,37 +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/notation/functions/element_b_2.ma".
-include "ground/relocation/gr_pushs.ma".
-include "ground/relocation/gr_uni.ma".
-
-(* BASIC ELEMENTS FOR GENERIC RELOCATION MAPS *******************************)
-
-definition basic (d) (h): gr_map ≝ ⫯*[d] 𝐮❨h❩.
-
-interpretation
-  "basic elements (generic relocation maps)"
-  'ElementB d h = (basic d h).
-
-(* Basic constructions ******************************************************)
-
-(*** at_basic_succ_sn *)
-lemma gr_basic_succ_sn (d) (h): ⫯𝐛❨d,h❩ = 𝐛❨↑d,h❩.
-#d #h >gr_pushs_succ //
-qed.
-
-(*** at_basic_zero_succ *)
-lemma gr_basic_zero_succ (h): ↑𝐛❨𝟎,h❩ = 𝐛❨𝟎,↑h❩.
-#h >gr_nexts_succ //
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter.ma
deleted file mode 100644 (file)
index 2ec6991..0000000
+++ /dev/null
@@ -1,238 +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/notation/relations/rcoafter_3.ma".
-include "ground/xoa/ex_3_2.ma".
-include "ground/relocation/gr_tl.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(*** coafter *)
-coinductive gr_coafter: relation3 gr_map gr_map gr_map ≝
-(*** coafter_refl *)
-| gr_coafter_refl (f1) (f2) (f) (g1) (g2) (g):
-  gr_coafter f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → gr_coafter g1 g2 g
-(*** coafter_push *)
-| gr_coafter_push (f1) (f2) (f) (g1) (g2) (g):
-  gr_coafter f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → gr_coafter g1 g2 g
-(*** coafter_next *)
-| gr_coafter_next (f1) (f2) (f) (g1) (g):
-  gr_coafter f1 f2 f → ↑f1 = g1 → ⫯f = g → gr_coafter g1 f2 g
-.
-
-interpretation
-  "relational co-composition (generic relocation maps)"
-  'RCoAfter f1 f2 f = (gr_coafter f1 f2 f).
-
-(* Basic inversions *********************************************************)
-
-(*** coafter_inv_ppx *)
-lemma gr_coafter_inv_push_bi:
-      ∀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
-  >(eq_inv_gr_push_bi … Hx1) >(eq_inv_gr_push_bi … Hx2) -x2 -x1
-  /2 width=3 by ex2_intro/
-| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct
-  elim (eq_inv_gr_push_next … Hx2)
-| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
-  elim (eq_inv_gr_push_next … Hx1)
-]
-qed-.
-
-(*** coafter_inv_pnx *)
-lemma gr_coafter_inv_push_next:
-      ∀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 (eq_inv_gr_next_push … Hx2)
-| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct
-  >(eq_inv_gr_push_bi … Hx1) >(eq_inv_gr_next_bi … Hx2) -x2 -x1
-  /2 width=3 by ex2_intro/
-| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
-  elim (eq_inv_gr_push_next … Hx1)
-]
-qed-.
-
-(*** coafter_inv_nxx *)
-lemma gr_coafter_inv_next_sn:
-      ∀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 (eq_inv_gr_next_push … Hx1)
-| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct
-  elim (eq_inv_gr_next_push … Hx1)
-| #g #Hf #H1 #H #x1 #Hx1 destruct
-  >(eq_inv_gr_next_bi … Hx1) -x1
-  /2 width=3 by ex2_intro/
-]
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** coafter_inv_ppp *)
-lemma gr_coafter_inv_push_bi_push:
-      ∀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 (gr_coafter_inv_push_bi … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
-<(eq_inv_gr_push_bi … Hx) -f //
-qed-.
-
-(*** coafter_inv_ppn *)
-lemma gr_coafter_inv_push_bi_next:
-      ∀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 (gr_coafter_inv_push_bi … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
-elim (eq_inv_gr_push_next … Hx)
-qed-.
-
-(*** coafter_inv_pnn *)
-lemma gr_coafter_inv_push_next_next:
-      ∀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 (gr_coafter_inv_push_next … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
-<(eq_inv_gr_next_bi … Hx) -f //
-qed-.
-
-(*** coafter_inv_pnp *)
-lemma gr_coafter_inv_push_next_push:
-      ∀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 (gr_coafter_inv_push_next … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
-elim (eq_inv_gr_next_push … Hx)
-qed-.
-
-(*** coafter_inv_nxp *)
-lemma gr_coafter_inv_next_sn_push:
-      ∀g1,f2,g. g1 ~⊚ f2 ≘ g →
-      ∀f1,f. ↑f1 = g1 → ⫯f = g → f1 ~⊚ f2 ≘ f.
-#g1 #f2 #g #Hg #f1 #f #H1 #H
-elim (gr_coafter_inv_next_sn … Hg … H1) -g1 #x #Hf #Hx destruct
-<(eq_inv_gr_push_bi … Hx) -f //
-qed-.
-
-(*** coafter_inv_nxn *)
-lemma gr_coafter_inv_next_sn_next:
-      ∀g1,f2,g. g1 ~⊚ f2 ≘ g →
-      ∀f1,f. ↑f1 = g1 → ↑f = g → ⊥.
-#g1 #f2 #g #Hg #f1 #f #H1 #H
-elim (gr_coafter_inv_next_sn … Hg … H1) -g1 #x #Hf #Hx destruct
-elim (eq_inv_gr_push_next … Hx)
-qed-.
-
-(*** coafter_inv_pxp *)
-lemma gr_coafter_inv_push_sn_push:
-      ∀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 (gr_map_split_tl g2) #H2
-[ lapply (gr_coafter_inv_push_bi_push … Hg … H1 H2 H) -g1 -g
-  /2 width=3 by ex2_intro/
-| elim (gr_coafter_inv_push_next_push … Hg … H1 H2 H)
-]
-qed-.
-
-(*** coafter_inv_pxn *)
-lemma gr_coafter_inv_push_sn_next:
-      ∀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 (gr_map_split_tl g2) #H2
-[ elim (gr_coafter_inv_push_bi_next … Hg … H1 H2 H)
-| lapply (gr_coafter_inv_push_next_next … Hg … H1 … H) -g1 -g
-  /2 width=3 by ex2_intro/
-]
-qed-.
-
-(*** coafter_inv_xxn *)
-lemma gr_coafter_inv_next:
-      ∀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 (gr_map_split_tl g1) #H1
-[ elim (gr_coafter_inv_push_sn_next … Hg … H1 H) -g
-  /2 width=5 by ex3_2_intro/
-| elim (gr_coafter_inv_next_sn_next … Hg … H1 H)
-]
-qed-.
-
-(*** coafter_inv_xnn *)
-lemma gr_coafter_inv_next_dx_next:
-      ∀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 (gr_coafter_inv_next … Hg … H) -g #z1 #z2 #Hf #H1 #H2 destruct
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** coafter_inv_xxp *)
-lemma gr_coafter_inv_push:
-      ∀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 (gr_map_split_tl g1) #H1
-[ elim (gr_coafter_inv_push_sn_push … Hg … H1 H) -g
-  /3 width=5 by or_introl, ex3_2_intro/
-| /4 width=5 by gr_coafter_inv_next_sn_push, or_intror, ex2_intro/
-]
-qed-.
-
-(*** coafter_inv_pxx *)
-lemma gr_coafter_inv_push_sn:
-      ∀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 (gr_map_split_tl g2) #H2
-[ elim (gr_coafter_inv_push_bi … Hg … H1 H2) -g1
-  /3 width=5 by or_introl, ex3_2_intro/
-| elim (gr_coafter_inv_push_next … Hg … H1 H2) -g1
-  /3 width=5 by or_intror, ex3_2_intro/
-]
-qed-.
-
-(* Inversions with gr_tl ****************************************************)
-
-(*** coafter_inv_tl1 *)
-lemma gr_coafter_inv_tl_dx:
-      ∀g2,g1,g. g2 ~⊚ ⫰g1 ≘ g →
-      ∃∃f. ⫯g2 ~⊚ g1 ≘ f & ⫰f = g.
-#g2 #g1 #g
-elim (gr_map_split_tl g1) #H1 #H2
-[ /3 width=7 by gr_coafter_refl, ex2_intro/
-| @(ex2_intro … (↑g)) /2 width=7 by gr_coafter_push/ (* * full auto fails *)
-]
-qed-.
-
-(*** coafter_inv_tl0 *)
-lemma gr_coafter_inv_tl:
-      ∀g2,g1,g. g2 ~⊚ g1 ≘ ⫰g →
-      ∃∃f1. ⫯g2 ~⊚ f1 ≘ g & ⫰f1 = g1.
-#g2 #g1 #g
-elim (gr_map_split_tl g) #H1 #H2
-[ /3 width=7 by gr_coafter_refl, ex2_intro/
-| @(ex2_intro … (↑g1)) /2 width=7 by gr_coafter_push/ (* * full auto fails *)
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_coafter.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_coafter.ma
deleted file mode 100644 (file)
index 6fd545f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_coafter_eq.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Main inversions **********************************************************)
-
-(*** coafter_mono *)
-corec theorem gr_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 (gr_coafter_inv_push_bi … Hy … H1 H2) -g1 -g2 /3 width=8 by gr_eq_push/
-| cases (gr_coafter_inv_push_next … Hy … H1 H2) -g1 -g2 /3 width=8 by gr_eq_next/
-| cases (gr_coafter_inv_next_sn … Hy … H1) -g1 /3 width=8 by gr_eq_push/
-]
-qed-.
-
-(*** coafter_mono_eq *)
-lemma gr_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 gr_coafter_mono, gr_coafter_eq_repl_back_dx, gr_coafter_eq_repl_back_sn/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_coafter_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_coafter_ist.ma
deleted file mode 100644 (file)
index 9d79801..0000000
+++ /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/relocation/gr_pat_tls.ma".
-include "ground/relocation/gr_ist_tls.ma".
-include "ground/relocation/gr_coafter_nat_tls.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(*** H_coafter_inj *)
-definition H_gr_coafter_inj: predicate gr_map ≝
-           λf1. 𝐓❪f1❫ →
-           ∀f,f21,f22. f1 ~⊚ f21 ≘ f → f1 ~⊚ f22 ≘ f → f21 ≡ f22.
-
-(* Main destructions with gr_ist ********************************************)
-
-(*** coafter_inj_O_aux *)
-corec fact gr_coafter_inj_unit_aux:
-           ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_coafter_inj f1.
-#f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
-cases (gr_pat_inv_unit_bi … H1f1) -H1f1 [ |*: // ] #g1 #H1
-lapply (gr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
-cases (H2g1 (𝟏)) #n #Hn
-cases (gr_coafter_inv_push_sn … H1f … H1) -H1f * #g21 #g #H1g #H21 #H
-[ cases (gr_coafter_inv_push_sn_push … H2f … H1 H) -f1 -f #g22 #H2g #H22
-  @(gr_eq_push … H21 H22) -f21 -f22
-| cases (gr_coafter_inv_push_sn_next … H2f … H1 H) -f1 -f #g22 #H2g #H22
-  @(gr_eq_next … H21 H22) -f21 -f22
-]
-@(gr_coafter_inj_unit_aux (⫰*[↓n]g1) … (⫰*[↓n]g)) -gr_coafter_inj_unit_aux
-/2 width=1 by gr_coafter_tls_bi_tls, gr_ist_tls, gr_pat_unit_succ_tls/
-qed-.
-
-(*** coafter_inj_aux *)
-fact gr_coafter_inj_aux:
-     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_coafter_inj f1) →
-     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_gr_coafter_inj f1.
-#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
-#i2 #IH #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
-elim (gr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #H1g1 #H1
-elim (gr_coafter_inv_next_sn … H1f … H1) -H1f #g #H1g #H
-lapply (gr_coafter_inv_next_sn_push … H2f … H1 H) -f #H2g
-/3 width=6 by gr_ist_inv_next/
-qed-.
-
-(*** coafter_inj *)
-theorem gr_coafter_inj:
-        ∀f1. H_gr_coafter_inj f1.
-#f1 #H cases (H (𝟏)) /3 width=7 by gr_coafter_inj_aux, gr_coafter_inj_unit_aux/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_eq.ma
deleted file mode 100644 (file)
index 3d0b3c4..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_coafter.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** coafter_eq_repl_back2 *)
-corec lemma gr_coafter_eq_repl_back_sn:
-            ∀f1,f. gr_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 (gr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by gr_coafter_refl/
-| cases (gr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by gr_coafter_push/
-| cases (gr_eq_inv_next_sn …  H0 …  H21) -g21 /3 width=5 by gr_coafter_next/
-]
-qed-.
-
-(*** coafter_eq_repl_fwd2 *)
-lemma gr_coafter_eq_repl_fwd_sn:
-      ∀f1,f. gr_eq_repl_fwd (λf2. f2 ~⊚ f1 ≘ f).
-#f1 #f @gr_eq_repl_sym /2 width=3 by gr_coafter_eq_repl_back_sn/
-qed-.
-
-(*** coafter_eq_repl_back1 *)
-corec lemma gr_coafter_eq_repl_back_dx:
-            ∀f2,f. gr_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 (gr_eq_inv_push_sn …  H0 …  H11) -g11 /3 width=7 by gr_coafter_refl/
-| cases (gr_eq_inv_next_sn …  H0 …  H11) -g11 /3 width=7 by gr_coafter_push/
-| @(gr_coafter_next … H2 H) /2 width=5 by/
-]
-qed-.
-
-(*** coafter_eq_repl_fwd1 *)
-lemma gr_coafter_eq_repl_fwd_dx:
-      ∀f2,f. gr_eq_repl_fwd (λf1. f2 ~⊚ f1 ≘ f).
-#f2 #f @gr_eq_repl_sym /2 width=3 by gr_coafter_eq_repl_back_dx/
-qed-.
-
-(*** coafter_eq_repl_back0 *)
-corec lemma gr_coafter_eq_repl_back:
-            ∀f1,f2. gr_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 (gr_eq_inv_push_sn …  H0 …  H01) -g01 /3 width=7 by gr_coafter_refl/
-| cases (gr_eq_inv_next_sn …  H0 …  H01) -g01 /3 width=7 by gr_coafter_push/
-| cases (gr_eq_inv_push_sn …  H0 …  H01) -g01 /3 width=5 by gr_coafter_next/
-]
-qed-.
-
-(*** coafter_eq_repl_fwd0 *)
-lemma gr_coafter_eq_repl_fwd:
-      ∀f2,f1. gr_eq_repl_fwd (λf. f2 ~⊚ f1 ≘ f).
-#f2 #f1 @gr_eq_repl_sym /2 width=3 by gr_coafter_eq_repl_back/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_isi.ma
deleted file mode 100644 (file)
index 0464b90..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi_id.ma".
-include "ground/relocation/gr_coafter_coafter.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_isi ************************************************)
-
-(*** coafter_isid_sn *)
-corec lemma gr_coafter_isi_sn:
-            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ~⊚ f2 ≘ f2.
-#f1 * -f1 #f1 #g1 #Hf1 #H1 #f2
-cases (gr_map_split_tl f2) #H2
-/3 width=7 by gr_coafter_push, gr_coafter_refl/
-qed.
-
-(*** coafter_isid_dx *)
-corec lemma gr_coafter_isi_dx:
-            ∀f2,f. 𝐈❪f2❫ → 𝐈❪f❫ → ∀f1. f1 ~⊚ f2 ≘ f.
-#f2 #f * -f2 #f2 #g2 #Hf2 #H2 * -f #f #g #Hf #H #f1
-cases (gr_map_split_tl f1) #H1
-[ /3 width=7 by gr_coafter_refl/
-| @(gr_coafter_next … H1 … H) /3 width=3 by gr_isi_push/
-]
-qed.
-
-(* Inversions with gr_isi ***************************************************)
-
-(*** coafter_isid_inv_sn *)
-lemma gr_coafter_isi_inv_sn:
-      ∀f1,f2,f. f1 ~⊚ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f.
-/3 width=6 by gr_coafter_isi_sn, gr_coafter_mono/ qed-.
-
-(*** coafter_isid_inv_dx *)
-lemma gr_coafter_isi_inv_dx:
-      ∀f1,f2,f. f1 ~⊚ f2 ≘ f → 𝐈❪f2❫ → 𝐈❪f❫.
-/4 width=4 by gr_eq_id_isi, gr_coafter_isi_dx, gr_coafter_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_ist_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_ist_isf.ma
deleted file mode 100644 (file)
index 20d861a..0000000
+++ /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/relocation/gr_pat_tls.ma".
-include "ground/relocation/gr_isf_tls.ma".
-include "ground/relocation/gr_ist_tls.ma".
-include "ground/relocation/gr_coafter_nat_tls.ma".
-include "ground/relocation/gr_coafter_isi.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(*** H_coafter_isfin2_fwd *)
-definition H_gr_coafter_des_ist_isf: predicate gr_map ≝
-           λf1. ∀f2. 𝐅❪f2❫ → 𝐓❪f1❫ → ∀f. f1 ~⊚ f2 ≘ f →  𝐅❪f❫.
-
-(* Destructions with gr_ist and gr_isf **************************************)
-
-(*** coafter_isfin2_fwd_O_aux *)
-fact gr_coafter_des_ist_isf_unit_aux:
-     ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_coafter_des_ist_isf f1.
-#f1 #Hf1 #f2 #H
-generalize in match Hf1; generalize in match f1; -f1
-@(gr_isf_ind … H) -f2
-[ /3 width=4 by gr_coafter_isi_inv_dx, gr_isf_isi/ ]
-#f2 #_ #IH #f1 #H #Hf1 #f #Hf
-elim (gr_pat_inv_unit_bi … H) -H [ |*: // ] #g1 #H1
-lapply (gr_ist_inv_push … Hf1 … H1) -Hf1 #Hg1
-elim (Hg1 (𝟏)) #n #Hn
-[ elim (gr_coafter_inv_push_bi … Hf) | elim (gr_coafter_inv_push_next … Hf)
-] -Hf [1,6: |*: // ] #g #Hg #H0 destruct
-/5 width=6 by gr_isf_next, gr_isf_push, gr_isf_inv_tls, gr_ist_tls, gr_pat_unit_succ_tls, gr_coafter_tls_sn_tls/
-qed-.
-
-(*** coafter_isfin2_fwd_aux *)
-fact gr_coafter_des_ist_isf_aux:
-     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_coafter_des_ist_isf f1) →
-     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_gr_coafter_des_ist_isf f1.
-#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
-#i2 #IH #f1 #H1f1 #f2 #Hf2 #H2f1 #f #Hf
-elim (gr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #Hg1 #H1
-elim (gr_coafter_inv_next_sn … Hf … H1) -Hf #g #Hg #H0
-lapply (IH … Hg1 … Hg) -i2 -Hg
-/2 width=4 by gr_ist_inv_next, gr_isf_push/ (* * full auto fails *)
-qed-.
-
-(*** coafter_isfin2_fwd *)
-lemma gr_coafter_des_ist_isf: ∀f1. H_gr_coafter_des_ist_isf f1.
-#f1 #f2 #Hf2 #Hf1 cases (Hf1 (𝟏))
-/3 width=7 by gr_coafter_des_ist_isf_aux, gr_coafter_des_ist_isf_unit_aux/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_ist_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_ist_isi.ma
deleted file mode 100644 (file)
index a73cfa2..0000000
+++ /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/relocation/gr_pat_tls.ma".
-include "ground/relocation/gr_isi_tls.ma".
-include "ground/relocation/gr_ist_tls.ma".
-include "ground/relocation/gr_coafter_nat_tls.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(*** H_coafter_fwd_isid2 *)
-definition H_gr_coafter_des_ist_sn_isi: predicate gr_map ≝
-           λf1. ∀f2,f. f1 ~⊚ f2 ≘ f → 𝐓❪f1❫ → 𝐈❪f❫ → 𝐈❪f2❫.
-
-(* Destructions with gr_ist and gr_isi **************************************)
-
-(*** coafter_fwd_isid2_O_aux *)
-corec fact gr_coafter_des_ist_sn_isi_unit_aux:
-           ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_coafter_des_ist_sn_isi f1.
-#f1 #H1f1 #f2 #f #H #H2f1 #Hf
-cases (gr_pat_inv_unit_bi … H1f1) -H1f1 [ |*: // ] #g1 #H1
-lapply (gr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
-cases (H2g1 (𝟏)) #n #Hn
-cases (gr_coafter_inv_push_sn … H … H1) -H * #g2 #g #H #H2 #H0
-[ lapply (gr_isi_inv_push … Hf … H0) -Hf #Hg
-  @(gr_isi_push … H2) -H2
-  /3 width=7 by gr_coafter_tls_sn_tls, gr_pat_unit_succ_tls, gr_ist_tls, gr_isi_tls/
-| cases (gr_isi_inv_next … Hf … H0)
-]
-qed-.
-
-(*** coafter_fwd_isid2_aux *)
-fact gr_coafter_des_ist_sn_isi_aux:
-     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_gr_coafter_des_ist_sn_isi f1) →
-     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_gr_coafter_des_ist_sn_isi f1.
-#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
-#i2 #IH #f1 #H1f1 #f2 #f #H #H2f1 #Hf
-elim (gr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #Hg1 #H1
-elim (gr_coafter_inv_next_sn … H … H1) -H #g #Hg #H0
-@(IH … Hg1 … Hg) /2 width=3 by gr_ist_inv_next, gr_isi_inv_push/ (* * full auto fails *)
-qed-.
-
-(*** coafter_fwd_isid2 *)
-lemma gr_coafter_des_ist_sn_isi:
-      ∀f1. H_gr_coafter_des_ist_sn_isi f1.
-#f1 #f2 #f #Hf #H cases (H (𝟏))
-/3 width=7 by gr_coafter_des_ist_sn_isi_aux, gr_coafter_des_ist_sn_isi_unit_aux/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_isu.ma
deleted file mode 100644 (file)
index 8c94f6a..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi_pushs.ma".
-include "ground/relocation/gr_isu_uni.ma".
-include "ground/relocation/gr_coafter_uni_pushs.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_isu and gr_isi *************************************)
-
-(*** coafter_isuni_isid *)
-lemma gr_coafter_isu_isi:
-      ∀f2. 𝐈❪f2❫ → ∀f1. 𝐔❪f1❫ → f1 ~⊚ f2 ≘ f2.
-#f #Hf #g #H
-elim (gr_isu_inv_uni … H) -H #n #H
-/5 width=4 by gr_isi_pushs, gr_isi_inv_eq_repl, gr_coafter_eq_repl_back, gr_coafter_eq_repl_back_sn/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_nat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_nat_tls.ma
deleted file mode 100644 (file)
index 0402e29..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_nat.ma".
-include "ground/relocation/gr_coafter.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_nat and gr_tls *************************************)
-
-(*** coafter_tls *)
-lemma gr_coafter_tls_bi_tls (n2) (n1):
-      ∀f1,f2,f. @↑❪n1, f1❫ ≘ n2 →
-      f1 ~⊚ f2 ≘ f → ⫰*[n2]f1 ~⊚ ⫰*[n1]f2 ≘ ⫰*[n2]f.
-#n2 @(nat_ind_succ … n2) -n2 [ #n1 | #n2 #IH * [| #n1 ] ] #f1 #f2 #f #Hf1 #Hf
-[ elim (gr_nat_inv_zero_dx … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 destruct //
-| elim (gr_nat_inv_zero_succ … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1
-  elim (gr_coafter_inv_next_sn … Hf … H1) -Hf #g #Hg #H0 destruct
-  lapply (IH … Hg1 Hg) -IH -Hg1 -Hg //
-| elim (gr_nat_inv_succ_dx … Hf1) -Hf1 [1,3: * |*: // ] #g1 [ #n1 ] #Hg1 [ #H ] #H1
-  [ elim (gr_coafter_inv_push_sn … Hf … H1) -Hf * #g2 #g #Hg #H2 #H0 destruct
-    lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H //
-  | elim (gr_coafter_inv_next_sn … Hf … H1) -Hf #g #Hg #H0 destruct
-    lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H //
-  ]
-]
-qed.
-
-(*** coafter_tls_O *)
-lemma gr_coafter_tls_sn_tls:
-      ∀n,f1,f2,f. @↑❪𝟎, f1❫ ≘ n →
-      f1 ~⊚ f2 ≘ f → ⫰*[n]f1 ~⊚ f2 ≘ ⫰*[n]f.
-/2 width=1 by gr_coafter_tls_bi_tls/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_nat_tls_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_nat_tls_pushs.ma
deleted file mode 100644 (file)
index d427092..0000000
+++ /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/relocation/gr_pushs.ma".
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_nat.ma".
-include "ground/relocation/gr_coafter.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Destructions with gr_nat and gr_tls and gr_pushs *************************)
-
-(*** coafter_fwd_pushs *)
-lemma gr_coafter_des_pushs_dx (n) (m):
-      ∀g2,f1,g. g2 ~⊚ ⫯*[m]f1 ≘ g → @↑❪m, g2❫ ≘ n →
-      ∃∃f. ⫰*[n]g2 ~⊚ f1 ≘ f & ⫯*[n] f = g.
-#n @(nat_ind_succ … n) -n
-[ #m #g2 #f1 #g #Hg #H
-  elim (gr_nat_inv_zero_dx … H) -H [|*: // ] #f2 #H1 #H2 destruct
-  /2 width=3 by ex2_intro/
-| #n #IH * [| #m ] #g2 #f1 #g #Hg #H
-  [ elim (gr_nat_inv_zero_succ … H) -H [|*: // ] #f2 #Hmn #H destruct
-    elim (gr_coafter_inv_next_sn … Hg) -Hg [|*: // ] #f #Hf #H destruct
-    elim (IH … Hf Hmn) -IH -Hf -Hmn /2 width=3 by ex2_intro/
-  | elim (gr_nat_inv_succ_bi … H) -H [1,4: * |*: // ] #f2 #Hmn #H destruct
-    [ elim (gr_coafter_inv_push_bi … Hg) -Hg [|*: // ] #f #Hf #H destruct
-      elim (IH … Hf Hmn) -IH -Hf -Hmn /2 width=3 by ex2_intro/
-    | elim (gr_coafter_inv_next_sn … Hg) -Hg [|*: // ] #f #Hf #H destruct
-      elim (IH … Hf Hmn) -IH -Hf -Hmn /2 width=3 by ex2_intro/
-    ]
-  ]
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_pat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_pat_tls.ma
deleted file mode 100644 (file)
index 529b4ca..0000000
+++ /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/relocation/gr_pat_tls.ma".
-include "ground/relocation/gr_coafter_nat_tls.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_pat and gr_tls *************************************)
-
-(* Note: this does not require ↑ first and second j *)
-(*** coafter_tls_succ *)
-lemma gr_coafter_tls_tl_tls:
-      ∀g2,g1,g. g2 ~⊚ g1 ≘ g →
-      ∀j. @❪𝟏, g2❫ ≘ j → ⫰*[j]g2 ~⊚ ⫰g1 ≘ ⫰*[j]g.
-#g2 #g1 #g #Hg #j #Hg2
-lapply (gr_nat_pred_bi … Hg2) -Hg2 #Hg2
-lapply (gr_coafter_tls_bi_tls … Hg2 … Hg) -Hg #Hg
-lapply (gr_pat_unit_succ_tls … Hg2) -Hg2 #H
-elim (gr_pat_inv_unit_bi … H) -H [ |*: // ] #f2 #H2
-elim (gr_coafter_inv_push_sn … Hg … H2) -Hg * #f1 #f #Hf #H1 #H0
->(npsucc_pred j) <gr_tls_succ <gr_tls_succ //
-qed.
-
-(* Note: parked for now
-lemma coafter_fwd_xpx_pushs:
-      ∀g2,f1,g,i,j. @❪i, g2❫ ≘ j → g2 ~⊚ ⫯*[i]⫯f1 ≘ g →
-      ∃∃f.  ⫰*[↑j]g2 ~⊚ f1 ≘ f & ⫯*[j]⫯f = g.
-#g2 #g1 #g #i #j #Hg2 <pushs_xn #Hg(coafter_fwd_pushs … Hg Hg2) #f #H0 destruct
-lapply (coafter_tls … Hg2 Hg) -Hg <tls_pushs <tls_pushs #Hf
-lapply (at_inv_tls … Hg2) -Hg2 #H
-lapply (coafter_eq_repl_fwd2 … Hf … H) -H -Hf #Hf
-elim (coafter_inv_ppx … Hf) [|*: // ] -Hf #g #Hg #H destruct
-/2 width=3 by ex2_intro/
-qed-.
-
-lemma coafter_fwd_xnx_pushs:
-      ∀g2,f1,g,i,j. @❪i, g2❫ ≘ j → g2 ~⊚ ⫯*[i]↑f1 ≘ g →
-      ∃∃f. ⫰*[↑j]g2 ~⊚ f1 ≘ f & ⫯*[j] ↑f = g.
-#g2 #g1 #g #i #j #Hg2 #Hg
-elim (coafter_fwd_pushs … Hg Hg2) #f #H0 destruct
-lapply (coafter_tls … Hg2 Hg) -Hg <tls_pushs <tls_pushs #Hf
-lapply (at_inv_tls … Hg2) -Hg2 #H
-lapply (coafter_eq_repl_fwd2 … Hf … H) -H -Hf #Hf
-elim (coafter_inv_pnx … Hf) [|*: // ] -Hf #g #Hg #H destruct
-/2 width=3 by ex2_intro/
-qed-.
-*)
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_uni_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_coafter_uni_pushs.ma
deleted file mode 100644 (file)
index 9c903a6..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_pushs.ma".
-include "ground/relocation/gr_uni.ma".
-(* * it should not depend on gr_isi *)
-include "ground/relocation/gr_coafter_isi.ma".
-
-(* RELATIONAL CO-COMPOSITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_uni and gr_pushs ***********************************)
-
-(*** coafter_uni_sn *)
-lemma gr_coafter_uni_sn_pushs (n):
-      ∀f. 𝐮❨n❩ ~⊚ f ≘ ⫯*[n] f.
-#n @(nat_ind_succ … n) -n
-/2 width=5 by gr_coafter_isi_sn, gr_coafter_next/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_eq.ma
deleted file mode 100644 (file)
index c5d58ea..0000000
+++ /dev/null
@@ -1,75 +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/xoa/ex_3_2.ma".
-include "ground/notation/relations/ideq_2.ma".
-include "ground/lib/stream_eq.ma".
-include "ground/relocation/gr_map.ma".
-
-(* EXTENSIONAL EQUIVALENCE FOR GENERIC RELOCATION MAPS **********************)
-
-(*** eq *)
-coinductive gr_eq: relation gr_map ≝
-(*** eq_push *)
-| gr_eq_push (f1) (f2) (g1) (g2):
-  gr_eq f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → gr_eq g1 g2
-(*** eq_next *)
-| gr_eq_next (f1) (f2) (g1) (g2):
-  gr_eq f1 f2 → ↑f1 = g1 → ↑f2 = g2 → gr_eq g1 g2
-.
-
-interpretation
-  "extensional equivalence (generic relocation maps)"
-  'IdEq f1 f2 = (gr_eq f1 f2).
-
-(*** eq_repl *)
-definition gr_eq_repl (R:relation …) ≝
-           ∀f1,f2. f1 ≡ f2 → R f1 f2.
-
-(*** eq_repl_back *)
-definition gr_eq_repl_back (R:predicate …) ≝
-           ∀f1. R f1 → ∀f2. f1 ≡ f2 → R f2.
-
-(*** eq_repl_fwd *)
-definition gr_eq_repl_fwd (R:predicate …) ≝
-           ∀f1. R f1 → ∀f2. f2 ≡ f1 → R f2.
-
-(* Basic constructions ******************************************************)
-
-(*** eq_sym *)
-corec lemma gr_eq_sym: symmetric … gr_eq.
-#f1 #f2 * -f1 -f2
-#f1 #f2 #g1 #g2 #Hf #H1 #H2
-[ @(gr_eq_push … H2 H1) | @(gr_eq_next … H2 H1) ] -g2 -g1 /2 width=1 by/
-qed-.
-
-(*** eq_repl_sym *)
-lemma gr_eq_repl_sym (R):
-      gr_eq_repl_back R → gr_eq_repl_fwd R.
-/3 width=3 by gr_eq_sym/ qed-.
-
-(* Alternative definition with stream_eq (specific) *************************)
-
-alias symbol "subseteq" (instance 1) = "relation inclusion".
-
-corec lemma stream_eq_gr_eq: stream_eq … ⊆ gr_eq.
-* #b1 #f1 * #b2 #f2 #H
-cases (stream_eq_inv_cons_bi … H) -H [|*: // ] * -b2 #Hf
-cases b1 /3 width=5 by gr_eq_next, gr_eq_push/
-qed.
-
-corec lemma gr_eq_inv_stream_eq: gr_eq ⊆ stream_eq ….
-#g1 #g2 * -g1 -g2 #f1 #f2 #g1 #g2 #Hf * * -g1 -g2
-/3 width=1 by stream_eq_cons/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla.ma
deleted file mode 100644 (file)
index 5ab8b1d..0000000
+++ /dev/null
@@ -1,81 +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/notation/relations/rfun_c_2.ma".
-include "ground/arith/nat_succ.ma".
-include "ground/relocation/gr_isi.ma".
-
-(* FINITE COLENGTH ASSIGNMENT FOR GENERIC RELOCATION MAPS *******************)
-
-(*** fcla *)
-inductive gr_fcla: relation2 gr_map nat ≝
-(*** fcla_isid *)
-| gr_fcla_isi (f): 𝐈❪f❫ → gr_fcla f (𝟎)
-(*** fcla_push *)
-| gr_fcla_push (f) (n): gr_fcla f n → gr_fcla (⫯f) n
-(*** fcla_next *)
-| gr_fcla_next (f) (n): gr_fcla f n → gr_fcla (↑f) (↑n)
-.
-
-interpretation
-  "finite colength assignment (generic relocation maps)"
-  'RFunC f n = (gr_fcla f n).
-
-(* Basic inversions *********************************************************)
-
-(*** fcla_inv_px *)
-lemma gr_fcla_inv_push (g) (m): 𝐂❪g❫ ≘ m → ∀f. ⫯f = g → 𝐂❪f❫ ≘ m.
-#g #m * -g -m
-[ /3 width=3 by gr_fcla_isi, gr_isi_inv_push/
-| #g #m #Hg #f #H >(eq_inv_gr_push_bi … H) -f //
-| #g #m #_ #f #H elim (eq_inv_gr_push_next … H)
-]
-qed-.
-
-(*** fcla_inv_nx *)
-lemma gr_fcla_inv_next (g) (m): 𝐂❪g❫ ≘ m → ∀f. ↑f = g → ∃∃n. 𝐂❪f❫ ≘ n & ↑n = m.
-#g #m * -g -m
-[ #g #Hg #f #H destruct
-  elim (gr_isi_inv_next … Hg) -Hg //
-| #g #m #_ #f #H elim (eq_inv_gr_next_push … H)
-| #g #m #Hg #f #H >(eq_inv_gr_next_bi …  H) -f
-  /2 width=3 by ex2_intro/
-]
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** cla_inv_nn *)
-lemma gr_cla_inv_next_succ (g) (m): 𝐂❪g❫ ≘ m → ∀f,n. ↑f = g → ↑n = m → 𝐂❪f❫ ≘ n.
-#g #m #H #f #n #H1 #H2 elim (gr_fcla_inv_next … H … H1) -g
-#x #Hf #H destruct <(eq_inv_nsucc_bi … H) -n //
-qed-.
-
-(*** cla_inv_np *)
-lemma gr_cla_inv_next_zero (g) (m): 𝐂❪g❫ ≘ m → ∀f. ↑f = g → 𝟎 = m → ⊥.
-#g #m #H #f #H1 elim (gr_fcla_inv_next … H … H1) -g
-#x #_ #H1 #H2 destruct /2 width=2 by eq_inv_zero_nsucc/
-qed-.
-
-(*** fcla_inv_xp *)
-lemma gr_fcla_inv_zero (g) (m): 𝐂❪g❫ ≘ m → 𝟎 = m → 𝐈❪g❫.
-#g #m #H elim H -g -m /3 width=3 by gr_isi_push/
-#g #m #_ #_ #H destruct elim (eq_inv_zero_nsucc … H)
-qed-.
-
-(*** fcla_inv_isid *)
-lemma gr_fcla_inv_isi (g) (m): 𝐂❪g❫ ≘ m → 𝐈❪g❫ → 𝟎 = m.
-#f #n #H elim H -f -n /3 width=3 by gr_isi_inv_push/
-#f #n #_ #_ #H elim (gr_isi_inv_next … H) -H //
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_eq.ma
deleted file mode 100644 (file)
index 3e8a9c9..0000000
+++ /dev/null
@@ -1,34 +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/relocation/gr_isi_eq.ma".
-include "ground/relocation/gr_fcla.ma".
-
-(* FINITE COLENGTH ASSIGNMENT FOR GENERIC RELOCATION MAPS *******************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** fcla_eq_repl_back *)
-lemma gr_fcla_eq_repl_back (n):
-      gr_eq_repl_back … (λf. 𝐂❪f❫ ≘ n).
-#n #f1 #H elim H -f1 -n /3 width=3 by gr_fcla_isi, gr_isi_eq_repl_back/
-#f1 #n #_ #IH #g2 #H [ elim (gr_eq_inv_push_sn … H) | elim (gr_eq_inv_next_sn … H) ] -H
-/3 width=3 by gr_fcla_push, gr_fcla_next/
-qed-.
-
-(*** fcla_eq_repl_fwd *)
-lemma fcla_eq_repl_fwd (n):
-      gr_eq_repl_fwd … (λf. 𝐂❪f❫ ≘ n).
-#n @gr_eq_repl_sym /2 width=3 by gr_fcla_eq_repl_back/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_fcla.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_fcla.ma
deleted file mode 100644 (file)
index 34c640e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_fcla.ma".
-
-(* FINITE COLENGTH ASSIGNMENT FOR GENERIC RELOCATION MAPS *******************)
-
-(* Main destructions ********************************************************)
-
-(*** fcla_mono *)
-theorem gr_fcla_mono (f):
-        ∀n1. 𝐂❪f❫ ≘ n1 → ∀n2. 𝐂❪f❫ ≘ n2 → n1 = n2.
-#f #n #H elim H -f -n
-[ /2 width=3 by gr_fcla_inv_isi/
-| /3 width=3 by gr_fcla_inv_push/
-| #f #n1 #_ #IH #n2 #H elim (gr_fcla_inv_next … H) -H [2,3 : // ]
-  #g #Hf #H destruct >IH //
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_fcla_uni.ma
deleted file mode 100644 (file)
index 8bd26d8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi_uni.ma".
-include "ground/relocation/gr_fcla.ma".
-
-(* FINITE COLENGTH ASSIGNMENT FOR GENERIC RELOCATION MAPS *******************)
-
-(* Constructions with gr_uni ************************************************)
-
-(*** fcla_uni *)
-lemma gr_fcla_uni (n): 𝐂❪𝐮❨n❩❫ ≘ n.
-#n @(nat_ind_succ … n) -n
-/2 width=1 by gr_fcla_isi, gr_fcla_next/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_id.ma
deleted file mode 100644 (file)
index e292db1..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/notation/functions/element_i_0.ma".
-include "ground/relocation/gr_map.ma".
-
-(* IDENTITY ELEMENT FOR GENERIC RELOCATION MAPS *****************************)
-
-(*** id *)
-corec definition gr_id: gr_map ≝ ⫯gr_id.
-
-interpretation
-  "identity element (generic relocation streams)"
-  'ElementI = (gr_id).
-
-(* Basic constructions (specific) *******************************************)
-
-(*** id_rew *)
-lemma gr_id_unfold: ⫯𝐢 = 𝐢.
-<(stream_unfold … (𝐢)) in ⊢ (???%); //
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_id_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_id_eq.ma
deleted file mode 100644 (file)
index f79aa98..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_id.ma".
-
-(* IDENTITY ELEMENT FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Constructions with gr_eq *************************************************)
-
-corec lemma gr_id_eq (f): ⫯f ≡ f → 𝐢 ≡ f.
-cases gr_id_unfold #Hf
-cases (gr_eq_inv_push_sn … Hf) [|*: // ] #_ #H
-cases H in Hf; -H #Hf
-@gr_eq_push [3:|*: // ]
-/3 width=5 by gr_eq_inv_push_bi/
-qed.
-
-(* Inversions with gr_eq ****************************************************)
-
-(* Note: this has the same proof of the previous *)
-corec lemma gr_id_inv_eq (f): 𝐢 ≡ f → ⫯f ≡ f.
-cases gr_id_unfold #Hf
-cases (gr_eq_inv_push_sn … Hf) [|*: // ] #_ #H
-cases H in Hf; -H #Hf
-@gr_eq_push [3:|*: // ]
-/3 width=5 by gr_eq_inv_push_bi/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd.ma
deleted file mode 100644 (file)
index 7ebdf86..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/notation/relations/predicate_omega_1.ma".
-include "ground/relocation/gr_map.ma".
-
-(* DIVERGENCE CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(*** isdiv *)
-coinductive gr_isd: predicate gr_map ≝
-(*** isdiv_next *)
-| gr_isd_next (f) (g):
-  gr_isd f → ↑f = g → gr_isd g
-.
-
-interpretation
-  "divergence condition (generic relocation maps)"
-  'PredicateOmega f = (gr_isd f).
-
-(* Basic inversions *********************************************************)
-
-(*** isdiv_inv_gen *)
-lemma gr_isd_inv_gen (g): 𝛀❪g❫ → ∃∃f. 𝛀❪f❫ & ↑f = g.
-#g * -g
-#f #g #Hf * /2 width=3 by ex2_intro/
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** isdiv_inv_next *)
-lemma gr_isd_inv_next (g): 𝛀❪g❫ → ∀f. ↑f = g → 𝛀❪f❫.
-#g #H elim (gr_isd_inv_gen … H) -H
-#f #Hf * -g #g #H >(eq_inv_gr_next_bi … H) -H //
-qed-.
-
-(*** isdiv_inv_push *)
-lemma gr_isd_inv_push (g): 𝛀❪g❫ → ∀f. ⫯f = g → ⊥.
-#g #H elim (gr_isd_inv_gen … H) -H
-#f #Hf * -g #g #H elim (eq_inv_gr_push_next … H)
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_eq.ma
deleted file mode 100644 (file)
index 37b1e35..0000000
+++ /dev/null
@@ -1,57 +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/relocation/gr_tl_eq_eq.ma".
-include "ground/relocation/gr_isd.ma".
-
-(* DIVERGENCE CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** isdiv_eq_repl_back *)
-corec lemma gr_isd_eq_repl_back:
-            gr_eq_repl_back … gr_isd.
-#f1 #H cases (gr_isd_inv_gen … H) -H
-#g1 #Hg1 #H1 #f2 #Hf cases (gr_eq_inv_next_sn … Hf … H1) -f1
-/3 width=3 by gr_isd_next/
-qed-.
-
-(*** isdiv_eq_repl_fwd *)
-lemma gr_isd_eq_repl_fwd:
-      gr_eq_repl_fwd … gr_isd.
-/3 width=3 by gr_isd_eq_repl_back, gr_eq_repl_sym/ qed-.
-
-(* Main inversions with gr_eq ***********************************************)
-
-(*** isdiv_inv_eq_repl *)
-corec theorem gr_isd_inv_eq_repl (g1) (g2): 𝛀❪g1❫ → 𝛀❪g2❫ → g1 ≡ g2.
-#H1 #H2
-cases (gr_isd_inv_gen … H1) -H1
-cases (gr_isd_inv_gen … H2) -H2
-/3 width=5 by gr_eq_next/
-qed-.
-
-(* Alternative definition with gr_eq ****************************************)
-
-(*** eq_next_isdiv *)
-corec lemma gr_eq_next_isd (f): ↑f ≡ f → 𝛀❪f❫.
-#H cases (gr_eq_inv_next_sn … H) -H
-/4 width=3 by gr_isd_next, gr_eq_trans/
-qed.
-
-(*** eq_next_inv_isdiv *)
-corec lemma gr_eq_next_inv_isd (g): 𝛀❪g❫ → ↑g ≡ g.
-* -g #f #g #Hf *
-/3 width=5 by gr_eq_next/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_nexts.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_nexts.ma
deleted file mode 100644 (file)
index 99a7cf3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_nexts.ma".
-include "ground/relocation/gr_isd.ma".
-
-(* DIVERGENCE CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_nexts **********************************************)
-
-(*** isdiv_nexts *)
-lemma gr_isd_nexts (n) (f): 𝛀❪f❫ → 𝛀❪↑*[n]f❫.
-#n @(nat_ind_succ … n) -n /3 width=3 by gr_isd_next/
-qed.
-
-(* Inversions with gr_nexts *************************************************)
-
-(*** isdiv_inv_nexts *)
-lemma gr_isd_inv_nexts (n) (g): 𝛀❪↑*[n]g❫ → 𝛀❪g❫.
-#n @(nat_ind_succ … n) -n /3 width=3 by gr_isd_inv_next/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_tl.ma
deleted file mode 100644 (file)
index 43e8651..0000000
+++ /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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl.ma".
-include "ground/relocation/gr_isd.ma".
-
-(* DIVERGENCE CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_tl *************************************************)
-
-(*** isdiv_tl *)
-lemma gr_isd_tl (f): 𝛀❪f❫ → 𝛀❪⫰f❫.
-#f cases (gr_map_split_tl f) * #H
-[ elim (gr_isd_inv_push … H) -H //
-| /2 width=3 by gr_isd_inv_next/
-]
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isd_tls.ma
deleted file mode 100644 (file)
index dc5b123..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_isd_tl.ma".
-
-(* DIVERGENCE CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_tls ************************************************)
-
-(*** isdiv_tls *)
-lemma gr_isd_tls (n) (g): 𝛀❪g❫ → 𝛀❪⫰*[n]g❫.
-#n @(nat_ind_succ … n) -n /3 width=1 by gr_isd_tl/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf.ma
deleted file mode 100644 (file)
index 23292e2..0000000
+++ /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/notation/relations/predicate_f_1.ma".
-include "ground/relocation/gr_fcla.ma".
-
-(* FINITE COLENGTH CONDITION FOR GENERIC RELOCATION MAPS ********************)
-
-(*** isfin *)
-definition gr_isf: predicate gr_map ≝
-           λf. ∃n. 𝐂❪f❫ ≘ n.
-
-interpretation
-  "finite colength condition (generic relocation maps)"
-  'PredicateF f = (gr_isf f).
-
-(* Basic eliminations *******************************************************)
-
-(*** isfin_ind *)
-lemma gr_isf_ind (Q:predicate …):
-      (∀f.  𝐈❪f❫ → Q f) →
-      (∀f. 𝐅❪f❫ → Q f → Q (⫯f)) →
-      (∀f. 𝐅❪f❫ → Q f → Q (↑f)) →
-      ∀f. 𝐅❪f❫ → Q f.
-#Q #IH1 #IH2 #IH3 #f #H elim H -H
-#n #H elim H -f -n /3 width=2 by ex_intro/
-qed-.
-
-(* Basic inversions *********************************************************)
-
-(*** isfin_inv_push *)
-lemma gr_isf_inv_push (g): 𝐅❪g❫ → ∀f. ⫯f = g → 𝐅❪f❫.
-#g * /3 width=4 by gr_fcla_inv_push, ex_intro/
-qed-.
-
-(*** isfin_inv_next *)
-lemma gr_isf_inv_next (g): 𝐅❪g❫ → ∀f. ↑f = g → 𝐅❪f❫.
-#g * #n #H #f #H0 elim (gr_fcla_inv_next … H … H0) -g
-/2 width=2 by ex_intro/
-qed-.
-
-(* Basic constructions ******************************************************)
-
-(*** isfin_isid *)
-lemma gr_isf_isi (f): 𝐈❪f❫ → 𝐅❪f❫.
-/3 width=2 by gr_fcla_isi, ex_intro/ qed.
-
-(*** isfin_push *)
-lemma gr_isf_push (f): 𝐅❪f❫ → 𝐅❪⫯f❫.
-#f * /3 width=2 by gr_fcla_push, ex_intro/
-qed.
-
-(*** isfin_next *)
-lemma gr_isf_next (f): 𝐅❪f❫ → 𝐅❪↑f❫.
-#f * /3 width=2 by gr_fcla_next, ex_intro/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_eq.ma
deleted file mode 100644 (file)
index 7b70b78..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_fcla_eq.ma".
-include "ground/relocation/gr_isf.ma".
-
-(* FINITE COLENGTH CONDITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** isfin_eq_repl_back *)
-lemma gr_isf_eq_repl_back:
-      gr_eq_repl_back … gr_isf.
-#f1 * /3 width=4 by gr_fcla_eq_repl_back, ex_intro/
-qed-.
-
-(*** isfin_eq_repl_fwd *)
-lemma gr_isf_eq_repl_fwd: gr_eq_repl_fwd … gr_isf.
-/3 width=3 by gr_isf_eq_repl_back, gr_eq_repl_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_isu.ma
deleted file mode 100644 (file)
index ab1c16f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isu.ma".
-include "ground/relocation/gr_isf.ma".
-
-(* FINITE COLENGTH CONDITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_isu ************************************************)
-
-(*** isuni_fwd_isfin *)
-lemma gr_isf_isu (f): 𝐔❪f❫ → 𝐅❪f❫.
-#f #H elim H -f
-/3 width=1 by gr_isf_next, gr_isf_isi/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_pushs.ma
deleted file mode 100644 (file)
index 4e8e1d2..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_pushs.ma".
-include "ground/relocation/gr_isf.ma".
-
-(* FINITE COLENGTH CONDITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_pushs **********************************************)
-
-(*** isfin_pushs *)
-lemma gr_isf_pushs (n) (f): 𝐅❪f❫ → 𝐅❪⫯*[n]f❫.
-#n @(nat_ind_succ … n) -n /3 width=3 by gr_isf_push/
-qed.
-
-(* Inversions with gr_pushs *************************************************)
-
-(*** isfin_inv_pushs *)
-lemma gr_isf_inv_pushs (n) (g): 𝐅❪⫯*[n]g❫ → 𝐅❪g❫.
-#n @(nat_ind_succ … n) -n /3 width=3 by gr_isf_inv_push/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_tl.ma
deleted file mode 100644 (file)
index 5268136..0000000
+++ /dev/null
@@ -1,34 +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/relocation/gr_tl.ma".
-include "ground/relocation/gr_isf.ma".
-
-(* FINITE COLENGTH CONDITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_tl *************************************************)
-
-(*** isfin_tl *)
-lemma gr_isf_tl (f): 𝐅❪f❫ → 𝐅❪⫰f❫.
-#f elim (gr_map_split_tl f) * #Hf
-/3 width=3 by gr_isf_inv_push, gr_isf_inv_next/
-qed.
-
-(* Inversions with gr_tl ****************************************************)
-
-(*** isfin_inv_tl *)
-lemma gr_isf_inv_tl (g): 𝐅❪⫰g❫ → 𝐅❪g❫.
-#f elim (gr_map_split_tl f) * #Hf
-/2 width=1 by gr_isf_next, gr_isf_push/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_tls.ma
deleted file mode 100644 (file)
index 3815a74..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_isf_tl.ma".
-
-(* FINITE COLENGTH CONDITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_tls ************************************************)
-
-lemma gr_isf_tls (n) (f): 𝐅❪f❫ → 𝐅❪⫰*[n]f❫.
-#n @(nat_ind_succ … n) -n /3 width=1 by gr_isf_tl/
-qed.
-
-(* Inversions with gr_tls ***************************************************)
-
-(*** isfin_inv_tls *)
-lemma gr_isf_inv_tls (n) (g): 𝐅❪⫰*[n]g❫ → 𝐅❪g❫.
-#n @(nat_ind_succ … n) -n /3 width=1 by gr_isf_inv_tl/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isf_uni.ma
deleted file mode 100644 (file)
index 816500b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_fcla_uni.ma".
-include "ground/relocation/gr_isf.ma".
-
-(* FINITE COLENGTH CONDITION FOR GENERIC RELOCATION MAPS ********************)
-
-(* Constructions with gr_uni ************************************************)
-
-(*** isfin_uni *)
-lemma gr_isf_uni (n): 𝐅❪𝐮❨n❩❫.
-/3 width=2 by ex_intro/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi.ma
deleted file mode 100644 (file)
index e9a41cf..0000000
+++ /dev/null
@@ -1,54 +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/notation/relations/predicate_i_1.ma".
-include "ground/relocation/gr_map.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(*** isid *)
-coinductive gr_isi: predicate gr_map ≝
-(*** isid_push *)
-| gr_isi_push (f) (g):
-  gr_isi f → ⫯f = g → gr_isi g
-.
-
-interpretation
-  "identity condition (generic relocation maps)"
-  'PredicateI f = (gr_isi f).
-
-(* Basic inversions *********************************************************)
-
-(*** isid_inv_gen *)
-lemma gr_isi_inv_gen (g): 𝐈❪g❫ → ∃∃f. 𝐈❪f❫ & ⫯f = g.
-#g * -g
-#f #g #Hf /2 width=3 by ex2_intro/
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** isid_inv_push *)
-lemma gr_isi_inv_push (g): 𝐈❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫.
-#g #H
-elim (gr_isi_inv_gen … H) -H #f #Hf
-* -g #g #H
->(eq_inv_gr_push_bi … H) -H //
-qed-.
-
-(*** isid_inv_next *)
-lemma gr_isi_inv_next (g): 𝐈❪g❫ → ∀f. ↑f = g → ⊥.
-#g #H
-elim (gr_isi_inv_gen … H) -H #f #Hf
-* -g #g #H elim (eq_inv_gr_next_push … H)
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_eq.ma
deleted file mode 100644 (file)
index 7a1967d..0000000
+++ /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/relocation/gr_tl_eq_eq.ma".
-include "ground/relocation/gr_isi.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** isid_eq_repl_back *)
-corec lemma gr_isi_eq_repl_back:
-            gr_eq_repl_back … gr_isi.
-#f1 #H
-cases (gr_isi_inv_gen … H) -H #g1 #Hg1 #H1 #f2 #Hf
-cases (gr_eq_inv_push_sn … Hf … H1) -f1
-/3 width=3 by gr_isi_push/
-qed-.
-
-(*** isid_eq_repl_fwd *)
-lemma gr_isi_eq_repl_fwd:
-      gr_eq_repl_fwd … gr_isi.
-/3 width=3 by gr_isi_eq_repl_back, gr_eq_repl_sym/ qed-.
-
-(* Main inversions with gr_eq ***********************************************)
-
-(*** isid_inv_eq_repl *)
-corec theorem gr_isi_inv_eq_repl (g1) (g2): 𝐈❪g1❫ → 𝐈❪g2❫ → g1 ≡ g2.
-#H1 #H2
-cases (gr_isi_inv_gen … H1) -H1
-cases (gr_isi_inv_gen … H2) -H2
-/3 width=5 by gr_eq_push/
-qed-.
-
-(* Alternative definition with gr_eq ****************************************)
-
-(*** eq_push_isid *)
-corec lemma gr_eq_push_isi (f): ⫯f ≡ f → 𝐈❪f❫.
-#H cases (gr_eq_inv_push_sn … H) -H
-/4 width=3 by gr_isi_push, gr_eq_trans/
-qed.
-
-(*** eq_push_inv_isid *)
-corec lemma gr_isi_inv_eq_push (g): 𝐈❪g❫ → ⫯g ≡ g.
-* -g #f #g #Hf *
-/3 width=5 by gr_eq_push/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_id.ma
deleted file mode 100644 (file)
index c496762..0000000
+++ /dev/null
@@ -1,34 +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/relocation/gr_id.ma".
-include "ground/relocation/gr_isi_eq.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Constructions with gr_id *************************************************)
-
-(*** id_isid *)
-lemma gr_isi_id: 𝐈❪𝐢❫.
-/2 width=1 by gr_eq_push_isi/ qed.
-
-(* Alternative definition with gr_id and gr_eq ******************************)
-
-(*** eq_id_isid *)
-lemma gr_eq_id_isi (f): 𝐢 ≡ f → 𝐈❪f❫.
-/2 width=3 by gr_isi_eq_repl_back/ qed.
-
-(*** eq_id_inv_isid *)
-lemma gr_isi_inv_eq_id (f): 𝐈❪f❫ → 𝐢 ≡ f.
-/2 width=1 by gr_isi_inv_eq_repl/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_pat.ma
deleted file mode 100644 (file)
index a8c35fe..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi_id.ma".
-include "ground/relocation/gr_pat_pat_id.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Advanced constructions with gr_isi ***************************************)
-
-(*** isid_at *)
-lemma gr_isi_pat (f): (∀i. @❪i,f❫ ≘ i) → 𝐈❪f❫.
-/3 width=1 by gr_eq_id_isi, gr_pat_inv_id/
-qed.
-
-(* Inversions with gr_pat ***************************************************)
-
-(*** isid_inv_at *)
-lemma gr_isi_inv_pat (f) (i): 𝐈❪f❫ → @❪i,f❫ ≘ i.
-/3 width=3 by gr_isi_inv_eq_id, gr_pat_id, gr_pat_eq_repl_back/
-qed-.
-
-(* Destructions with gr_pat *************************************************)
-
-(*** isid_inv_at_mono *)
-lemma gr_isi_pat_des (f) (i1) (i2): 𝐈❪f❫ → @❪i1,f❫ ≘ i2 → i1 = i2.
-/4 width=3 by gr_isi_inv_eq_id, gr_pat_id_des, gr_pat_eq_repl_fwd/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_pushs.ma
deleted file mode 100644 (file)
index e9b3cf0..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_pushs.ma".
-include "ground/relocation/gr_isi.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Constructions with gr_pushs **********************************************)
-
-(*** isid_pushs *)
-lemma gr_isi_pushs (n) (f): 𝐈❪f❫ → 𝐈❪⫯*[n]f❫.
-#n @(nat_ind_succ … n) -n /3 width=3 by gr_isi_push/
-qed.
-
-(* Inversions with gr_pushs *************************************************)
-
-(*** isid_inv_pushs *)
-lemma gr_isi_inv_pushs (n) (g): 𝐈❪⫯*[n]g❫ → 𝐈❪g❫.
-#n @(nat_ind_succ … n) -n /3 width=3 by gr_isi_inv_push/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_tl.ma
deleted file mode 100644 (file)
index 0246557..0000000
+++ /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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl.ma".
-include "ground/relocation/gr_isi.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Constructions with gr_tl *************************************************)
-
-(*** isid_tl *)
-lemma gr_isi_tl (f): 𝐈❪f❫ → 𝐈❪⫰f❫.
-#f cases (gr_map_split_tl f) * #H
-[ /2 width=3 by gr_isi_inv_push/
-| elim (gr_isi_inv_next … H) -H //
-]
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_tls.ma
deleted file mode 100644 (file)
index 05881cb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_isi_tl.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Constructions with gr_tls ************************************************)
-
-(*** isid_tls *)
-lemma gr_isi_tls (n) (f): 𝐈❪f❫ → 𝐈❪⫰*[n]f❫.
-#n @(nat_ind_succ … n) -n /3 width=1 by gr_isi_tl/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isi_uni.ma
deleted file mode 100644 (file)
index 2763d9a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_uni.ma".
-include "ground/relocation/gr_isi_id.ma".
-
-(* IDENTITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Constructions with gr_isi ************************************************)
-
-(*** uni_inv_isid uni_isi *)
-lemma gr_uni_isi (f): 𝐮❨𝟎❩ ≡ f → 𝐈❪f❫.
-/2 width=1 by gr_eq_id_isi/ qed.
-
-(* Inversions with gr_isi ***************************************************)
-
-(*** uni_isid isi_inv_uni *)
-lemma gr_isi_inv_uni (f): 𝐈❪f❫ → 𝐮❨𝟎❩ ≡ f.
-/2 width=1 by gr_isi_inv_eq_id/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist.ma
deleted file mode 100644 (file)
index d7f511a..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/notation/relations/predicate_t_1.ma".
-include "ground/relocation/gr_pat.ma".
-
-(* TOTALITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(*** istot *)
-definition gr_ist: predicate gr_map ≝
-           λf. ∀i. ∃j. @❪i,f❫ ≘ j.
-
-interpretation
-  "totality condition (generic relocation maps)"
-  'PredicateT f = (gr_ist f).
-
-(* Basic inversions *********************************************************)
-
-(*** istot_inv_push *)
-lemma gr_ist_inv_push (g): 𝐓❪g❫ → ∀f. ⫯f = g → 𝐓❪f❫.
-#g #Hg #f #H #i elim (Hg (↑i)) -Hg
-#j #Hg elim (gr_pat_inv_succ_push … Hg … H) -Hg -H /2 width=3 by ex_intro/
-qed-.
-
-(*** istot_inv_next *)
-lemma gr_ist_inv_next (g): 𝐓❪g❫ → ∀f. ↑f = g → 𝐓❪f❫.
-#g #Hg #f #H #i elim (Hg i) -Hg
-#j #Hg elim (gr_pat_inv_next … Hg … H) -Hg -H /2 width=2 by ex_intro/
-qed-.
-
-(* Constructions with gr_tl *************************************************)
-
-(*** istot_tl *)
-lemma gr_ist_tl (f): 𝐓❪f❫ → 𝐓❪⫰f❫.
-#f cases (gr_map_split_tl f) *
-/2 width=3 by gr_ist_inv_next, gr_ist_inv_push/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_isi.ma
deleted file mode 100644 (file)
index 90e8f48..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi_pat.ma".
-include "ground/relocation/gr_ist.ma".
-
-(* TOTALITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Advanced constructions with gr_isi ***************************************)
-
-(*** isid_at_total *)
-lemma gr_isi_pat_total: ∀f. 𝐓❪f❫ → (∀i1,i2. @❪i1,f❫ ≘ i2 → i1 = i2) → 𝐈❪f❫.
-#f #H1f #H2f @gr_isi_pat
-#i lapply (H1f i) -H1f *
-#j #Hf >(H2f … Hf) in ⊢ (???%); -H2f //
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_ist.ma
deleted file mode 100644 (file)
index cfa6aaa..0000000
+++ /dev/null
@@ -1,68 +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/relocation/gr_eq.ma".
-include "ground/relocation/gr_pat_lt.ma".
-include "ground/relocation/gr_pat_pat.ma".
-include "ground/relocation/gr_ist.ma".
-
-(* TOTALITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Advanced constructions with gr_pat ***************************************)
-
-(*** at_dec *)
-lemma gr_pat_dec (f) (i1) (i2): 𝐓❪f❫ → Decidable (@❪i1,f❫ ≘ i2).
-#f #i1 #i2 #Hf lapply (Hf i1) -Hf *
-#j2 #Hf elim (eq_pnat_dec i2 j2)
-[ #H destruct /2 width=1 by or_introl/
-| /4 width=6 by gr_pat_mono, or_intror/
-]
-qed-.
-
-(*** is_at_dec *)
-lemma is_gr_pat_dec (f) (i2): 𝐓❪f❫ → Decidable (∃i1. @❪i1,f❫ ≘ i2).
-#f #i2 #Hf
-lapply (dec_plt (λi1.@❪i1,f❫ ≘ i2) … (↑i2)) [| * ]
-[ /2 width=1 by gr_pat_dec/
-| * /3 width=2 by ex_intro, or_introl/
-| #H @or_intror * #i1 #Hi12
-  /5 width=3 by gr_pat_increasing, plt_succ_dx, ex2_intro/
-]
-qed-.
-
-(* Main destructions with gr_pat ********************************************)
-
-(*** at_ext *)
-corec theorem gr_eq_ext_pat (f1) (f2): 𝐓❪f1❫ → 𝐓❪f2❫ →
-              (∀i,i1,i2. @❪i,f1❫ ≘ i1 → @❪i,f2❫ ≘ i2 → i1 = i2) →
-              f1 ≡ f2.
-cases (gr_map_split_tl f1) #H1
-cases (gr_map_split_tl f2) #H2
-#Hf1 #Hf2 #Hi
-[ @(gr_eq_push … H1 H2) @gr_eq_ext_pat -gr_eq_ext_pat
-  [3:|*: /2 width=3 by gr_ist_inv_push/ ] -Hf1 -Hf2 #i #i1 #i2 #Hg1 #Hg2
-  lapply (Hi (↑i) (↑i1) (↑i2) ??) /2 width=7 by gr_pat_push/
-| cases (Hf2 (𝟏)) -Hf1 -Hf2 -gr_eq_ext_pat
-  #j2 #Hf2 cases (gr_pat_increasing_strict … Hf2 … H2) -H2
-  lapply (Hi (𝟏) (𝟏) j2 … Hf2) /2 width=2 by gr_pat_refl/ -Hi -Hf2 -H1
-  #H2 #H cases (plt_ge_false … H) -H //
-| cases (Hf1 (𝟏)) -Hf1 -Hf2 -gr_eq_ext_pat
-  #j1 #Hf1 cases (gr_pat_increasing_strict … Hf1 … H1) -H1
-  lapply (Hi (𝟏) j1 (𝟏) Hf1 ?) /2 width=2 by gr_pat_refl/ -Hi -Hf1 -H2
-  #H1 #H cases (plt_ge_false … H) -H //
-| @(gr_eq_next … H1 H2) @gr_eq_ext_pat -gr_eq_ext_pat
-  [3:|*: /2 width=3 by gr_ist_inv_next/ ] -Hf1 -Hf2 #i #i1 #i2 #Hg1 #Hg2
-  lapply (Hi i (↑i1) (↑i2) ??) /2 width=5 by gr_pat_next/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_ist_tls.ma
deleted file mode 100644 (file)
index e6da8ed..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_ist.ma".
-
-(* TOTALITY CONDITION FOR GENERIC RELOCATION MAPS ***************************)
-
-(* Constructions with gr_tls ************************************************)
-
-(*** istot_tls *)
-lemma gr_ist_tls (n) (f): 𝐓❪f❫ → 𝐓❪⫰*[n]f❫.
-#n @(nat_ind_succ … n) -n //
-#n #IH #f #Hf <gr_tls_succ
-/3 width=1 by gr_ist_tl/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isu.ma
deleted file mode 100644 (file)
index 2a81141..0000000
+++ /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/notation/relations/predicate_u_1.ma".
-include "ground/relocation/gr_isi.ma".
-
-(* UNIFORMITY CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(*** isuni *)
-inductive gr_isu: predicate gr_map ≝
-(*** isuni_isid *)
-| gr_isu_isi (f): 𝐈❪f❫ → gr_isu f
-(*** isuni_next *)
-| gr_isu_next (f): gr_isu f → ∀g. ↑f = g → gr_isu g
-.
-
-interpretation
-  "uniformity condition (generic relocation maps)"
-  'PredicateU f = (gr_isu f).
-
-(* Basic inversions *********************************************************)
-
-(*** isuni_inv_push *)
-lemma gr_isu_inv_push (g): 𝐔❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫.
-#g * -g
-[ /2 width=3 by gr_isi_inv_push/
-| #f #_ #g #H #x #Hx destruct
-  elim (eq_inv_gr_push_next … Hx)
-]
-qed-.
-
-(*** isuni_inv_next *)
-lemma gr_isu_inv_next (g): 𝐔❪g❫ → ∀f. ↑f = g → 𝐔❪f❫.
-#g * -g #f #Hf
-[ #x #Hx elim (gr_isi_inv_next … Hf … Hx)
-| #g #H #x #Hx destruct
-  >(eq_inv_gr_next_bi … Hx) -x //
-]
-qed-.
-
-(* Basic destructions *******************************************************)
-
-(*** isuni_fwd_push *)
-lemma gr_isu_fwd_push (g): 𝐔❪g❫ → ∀f. ⫯f = g → 𝐔❪f❫.
-/3 width=3 by gr_isu_inv_push, gr_isu_isi/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isu_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isu_tl.ma
deleted file mode 100644 (file)
index 8a7b07d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl.ma".
-include "ground/relocation/gr_isu.ma".
-
-(* UNIFORMITY CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_tl *************************************************)
-
-lemma gr_isu_tl (f): 𝐔❪f❫ → 𝐔❪⫰f❫.
-#f cases (gr_map_split_tl f) * #H
-[ /3 width=3 by gr_isu_inv_push, gr_isu_isi/
-| /2 width=3 by gr_isu_inv_next/
-]
-qed.
-
-(* Advanced inversions ******************************************************)
-
-(*** isuni_split *)
-lemma gr_isu_split (g): 𝐔❪g❫ → ∨∨ (∃∃f. 𝐈❪f❫ & ⫯f = g) | (∃∃f.𝐔❪f❫ & ↑f = g).
-#g elim (gr_map_split_tl g) * #H
-/4 width=3 by gr_isu_inv_next, gr_isu_inv_push, or_introl, or_intror, ex2_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_isu_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_isu_uni.ma
deleted file mode 100644 (file)
index e3fc672..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi_uni.ma".
-include "ground/relocation/gr_isu.ma".
-
-(* UNIFORMITY CONDITION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_uni ************************************************)
-
-(*** isuni_uni *)
-lemma gr_isu_uni (n): 𝐔❪𝐮❨n❩❫.
-#n @(nat_ind_succ … n) -n
-/3 width=3 by gr_isu_isi, gr_isu_next/
-qed.
-
-(*** uni_inv_isuni *)
-lemma gr_isu_eq_repl_back:
-      gr_eq_repl_back … gr_isu.
-#f1 #H elim H -f1
-[ /3 width=3 by gr_isu_isi, gr_isi_eq_repl_back/
-| #f1 #_ #g1 * #IH #f2 #H -g1
-  elim (gr_eq_inv_next_sn … H) -H
-  /3 width=3 by gr_isu_next/
-]
-qed-.
-
-lemma gr_isu_eq_repl_fwd:
-      gr_eq_repl_fwd … gr_isu.
-/3 width=3 by gr_isu_eq_repl_back, gr_eq_repl_sym/ qed-.
-
-(* Inversions with gr_uni ***************************************************)
-
-(*** uni_isuni *)
-lemma gr_isu_inv_uni (f): 𝐔❪f❫ → ∃n. 𝐮❨n❩ ≡ f.
-#f #H elim H -f
-[ /3 width=2 by gr_isi_inv_uni, ex_intro/
-| #f #_ #g #H * /3 width=6 by gr_eq_next, ex_intro/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_map.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_map.ma
deleted file mode 100644 (file)
index 53d0520..0000000
+++ /dev/null
@@ -1,69 +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/notation/functions/upspoon_1.ma".
-include "ground/notation/functions/uparrow_1.ma".
-include "ground/lib/stream.ma".
-include "ground/lib/bool.ma".
-
-(* GENERIC RELOCATION MAPS **************************************************)
-
-(*** rtmap *)
-definition gr_map: Type[0] ≝ stream bool.
-
-(*** push *)
-definition gr_push (f): gr_map ≝ Ⓕ⨮f.
-
-interpretation
-  "push (generic relocation maps)"
-  'UpSpoon f = (gr_push f).
-
-(*** next *)
-definition gr_next (f): gr_map ≝ Ⓣ⨮f.
-
-interpretation
-  "next (generic relocation maps)"
-  'UpArrow f = (gr_next f).
-
-(* Basic constructions (specific) *******************************************)
-
-(*** push_rew *)
-lemma gr_push_unfold (f): Ⓕ⨮f = ⫯f.
-// qed.
-
-(*** next_rew *)
-lemma gr_next_unfold (f): Ⓣ⨮f = ↑f.
-// qed.
-
-(* Basic inversions *********************************************************)
-
-(*** injective_push *)
-lemma eq_inv_gr_push_bi: injective ? ? gr_push.
-#f1 #f2 <gr_push_unfold <gr_push_unfold #H destruct //
-qed-.
-
-(*** discr_push_next *)
-lemma eq_inv_gr_push_next (f1) (f2): ⫯f1 = ↑f2 → ⊥.
-#f1 #f2 <gr_push_unfold <gr_next_unfold #H destruct
-qed-.
-
-(*** discr_next_push *)
-lemma eq_inv_gr_next_push (f1) (f2): ↑f1 = ⫯f2 → ⊥.
-#f1 #f2 <gr_next_unfold <gr_push_unfold #H destruct
-qed-.
-
-(*** injective_next *)
-lemma eq_inv_gr_next_bi: injective ? ? gr_next.
-#f1 #f2 <gr_next_unfold <gr_next_unfold #H destruct //
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat.ma
deleted file mode 100644 (file)
index 754ef8b..0000000
+++ /dev/null
@@ -1,209 +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/notation/relations/ratsucc_3.ma".
-include "ground/arith/nat_pred_succ.ma".
-include "ground/relocation/gr_pat.ma".
-
-(* NON-NEGATIVE APPLICATION FOR GENERIC RELOCATION MAPS *********************)
-
-definition gr_nat: relation3 gr_map nat nat ≝
-           λf,l1,l2. @❪↑l1,f❫ ≘ ↑l2.
-
-interpretation
-  "relational non-negative application (generic relocation maps)"
-  'RAtSucc l1 f l2 = (gr_nat f l1 l2).
-
-(* Basic constructions ******************************************************)
-
-lemma gr_nat_refl (f) (g) (k1) (k2):
-      (⫯f) = g → 𝟎 = k1 → 𝟎 = k2 → @↑❪k1,g❫ ≘ k2.
-#f #g #k1 #k2 #H1 #H2 #H3 destruct
-/2 width=2 by gr_pat_refl/
-qed.
-
-lemma gr_nat_push (f) (l1) (l2) (g) (k1) (k2):
-      @↑❪l1,f❫ ≘ l2 → ⫯f = g → ↑l1 = k1 → ↑l2 = k2 → @↑❪k1,g❫ ≘ k2.
-#f #l1 #l2 #g #k1 #k2 #Hf #H1 #H2 #H3 destruct
-/2 width=7 by gr_pat_push/
-qed.
-
-lemma gr_nat_next (f) (l1) (l2) (g) (k2):
-      @↑❪l1,f❫ ≘ l2 → ↑f = g → ↑l2 = k2 → @↑❪l1,g❫ ≘ k2.
-#f #l1 #l2 #g #k2 #Hf #H1 #H2 destruct
-/2 width=5 by gr_pat_next/
-qed.
-
-lemma gr_nat_pred_bi (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → @↑❪↓i1,f❫ ≘ ↓i2.
-#f #i1 #i2
->(npsucc_pred i1) in ⊢ (%→?); >(npsucc_pred i2) in ⊢ (%→?);
-//
-qed.
-
-(* Basic inversions *********************************************************)
-
-(*** gr_nat_inv_ppx *)
-lemma gr_nat_inv_zero_push (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g. 𝟎 = l1 → ⫯g = f → 𝟎 = l2.
-#f #l1 #l2 #H #g #H1 #H2 destruct
-lapply (gr_pat_inv_unit_push … H ???) -H
-/2 width=2 by eq_inv_npsucc_bi/
-qed-.
-
-(*** gr_nat_inv_npx *)
-lemma gr_nat_inv_succ_push (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g,k1. ↑k1 = l1 → ⫯g = f →
-      ∃∃k2. @↑❪k1,g❫ ≘ k2 & ↑k2 = l2.
-#f #l1 #l2 #H #g #k1 #H1 #H2 destruct
-elim (gr_pat_inv_succ_push … H) -H [|*: // ] #k2 #Hg
->(npsucc_pred (↑l2)) #H
-@(ex2_intro … (↓k2)) //
-qed-.
-
-(*** gr_nat_inv_xnx *)
-lemma gr_nat_inv_next (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g. ↑g = f →
-      ∃∃k2. @↑❪l1,g❫ ≘ k2 & ↑k2 = l2.
-#f #l1 #l2 #H #g #H1 destruct
-elim (gr_pat_inv_next … H) -H [|*: // ] #k2
->(npsucc_pred (k2)) in ⊢ (%→?→?); #Hg #H
-@(ex2_intro … (↓k2)) //
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** gr_nat_inv_ppn *)
-lemma gr_nat_inv_zero_push_succ (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g,k2. 𝟎 = l1 → ⫯g = f → ↑k2 = l2 → ⊥.
-#f #l1 #l2 #Hf #g #k2 #H1 #H <(gr_nat_inv_zero_push … Hf … H1 H) -f -g -l1 -l2
-/2 width=3 by eq_inv_nsucc_zero/
-qed-.
-
-(*** gr_nat_inv_npp *)
-lemma gr_nat_inv_succ_push_zero (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g,k1. ↑k1 = l1 → ⫯g = f → 𝟎 = l2 → ⊥.
-#f #l1 #l2 #Hf #g #k1 #H1 #H elim (gr_nat_inv_succ_push … Hf … H1 H) -f -l1
-#x2 #Hg * -l2 /2 width=3 by eq_inv_zero_nsucc/
-qed-.
-
-(*** gr_nat_inv_npn *)
-lemma gr_nat_inv_succ_push_succ (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g,k1,k2. ↑k1 = l1 → ⫯g = f → ↑k2 = l2 → @↑❪k1,g❫ ≘ k2.
-#f #l1 #l2 #Hf #g #k1 #k2 #H1 #H elim (gr_nat_inv_succ_push … Hf … H1 H) -f -l1
-#x2 #Hg * -l2 #H >(eq_inv_nsucc_bi … H) -k2 //
-qed-.
-
-(*** gr_nat_inv_xnp *)
-lemma gr_nat_inv_next_zero (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g. ↑g = f → 𝟎 = l2 → ⊥.
-#f #l1 #l2 #Hf #g #H elim (gr_nat_inv_next … Hf … H) -f
-#x2 #Hg * -l2 /2 width=3 by eq_inv_zero_nsucc/
-qed-.
-
-(*** gr_nat_inv_xnn *)
-lemma gr_nat_inv_next_succ (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g,k2. ↑g = f → ↑k2 = l2 → @↑❪l1,g❫ ≘ k2.
-#f #l1 #l2 #Hf #g #k2 #H elim (gr_nat_inv_next … Hf … H) -f
-#x2 #Hg * -l2 #H >(eq_inv_nsucc_bi … H) -k2 //
-qed-.
-
-(*** gr_nat_inv_pxp *)
-lemma gr_nat_inv_zero_bi (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → 𝟎 = l1 → 𝟎 = l2 → ∃g. ⫯g = f.
-#f elim (gr_map_split_tl … f) /2 width=2 by ex_intro/
-#H #l1 #l2 #Hf #H1 #H2 cases (gr_nat_inv_next_zero … Hf … H H2)
-qed-.
-
-(*** gr_nat_inv_pxn *)
-lemma gr_nat_inv_zero_succ (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀k2. 𝟎 = l1 → ↑k2 = l2 →
-      ∃∃g. @↑❪l1,g❫ ≘ k2 & ↑g = f.
-#f elim (gr_map_split_tl … f)
-#H #l1 #l2 #Hf #k2 #H1 #H2
-[ elim (gr_nat_inv_zero_push_succ … Hf … H1 H H2)
-| /3 width=5 by gr_nat_inv_next_succ, ex2_intro/
-]
-qed-.
-
-(*** gr_nat_inv_nxp *)
-lemma gr_nat_inv_succ_zero (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀k1. ↑k1 = l1 → 𝟎 = l2 → ⊥.
-#f elim (gr_map_split_tl f)
-#H #l1 #l2 #Hf #k1 #H1 #H2
-[ elim (gr_nat_inv_succ_push_zero … Hf … H1 H H2)
-| elim (gr_nat_inv_next_zero … Hf … H H2)
-]
-qed-.
-
-(*** gr_nat_inv_nxn *)
-lemma gr_nat_inv_succ_bi (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀k1,k2. ↑k1 = l1 → ↑k2 = l2 →
-      ∨∨ ∃∃g. @↑❪k1,g❫ ≘ k2 & ⫯g = f
-       | ∃∃g. @↑❪l1,g❫ ≘ k2 & ↑g = f.
-#f elim (gr_map_split_tl f) *
-/4 width=7 by gr_nat_inv_next_succ, gr_nat_inv_succ_push_succ, ex2_intro, or_intror, or_introl/
-qed-.
-
-(* Note: the following inversion lemmas must be checked *)
-(*** gr_nat_inv_xpx *)
-lemma gr_nat_inv_push (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g. ⫯g = f →
-      ∨∨ ∧∧ 𝟎 = l1 & 𝟎 = l2
-       | ∃∃k1,k2. @↑❪k1,g❫ ≘ k2 & ↑k1 = l1 & ↑k2 = l2.
-#f * [2: #l1 ] #l2 #Hf #g #H
-[ elim (gr_nat_inv_succ_push … Hf … H) -f /3 width=5 by or_intror, ex3_2_intro/
-| >(gr_nat_inv_zero_push … Hf … H) -f /3 width=1 by conj, or_introl/
-]
-qed-.
-
-(*** gr_nat_inv_xpp *)
-lemma gr_nat_inv_push_zero (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g. ⫯g = f → 𝟎 = l2 → 𝟎 = l1.
-#f #l1 #l2 #Hf #g #H elim (gr_nat_inv_push … Hf … H) -f * //
-#k1 #k2 #_ #_ * -l2 #H elim (eq_inv_zero_nsucc … H)
-qed-.
-
-(*** gr_nat_inv_xpn *)
-lemma gr_nat_inv_push_succ (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → ∀g,k2. ⫯g = f → ↑k2 = l2 →
-      ∃∃k1. @↑❪k1,g❫ ≘ k2 & ↑k1 = l1.
-#f #l1 #l2 #Hf #g #k2 #H elim (gr_nat_inv_push … Hf … H) -f *
-[ #_ * -l2 #H elim (eq_inv_nsucc_zero … H)
-| #x1 #x2 #Hg #H1 * -l2 #H
-  lapply (eq_inv_nsucc_bi … H) -H #H destruct
-  /2 width=3 by ex2_intro/
-]
-qed-.
-
-(*** gr_nat_inv_xxp *)
-lemma gr_nat_inv_zero_dx (f) (l1) (l2):
-      @↑❪l1,f❫ ≘ l2 → 𝟎 = l2 → ∃∃g. 𝟎 = l1 & ⫯g = f.
-#f elim (gr_map_split_tl f)
-#H #l1 #l2 #Hf #H2
-[ /3 width=6 by gr_nat_inv_push_zero, ex2_intro/
-| elim (gr_nat_inv_next_zero … Hf … H H2)
-]
-qed-.
-
-(*** gr_nat_inv_xxn *)
-lemma gr_nat_inv_succ_dx (f) (l1) (l2): @↑❪l1,f❫ ≘ l2 → ∀k2.  ↑k2 = l2 →
-      ∨∨ ∃∃g,k1. @↑❪k1,g❫ ≘ k2 & ↑k1 = l1 & ⫯g = f
-       | ∃∃g. @↑❪l1,g❫ ≘ k2 & ↑g = f.
-#f elim (gr_map_split_tl f)
-#H #l1 #l2 #Hf #k2 #H2
-[ elim (gr_nat_inv_push_succ … Hf … H H2) -l2 /3 width=5 by or_introl, ex3_2_intro/
-| lapply (gr_nat_inv_next_succ … Hf … H H2) -l2 /3 width=3 by or_intror, ex2_intro/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_basic.ma
deleted file mode 100644 (file)
index a9c9cae..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_basic.ma".
-include "ground/relocation/gr_nat_uni.ma".
-
-(* NON-NEGATIVE APPLICATION FOR GENERIC RELOCATION MAPS *********************)
-
-(* Constructions with gr_basic **********************************************)
-
-lemma gr_nat_basic_lt (m) (n) (l):
-      l < m → @↑❪l, 𝐛❨m,n❩❫ ≘ l.
-#m @(nat_ind_succ … m) -m
-[ #n #i #H elim (nlt_inv_zero_dx … H)
-| #m #IH #n #l @(nat_ind_succ … l) -l
-  [ #_ /2 width=2 by refl, gr_pat_refl/
-  | #l #_ #H
-    lapply (nlt_inv_succ_bi … H) -H #Hlm
-    /3 width=7 by refl, gr_pat_push/
-  ]
-]
-qed.
-
-lemma gr_nat_basic_ge (m) (n) (l):
-      m ≤ l → @↑❪l, 𝐛❨m,n❩❫ ≘ l+n.
-#m @(nat_ind_succ … m) -m //
-#m #IH #n #l #H
-elim (nle_inv_succ_sn … H) -H #Hml #H >H -H
-/3 width=7 by gr_nat_push/
-qed.
-
-(* Inversions with gr_basic *************************************************)
-
-lemma gr_nat_basic_inv_lt (m) (n) (l) (k):
-      l < m → @↑❪l, 𝐛❨m,n❩❫ ≘ k → l = k.
-/3 width=4 by gr_nat_basic_lt, gr_nat_mono/ qed-.
-
-lemma gr_nat_basic_inv_ge (m) (n) (l) (k):
-      m ≤ l → @↑❪l, 𝐛❨m,n❩❫ ≘ k → l+n = k.
-/3 width=4 by gr_nat_basic_ge, gr_nat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_nat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_nat.ma
deleted file mode 100644 (file)
index a70e01c..0000000
+++ /dev/null
@@ -1,73 +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/arith/nat_lt_pred.ma".
-include "ground/relocation/gr_nat.ma".
-
-(* NON-NEGATIVE APPLICATION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Main destructions ********************************************************)
-
-theorem gr_nat_monotonic (k2) (l2) (f):
-        @↑❪l2,f❫ ≘ k2 → ∀k1,l1. @↑❪l1,f❫ ≘ k1 → l1 < l2 → k1 < k2.
-#k2 @(nat_ind_succ … k2) -k2
-[ #l2 #f #H2f elim (gr_nat_inv_zero_dx … H2f) -H2f //
-  #g #H21 #_ #k1 #l1 #_ #Hi destruct
-  elim (nlt_inv_zero_dx … Hi)
-| #k2 #IH #l2 #f #H2f #k1 @(nat_ind_succ … k1) -k1 //
-  #k1 #_ #l1 #H1f #Hl elim (nlt_inv_gen … Hl)
-  #_ #Hl2 elim (gr_nat_inv_succ_bi … H2f (↓l2)) -H2f [1,3: * |*: // ]
-  #g #H2g #H
-  [ elim (gr_nat_inv_push_succ … H1f … H) -f
-    /4 width=8 by nlt_inv_succ_bi, nlt_succ_bi/
-  | /4 width=8 by gr_nat_inv_next_succ, nlt_succ_bi/
-  ]
-]
-qed-.
-
-theorem gr_nat_inv_monotonic (k1) (l1) (f):
-        @↑❪l1,f❫ ≘ k1 → ∀k2,l2. @↑❪l2,f❫ ≘ k2 → k1 < k2 → l1 < l2.
-#k1 @(nat_ind_succ … k1) -k1
-[ #l1 #f #H1f elim (gr_nat_inv_zero_dx … H1f) -H1f //
-  #g * -l1 #H #k2 #l2 #H2f #Hk
-  lapply (nlt_des_gen … Hk) -Hk #H22
-  elim (gr_nat_inv_push_succ … H2f … (↓k2) H) -f //
-| #k1 #IH #l1 @(nat_ind_succ … l1) -l1
-  [ #f #H1f elim (gr_nat_inv_zero_succ … H1f) -H1f [ |*: // ]
-    #g #H1g #H #k2 #l2 #H2f #Hj elim (nlt_inv_succ_sn … Hj) -Hj
-    /3 width=7 by gr_nat_inv_next_succ/
-  | #l1 #_ #f #H1f #k2 #l2 #H2f #Hj elim (nlt_inv_succ_sn … Hj) -Hj
-    #Hj #H22 elim (gr_nat_inv_succ_bi … H1f) -H1f [1,4: * |*: // ]
-    #g #Hg #H
-    [ elim (gr_nat_inv_push_succ … H2f … (↓k2) H) -f
-      /3 width=7 by nlt_succ_bi/
-    | /3 width=7 by gr_nat_inv_next_succ/
-    ]
-  ]
-]
-qed-.
-
-theorem gr_nat_mono (f) (l) (l1) (l2):
-        @↑❪l,f❫ ≘ l1 → @↑❪l,f❫ ≘ l2 → l2 = l1.
-#f #l #l1 #l2 #H1 #H2 elim (nat_split_lt_eq_gt l2 l1) //
-#Hi elim (nlt_ge_false l l)
-/2 width=6 by gr_nat_inv_monotonic/
-qed-.
-
-theorem gr_nat_inj (f) (l1) (l2) (l):
-        @↑❪l1,f❫ ≘ l → @↑❪l2,f❫ ≘ l → l1 = l2.
-#f #l1 #l2 #l #H1 #H2 elim (nat_split_lt_eq_gt l2 l1) //
-#Hi elim (nlt_ge_false l l)
-/2 width=6 by gr_nat_monotonic/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_nat_uni.ma
deleted file mode 100644 (file)
index 0812fab..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/arith/nat_plus_rplus.ma".
-include "ground/relocation/gr_pat_uni.ma".
-include "ground/relocation/gr_nat_nat.ma".
-
-(* NON-NEGATIVE APPLICATION FOR GENERIC RELOCATION MAPS *********************)
-
-(* Constructions with gr_uni ************************************************)
-
-lemma gr_nat_uni (n) (l):
-      @↑❪l,𝐮❨n❩❫ ≘ l+n.
-/2 width=1 by gr_nat_pred_bi/
-qed.
-
-(* Inversions with gr_uni ***************************************************)
-
-lemma gr_nat_inv_uni (n) (l) (k):
-      @↑❪l,𝐮❨n❩❫ ≘ k → k = l+n.
-/2 width=4 by gr_nat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_nexts.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_nexts.ma
deleted file mode 100644 (file)
index 88065e5..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/notation/functions/uparrowstar_2.ma".
-include "ground/arith/nat_succ_iter.ma".
-include "ground/relocation/gr_map.ma".
-
-(* ITERATED NEXT FOR GENERIC RELOCATION MAPS ********************************)
-
-(*** nexts *)
-definition gr_nexts (f:gr_map) (n:nat) ≝
-           (gr_next^n) f.
-
-interpretation
-  "iterated next (generic relocation maps)"
-  'UpArrowStar n f = (gr_nexts f n).
-
-(* Basic constructions ******************************************************)
-
-(*** nexts_O *)
-lemma gr_nexts_zero:
-      ∀f. f = ↑*[𝟎] f.
-// qed.
-
-(*** nexts_swap *)
-lemma gr_nexts_next (n):
-      ∀f. ↑↑*[n] f = ↑*[n] ↑f.
-#f #n @(niter_appl … gr_next)
-qed.
-
-(*** nexts_S *)
-lemma gr_nexts_succ (n):
-      ∀f. ↑↑*[n] f = ↑*[↑n] f.
-#f #n @(niter_succ … gr_next)
-qed.
-
-(*** nexts_xn *)
-lemma gr_nexts_swap (n):
-      ∀f. ↑*[n] ↑f = ↑*[↑n] f.
-// qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_nexts_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_nexts_eq.ma
deleted file mode 100644 (file)
index addd6c4..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_eq.ma".
-include "ground/relocation/gr_nexts.ma".
-
-(* ITERATED NEXT FOR GENERIC RELOCATION MAPS ********************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** nexts_eq_repl *)
-lemma gr_nexts_eq_repl (n):
-      gr_eq_repl (λf1,f2. ↑*[n] f1 ≡ ↑*[n] f2).
-#n @(nat_ind_succ … n) -n
-/3 width=5 by gr_eq_next/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat.ma
deleted file mode 100644 (file)
index 5cd1c94..0000000
+++ /dev/null
@@ -1,202 +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/notation/relations/rat_3.ma".
-include "ground/xoa/ex_3_2.ma".
-include "ground/arith/pnat.ma".
-include "ground/relocation/gr_tl.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(*** at *)
-coinductive gr_pat: relation3 gr_map pnat pnat ≝
-(*** at_refl *)
-| gr_pat_refl (f) (g) (j1) (j2):
-  ⫯f = g → 𝟏 = j1 → 𝟏 = j2 → gr_pat g j1 j2
-(*** at_push *)
-| gr_pat_push (f) (i1) (i2):
-  gr_pat f i1 i2 → ∀g,j1,j2. ⫯f = g → ↑i1 = j1 → ↑i2 = j2 → gr_pat g j1 j2
-(*** at_next *)
-| gr_pat_next (f) (i1) (i2):
-  gr_pat f i1 i2 → ∀g,j2. ↑f = g → ↑i2 = j2 → gr_pat g i1 j2
-.
-
-interpretation
-  "relational positive application (generic relocation maps)"
-  'RAt i1 f i2 = (gr_pat f i1 i2).
-
-(*** H_at_div *)
-definition H_gr_pat_div: relation4 gr_map gr_map gr_map gr_map ≝
-           λf2,g2,f1,g1.
-           ∀jf,jg,j. @❪jf,f2❫ ≘ j → @❪jg,g2❫ ≘ j →
-           ∃∃j0. @❪j0,f1❫ ≘ jf & @❪j0,g1❫ ≘ jg.
-
-(* Basic inversions *********************************************************)
-
-(*** at_inv_ppx *)
-lemma gr_pat_inv_unit_push (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g. 𝟏 = i1 → ⫯g = f → 𝟏 = i2.
-#f #i1 #i2 * -f -i1 -i2 //
-[ #f #i1 #i2 #_ #g #j1 #j2 #_ * #_ #x #H destruct
-| #f #i1 #i2 #_ #g #j2 * #_ #x #_ #H elim (eq_inv_gr_push_next … H)
-]
-qed-.
-
-(*** at_inv_npx *)
-lemma gr_pat_inv_succ_push (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f →
-      ∃∃j2. @❪j1,g❫ ≘ j2 & ↑j2 = i2.
-#f #i1 #i2 * -f -i1 -i2
-[ #f #g #j1 #j2 #_ * #_ #x #x1 #H destruct
-| #f #i1 #i2 #Hi #g #j1 #j2 * * * #x #x1 #H #Hf >(eq_inv_gr_push_bi … Hf) -g destruct /2 width=3 by ex2_intro/
-| #f #i1 #i2 #_ #g #j2 * #_ #x #x1 #_ #H elim (eq_inv_gr_push_next … H)
-]
-qed-.
-
-(*** at_inv_xnx *)
-lemma gr_pat_inv_next (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 (eq_inv_gr_next_push … H)
-| #f #i1 #i2 #_ #g #j1 #j2 * #_ #_ #x #H elim (eq_inv_gr_next_push … H)
-| #f #i1 #i2 #Hi #g #j2 * * #x #H >(eq_inv_gr_next_bi … H) -g /2 width=3 by ex2_intro/
-]
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** at_inv_ppn *)
-lemma gr_pat_inv_unit_push_succ (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g,j2. 𝟏 = i1 → ⫯g = f → ↑j2 = i2 → ⊥.
-#f #i1 #i2 #Hf #g #j2 #H1 #H <(gr_pat_inv_unit_push … Hf … H1 H) -f -g -i1 -i2
-#H destruct
-qed-.
-
-(*** at_inv_npp *)
-lemma gr_pat_inv_succ_push_unit (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f → 𝟏 = i2 → ⊥.
-#f #i1 #i2 #Hf #g #j1 #H1 #H elim (gr_pat_inv_succ_push … Hf … H1 H) -f -i1
-#x2 #Hg * -i2 #H destruct
-qed-.
-
-(*** at_inv_npn *)
-lemma gr_pat_inv_succ_push_succ (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 (gr_pat_inv_succ_push … Hf … H1 H) -f -i1
-#x2 #Hg * -i2 #H destruct //
-qed-.
-
-(*** at_inv_xnp *)
-lemma gr_pat_inv_next_unit (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g. ↑g = f → 𝟏 = i2 → ⊥.
-#f #i1 #i2 #Hf #g #H elim (gr_pat_inv_next … Hf … H) -f
-#x2 #Hg * -i2 #H destruct
-qed-.
-
-(*** at_inv_xnn *)
-lemma gr_pat_inv_next_succ (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g,j2. ↑g = f → ↑j2 = i2 → @❪i1,g❫ ≘ j2.
-#f #i1 #i2 #Hf #g #j2 #H elim (gr_pat_inv_next … Hf … H) -f
-#x2 #Hg * -i2 #H destruct //
-qed-.
-
-(*** at_inv_pxp *)
-lemma gr_pat_inv_unit_bi (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → 𝟏 = i1 → 𝟏 = i2 → ∃g. ⫯g = f.
-#f elim (gr_map_split_tl … f) /2 width=2 by ex_intro/
-#H #i1 #i2 #Hf #H1 #H2 cases (gr_pat_inv_next_unit … Hf … H H2)
-qed-.
-
-(*** at_inv_pxn *)
-lemma gr_pat_inv_unit_succ (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀j2. 𝟏 = i1 → ↑j2 = i2 →
-      ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f.
-#f elim (gr_map_split_tl … f)
-#H #i1 #i2 #Hf #j2 #H1 #H2
-[ elim (gr_pat_inv_unit_push_succ … Hf … H1 H H2)
-| /3 width=5 by gr_pat_inv_next_succ, ex2_intro/
-]
-qed-.
-
-(*** at_inv_nxp *)
-lemma gr_pat_inv_succ_unit (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀j1. ↑j1 = i1 → 𝟏 = i2 → ⊥.
-#f elim (gr_map_split_tl f)
-#H #i1 #i2 #Hf #j1 #H1 #H2
-[ elim (gr_pat_inv_succ_push_unit … Hf … H1 H H2)
-| elim (gr_pat_inv_next_unit … Hf … H H2)
-]
-qed-.
-
-(*** at_inv_nxn *)
-lemma gr_pat_inv_succ_bi (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 (gr_map_split_tl f) *
-/4 width=7 by gr_pat_inv_next_succ, gr_pat_inv_succ_push_succ, ex2_intro, or_intror, or_introl/
-qed-.
-
-(* Note: the following inversion lemmas must be checked *)
-(*** at_inv_xpx *)
-lemma gr_pat_inv_push (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f →
-      ∨∨ ∧∧ 𝟏 = i1 & 𝟏 = i2
-       | ∃∃j1,j2. @❪j1,g❫ ≘ j2 & ↑j1 = i1 & ↑j2 = i2.
-#f * [2: #i1 ] #i2 #Hf #g #H
-[ elim (gr_pat_inv_succ_push … Hf … H) -f /3 width=5 by or_intror, ex3_2_intro/
-| >(gr_pat_inv_unit_push … Hf … H) -f /3 width=1 by conj, or_introl/
-]
-qed-.
-
-(*** at_inv_xpp *)
-lemma gr_pat_inv_push_unit (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f → 𝟏 = i2 → 𝟏 = i1.
-#f #i1 #i2 #Hf #g #H elim (gr_pat_inv_push … Hf … H) -f * //
-#j1 #j2 #_ #_ * -i2 #H destruct
-qed-.
-
-(*** at_inv_xpn *)
-lemma gr_pat_inv_push_succ (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 (gr_pat_inv_push … Hf … H) -f *
-[ #_ * -i2 #H destruct
-| #x1 #x2 #Hg #H1 * -i2 #H destruct /2 width=3 by ex2_intro/
-]
-qed-.
-
-(*** at_inv_xxp *)
-lemma gr_pat_inv_unit_dx (f) (i1) (i2):
-      @❪i1,f❫ ≘ i2 → 𝟏 = i2 →
-      ∃∃g. 𝟏 = i1 & ⫯g = f.
-#f elim (gr_map_split_tl f)
-#H #i1 #i2 #Hf #H2
-[ /3 width=6 by gr_pat_inv_push_unit, ex2_intro/
-| elim (gr_pat_inv_next_unit … Hf … H H2)
-]
-qed-.
-
-(*** at_inv_xxn *)
-lemma gr_pat_inv_succ_dx (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 (gr_map_split_tl f)
-#H #i1 #i2 #Hf #j2 #H2
-[ elim (gr_pat_inv_push_succ … Hf … H H2) -i2 /3 width=5 by or_introl, ex3_2_intro/
-| lapply (gr_pat_inv_next_succ … Hf … H H2) -i2 /3 width=3 by or_intror, ex2_intro/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_basic.ma
deleted file mode 100644 (file)
index 3960be7..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_nat_basic.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_basic **********************************************)
-
-(*** at_basic_lt *)
-lemma gr_pat_basic_lt (m) (n) (i):
-      ninj i ≤ m → @❪i, 𝐛❨m,n❩❫ ≘ i.
-#m #n #i >(npsucc_pred i) #Hmi
-/2 width=1 by gr_nat_basic_lt/
-qed.
-
-(*** at_basic_ge *)
-lemma gr_pat_basic_ge (m) (n) (i):
-      m < ninj i → @❪i, 𝐛❨m,n❩❫ ≘ i+n.
-#m #n #i >(npsucc_pred i) #Hmi <nrplus_npsucc_sn
-/3 width=1 by gr_nat_basic_ge, nlt_inv_succ_dx/
-qed.
-
-(* Inversions with gr_basic *************************************************)
-
-(*** at_basic_inv_lt *)
-lemma gr_pat_basic_inv_lt (m) (n) (i) (j):
-      ninj i ≤ m → @❪i, 𝐛❨m,n❩❫ ≘ j → i = j.
-/3 width=4 by gr_pat_basic_lt, gr_pat_mono/ qed-.
-
-(*** at_basic_inv_ge *)
-lemma gr_pat_basic_inv_ge (m) (n) (i) (j):
-      m < ninj i → @❪i, 𝐛❨m,n❩❫ ≘ j → i+n = j.
-/3 width=4 by gr_pat_basic_ge, gr_pat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_eq.ma
deleted file mode 100644 (file)
index 8cd42b5..0000000
+++ /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/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_pat_lt.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** at_eq_repl_back *)
-corec lemma gr_pat_eq_repl_back (i1) (i2):
-            gr_eq_repl_back (λf. @❪i1,f❫ ≘ i2).
-#f1 * -f1 -i1 -i2
-[ #f1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12
-  cases (gr_eq_inv_push_sn … H12 … H) -g1 /2 width=2 by gr_pat_refl/
-| #f1 #i1 #i2 #Hf1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12
-  cases (gr_eq_inv_push_sn … H12 … H) -g1 /3 width=7 by gr_pat_push/
-| #f1 #i1 #i2 #Hf1 #g1 #j2 #H #H2 #f2 #H12
-  cases (gr_eq_inv_next_sn … H12 … H) -g1 /3 width=5 by gr_pat_next/
-]
-qed-.
-
-(*** at_eq_repl_fwd *)
-lemma gr_pat_eq_repl_fwd (i1) (i2):
-      gr_eq_repl_fwd (λf. @❪i1,f❫ ≘ i2).
-#i1 #i2 @gr_eq_repl_sym /2 width=3 by gr_pat_eq_repl_back/
-qed-.
-
-lemma gr_pat_eq (f): ⫯f ≡ f → ∀i. @❪i,f❫ ≘ i.
-#f #Hf #i elim i -i
-[ /3 width=3 by gr_pat_eq_repl_back, gr_pat_refl/
-| /3 width=7 by gr_pat_eq_repl_back, gr_pat_push/
-]
-qed.
-
-(* Inversions with gr_eq ****************************************************)
-
-corec lemma gr_pat_inv_eq (f):
-            (∀i. @❪i,f❫ ≘ i) → ⫯f ≡ f.
-#Hf
-lapply (Hf (𝟏)) #H
-lapply (gr_pat_des_id … H) -H #H
-cases H in Hf; -H #Hf
-@gr_eq_push [3:|*: // ]
-/3 width=7 by gr_pat_inv_succ_push_succ/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_id.ma
deleted file mode 100644 (file)
index 17464b3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_id_eq.ma".
-include "ground/relocation/gr_pat_eq.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_id *************************************************)
-
-(*** id_at *)
-lemma gr_pat_id (i): @❪i,𝐢❫ ≘ i.
-/2 width=1 by gr_pat_eq, gr_eq_refl/ qed.
-
-(* Inversions with gr_id ****************************************************)
-
-(*** id_inv_at *)
-lemma gr_pat_inv_id (f):
-      (∀i. @❪i,f❫ ≘ i) → 𝐢 ≡ f.
-/3 width=1 by gr_pat_inv_eq, gr_id_eq/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_lt.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_lt.ma
deleted file mode 100644 (file)
index 648c27f..0000000
+++ /dev/null
@@ -1,79 +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/arith/pnat_pred.ma".
-include "ground/arith/pnat_lt.ma".
-include "ground/relocation/gr_pat.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Destructions with plt and ple ********************************************)
-
-(*** at_increasing *)
-lemma gr_pat_increasing (i2) (i1) (f):
-      @❪i1,f❫ ≘ i2 → i1 ≤ i2.
-#i2 elim i2 -i2
-[ #i1 #f #Hf elim (gr_pat_inv_unit_dx … Hf) -Hf //
-| #i2 #IH * //
-  #i1 #f #Hf elim (gr_pat_inv_succ_bi … Hf) -Hf [1,4: * |*: // ]
-  /3 width=2 by ple_succ_bi, ple_succ_dx/
-]
-qed-.
-
-(*** at_increasing_strict *)
-lemma gr_pat_increasing_strict (g) (i1) (i2):
-      @❪i1,g❫ ≘ i2 → ∀f. ↑f = g →
-      ∧∧ i1 < i2 & @❪i1,f❫ ≘ ↓i2.
-#g #i1 #i2 #Hg #f #H elim (gr_pat_inv_next … Hg … H) -Hg -H
-/4 width=2 by conj, gr_pat_increasing, ple_succ_bi/
-qed-.
-
-(*** at_fwd_id_ex *)
-lemma gr_pat_des_id (f) (i): @❪i,f❫ ≘ i → ⫯⫰f = f.
-#f elim (gr_map_split_tl f) //
-#H #i #Hf elim (gr_pat_inv_next … Hf … H) -Hf -H
-#j2 #Hg #H destruct lapply (gr_pat_increasing … Hg) -Hg
-#H elim (plt_ge_false … H) -H //
-qed-.
-
-(* Constructions with ple ***************************************************)
-
-(*** at_le_ex *)
-lemma gr_pat_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 (gr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
-  #g [ #x2 ] #Hg [ #H2 ] #H0
-  [ * /3 width=3 by gr_pat_refl, ex2_intro/
-    #i1 #Hi12 destruct lapply (ple_inv_succ_bi … Hi12) -Hi12
-    #Hi12 elim (IH … Hg … Hi12) -x2 -IH
-    /3 width=7 by gr_pat_push, ex2_intro, ple_succ_bi/
-  | #i1 #Hi12 elim (IH … Hg … Hi12) -IH -i2
-    /3 width=5 by gr_pat_next, ex2_intro, ple_succ_bi/
-  ]
-| elim (gr_pat_inv_unit_dx … Hf) -Hf //
-  #g * -i2 #H2 #i1 #Hi12 <(ple_inv_unit_dx … Hi12)
-  /3 width=3 by gr_pat_refl, ex2_intro/
-]
-qed-.
-
-(*** at_id_le *)
-lemma gr_pat_id_le (i1) (i2):
-      i1 ≤ i2 → ∀f. @❪i2,f❫ ≘ i2 → @❪i1,f❫ ≘ i1.
-#i1 #i2 #H
-@(ple_ind_alt … H) -i1 -i2 [ #i2 | #i1 #i2 #_ #IH ] #f #Hf
-lapply (gr_pat_des_id … Hf) #H <H in Hf; -H
-/4 width=7 by gr_pat_inv_succ_push_succ, gr_pat_push, gr_pat_refl/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_pat.ma
deleted file mode 100644 (file)
index b652722..0000000
+++ /dev/null
@@ -1,121 +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/arith/pnat_lt_pred.ma".
-include "ground/relocation/gr_pat.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Main constructions *******************************************************)
-
-(*** at_monotonic *)
-theorem gr_pat_monotonic:
-        ∀j2,i2,f. @❪i2,f❫ ≘ j2 → ∀j1,i1. @❪i1,f❫ ≘ j1 →
-        i1 < i2 → j1 < j2.
-#j2 elim j2 -j2
-[ #i2 #f #H2f elim (gr_pat_inv_unit_dx … H2f) -H2f //
-  #g #H21 #_ #j1 #i1 #_ #Hi elim (plt_ge_false … Hi) -Hi //
-| #j2 #IH #i2 #f #H2f * //
-  #j1 #i1 #H1f #Hi elim (plt_inv_gen … Hi)
-  #_ #Hi2 elim (gr_pat_inv_succ_bi … H2f (↓i2)) -H2f [1,3: * |*: // ]
-  #g #H2g #H
-  [ elim (gr_pat_inv_push_succ … H1f … H) -f
-    /4 width=8 by plt_inv_succ_bi, plt_succ_bi/
-  | /4 width=8 by gr_pat_inv_next_succ, plt_succ_bi/
-  ]
-]
-qed-.
-
-(*** at_inv_monotonic *)
-theorem gr_pat_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 (gr_pat_inv_unit_dx … H1f) -H1f //
-  #g * -i1 #H #j2 #i2 #H2f #Hj lapply (plt_des_gen … Hj) -Hj
-  #H22 elim (gr_pat_inv_push_succ … H2f … (↓j2) H) -f //
-| #j1 #IH *
-  [ #f #H1f elim (gr_pat_inv_unit_succ … H1f) -H1f [ |*: // ]
-    #g #H1g #H #j2 #i2 #H2f #Hj elim (plt_inv_succ_sn … Hj) -Hj
-    /3 width=7 by gr_pat_inv_next_succ/
-  | #i1 #f #H1f #j2 #i2 #H2f #Hj elim (plt_inv_succ_sn … Hj) -Hj
-    #Hj #H22 elim (gr_pat_inv_succ_bi … H1f) -H1f [1,4: * |*: // ]
-    #g #Hg #H
-    [ elim (gr_pat_inv_push_succ … H2f … (↓j2) H) -f
-      /3 width=7 by plt_succ_bi/
-    | /3 width=7 by gr_pat_inv_next_succ/
-    ]
-  ]
-]
-qed-.
-
-(*** at_mono *)
-theorem gr_pat_mono (f) (i):
-        ∀i1. @❪i,f❫ ≘ i1 → ∀i2. @❪i,f❫ ≘ i2 → i2 = i1.
-#f #i #i1 #H1 #i2 #H2 elim (pnat_split_lt_eq_gt i2 i1) //
-#Hi elim (plt_ge_false i i)
-/2 width=6 by gr_pat_inv_monotonic/
-qed-.
-
-(*** at_inj *)
-theorem gr_pat_inj (f) (i):
-        ∀i1. @❪i1,f❫ ≘ i → ∀i2. @❪i2,f❫ ≘ i → i1 = i2.
-#f #i #i1 #H1 #i2 #H2 elim (pnat_split_lt_eq_gt i2 i1) //
-#Hi elim (plt_ge_false i i)
-/2 width=6 by gr_pat_monotonic/
-qed-.
-
-(*** at_div_comm *)
-theorem gr_pat_div_comm (f2) (g2) (f1) (g1):
-        H_gr_pat_div f2 g2 f1 g1 → H_gr_pat_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-.
-
-(*** at_div_pp *)
-theorem gr_pat_div_push_bi (f2) (g2) (f1) (g1):
-        H_gr_pat_div f2 g2 f1 g1 → H_gr_pat_div (⫯f2) (⫯g2) (⫯f1) (⫯g1).
-#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg
-elim (gr_pat_inv_push … Hf) -Hf [1,2: * |*: // ]
-[ #H1 #H2 destruct -IH
-  lapply (gr_pat_inv_push_unit … Hg ???) -Hg [4: |*: // ] #H destruct
-  /3 width=3 by gr_pat_refl, ex2_intro/
-| #xf #i #Hf2 #H1 #H2 destruct
-  lapply (gr_pat_inv_push_succ … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct
-  elim (IH … Hf2 Hg2) -IH -i /3 width=9 by gr_pat_push, ex2_intro/
-]
-qed-.
-
-(*** at_div_nn *)
-theorem gr_pat_div_next_bi (f2) (g2) (f1) (g1):
-        H_gr_pat_div f2 g2 f1 g1 → H_gr_pat_div (↑f2) (↑g2) (f1) (g1).
-#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg
-elim (gr_pat_inv_next … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct
-lapply (gr_pat_inv_next_succ … Hg ????) -Hg [5: |*: // ] #Hg2
-elim (IH … Hf2 Hg2) -IH -i /2 width=3 by ex2_intro/
-qed-.
-
-(*** at_div_np *)
-theorem gr_pat_div_next_push (f2) (g2) (f1) (g1):
-        H_gr_pat_div f2 g2 f1 g1 → H_gr_pat_div (↑f2) (⫯g2) (f1) (↑g1).
-#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg
-elim (gr_pat_inv_next … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct
-lapply (gr_pat_inv_push_succ … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct
-elim (IH … Hf2 Hg2) -IH -i /3 width=7 by gr_pat_next, ex2_intro/
-qed-.
-
-(*** at_div_pn *)
-theorem gr_pat_div_push_next (f2) (g2) (f1) (g1):
-        H_gr_pat_div f2 g2 f1 g1 → H_gr_pat_div (⫯f2) (↑g2) (↑f1) (g1).
-/4 width=6 by gr_pat_div_next_push, gr_pat_div_comm/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_pat_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_pat_id.ma
deleted file mode 100644 (file)
index e20fb6e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_pat_id.ma".
-include "ground/relocation/gr_pat_pat.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Advanced destructions with gr_id *****************************************)
-
-(*** at_id_fwd *)
-lemma gr_pat_id_des (i1) (i2):
-      @❪i1,𝐢❫ ≘ i2 → i1 = i2.
-/2 width=4 by gr_pat_mono/ qed-.
-
-(* Main constructions with gr_id ********************************************)
-
-(*** at_div_id_dx *)
-theorem gr_pat_div_id_dx (f):
-        H_gr_pat_div f 𝐢 𝐢 f.
-#f #jf #j0 #j #Hf #H0
-lapply (gr_pat_id_des … H0) -H0 #H destruct
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** at_div_id_sn *)
-theorem gr_pat_div_id_sn (f):
-        H_gr_pat_div 𝐢 f f 𝐢.
-/3 width=6 by gr_pat_div_id_dx, gr_pat_div_comm/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_tls.ma
deleted file mode 100644 (file)
index f31d01b..0000000
+++ /dev/null
@@ -1,77 +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/arith/pnat_plus.ma".
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_pat_eq.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_tls ************************************************)
-
-(* Note: this requires ↑ on first n *)
-(*** at_pxx_tls *)
-lemma gr_pat_unit_succ_tls (n) (f):
-      @❪𝟏,f❫ ≘ ↑n → @❪𝟏,⫰*[n]f❫ ≘ 𝟏.
-#n @(nat_ind_succ … n) -n //
-#n #IH #f #Hf
-elim (gr_pat_inv_unit_succ … Hf) -Hf [|*: // ] #g #Hg #H0 destruct
-<gr_tls_swap /2 width=1 by/
-qed.
-
-(* Note: this requires ↑ on third n2 *)
-(*** at_tls *)
-lemma gr_pat_tls (n2) (f): ⫯⫰*[↑n2]f ≡ ⫰*[n2]f → ∃i1. @❪i1,f❫ ≘ ↑n2.
-#n2 @(nat_ind_succ … n2) -n2
-[ /4 width=4 by gr_pat_eq_repl_back, gr_pat_refl, ex_intro/
-| #n2 #IH #f <gr_tls_swap <gr_tls_swap in ⊢ (??%→?); #H
-  elim (IH … H) -IH -H #i1 #Hf
-  elim (gr_map_split_tl f) #Hg destruct
-  /3 width=8 by gr_pat_push, gr_pat_next, ex_intro/
-]
-qed-.
-
-(* Inversions with gr_tls ***************************************************)
-
-(* Note: this does not require ↑ on second and third p *)
-(*** at_inv_nxx *)
-lemma gr_pat_inv_succ_sn (p) (g) (i1) (j2):
-      @❪↑i1,g❫ ≘ j2 → @❪𝟏,g❫ ≘ p →
-      ∃∃i2. @❪i1,⫰*[p]g❫ ≘ i2 & p+i2 = j2.
-#p elim p -p
-[ #g #i1 #j2 #Hg #H
-  elim (gr_pat_inv_unit_bi … H) -H [|*: // ] #f #H0
-  elim (gr_pat_inv_succ_push … Hg … H0) -Hg [|*: // ] #x2 #Hf #H2 destruct
-  /2 width=3 by ex2_intro/
-| #p #IH #g #i1 #j2 #Hg #H
-  elim (gr_pat_inv_unit_succ … H) -H [|*: // ] #f #Hf2 #H0
-  elim (gr_pat_inv_next … Hg … H0) -Hg #x2 #Hf1 #H2 destruct
-  elim (IH … Hf1 Hf2) -IH -Hf1 -Hf2 #i2 #Hf #H2 destruct
-  /2 width=3 by ex2_intro/
-]
-qed-.
-
-(* Note: this requires ↑ on first n2 *)
-(*** at_inv_tls *)
-lemma gr_pat_inv_succ_dx_tls (n2) (i1) (f):
-      @❪i1,f❫ ≘ ↑n2 → ⫯⫰*[↑n2]f ≡ ⫰*[n2]f.
-#n2 @(nat_ind_succ … n2) -n2
-[ #i1 #f #Hf elim (gr_pat_inv_unit_dx … Hf) -Hf // #g #H1 #H destruct
-  /2 width=1 by gr_eq_refl/
-| #n2 #IH #i1 #f #Hf
-  elim (gr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
-  [ #g #j1 #Hg #H1 #H2 | #g #Hg #Ho ] destruct
-  <gr_tls_swap /2 width=2 by/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pat_uni.ma
deleted file mode 100644 (file)
index a75ecb2..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/arith/nat_rplus_succ.ma".
-include "ground/relocation/gr_uni.ma".
-include "ground/relocation/gr_pat_pat_id.ma".
-
-(* POSITIVE APPLICATION FOR GENERIC RELOCATION MAPS *************************)
-
-(* Constructions with gr_uni ************************************************)
-
-(*** at_uni *)
-lemma gr_pat_uni (n) (i):
-      @❪i,𝐮❨n❩❫ ≘ i+n.
-#n @(nat_ind_succ … n) -n
-/2 width=5 by gr_pat_next/
-qed.
-
-(* Inversions with gr_uni ***************************************************)
-
-(*** at_inv_uni *)
-lemma gr_pat_inv_uni (n) (i) (j):
-      @❪i,𝐮❨n❩❫ ≘ j → j = i+n.
-/2 width=4 by gr_pat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pushs.ma
deleted file mode 100644 (file)
index f376009..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/notation/functions/upspoonstar_2.ma".
-include "ground/arith/nat_succ_iter.ma".
-include "ground/relocation/gr_map.ma".
-
-(* ITERATED PUSH FOR GENERIC RELOCATION MAPS ********************************)
-
-(*** pushs *)
-definition gr_pushs (f:gr_map) (n:nat) ≝
-           (gr_push^n) f.
-
-interpretation
-  "iterated push (generic relocation maps)"
-  'UpSpoonStar n f = (gr_pushs f n).
-
-(* Basic constructions ******************************************************)
-
-(*** pushs_O *)
-lemma gr_pushs_zero:
-      ∀f. f = ⫯*[𝟎] f.
-// qed.
-
-(*** push_swap *)
-lemma gr_pushs_push (n):
-      ∀f. ⫯⫯*[n] f = ⫯*[n] ⫯f.
-#n #f @(niter_appl … gr_push)
-qed.
-
-(*** pushs_S *)
-lemma gr_pushs_succ (n):
-      ∀f. ⫯⫯*[n] f = ⫯*[↑n] f.
-#f #n @(niter_succ … gr_push)
-qed.
-
-(*** pushs_xn *)
-lemma gr_pushs_swap (n):
-      ∀f. ⫯*[n] ⫯f = ⫯*[↑n] f.
-// qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_pushs_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_pushs_eq.ma
deleted file mode 100644 (file)
index 75cd539..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_eq.ma".
-include "ground/relocation/gr_pushs.ma".
-
-(* ITERATED PUSH FOR GENERIC RELOCATION MAPS ********************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** pushs_eq_repl *)
-lemma gr_pushs_eq_repl (n):
-      gr_eq_repl (λf1,f2. ⫯*[n] f1 ≡ ⫯*[n] f2).
-#n @(nat_ind_succ … n) -n
-/3 width=5 by gr_eq_push/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sand.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sand.ma
deleted file mode 100644 (file)
index e0430e9..0000000
+++ /dev/null
@@ -1,115 +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/notation/relations/rintersection_3.ma".
-include "ground/relocation/gr_tl.ma".
-
-(* RELATIONAL INTERSECTION FOR GENERIC RELOCATION MAPS **********************)
-
-(*** sand *)
-coinductive gr_sand: relation3 gr_map gr_map gr_map ≝
-(*** sand_pp *)
-| gr_sand_push_bi (f1) (f2) (f) (g1) (g2) (g):
-  gr_sand f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → gr_sand g1 g2 g
-(*** sand_np *)
-| gr_sand_next_push (f1) (f2) (f) (g1) (g2) (g):
-  gr_sand f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ⫯f = g → gr_sand g1 g2 g
-(*** sand_pn *)
-| gr_sand_push_next (f1) (f2) (f) (g1) (g2) (g):
-  gr_sand f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → gr_sand g1 g2 g
-(*** sand_nn *)
-| gr_sand_next_bi (f1) (f2) (f) (g1) (g2) (g):
-  gr_sand f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → gr_sand g1 g2 g
-.
-
-interpretation
-  "relational intersection (generic relocation maps)"
-  'RIntersection f1 f2 f = (gr_sand f1 f2 f).
-
-(* Basic constructions ******************************************************)
-
-(*** sand_refl *)
-corec lemma gr_sand_idem:
-            ∀f. f ⋒ f ≘ f.
-#f cases (gr_map_split_tl f) #H
-[ @(gr_sand_push_bi … H H H)
-| @(gr_sand_next_bi … H H H)
-] -H //
-qed.
-
-(*** sand_sym *)
-corec lemma gr_sand_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
-[ @gr_sand_push_bi
-| @gr_sand_push_next
-| @gr_sand_next_push
-| @gr_sand_next_bi
-] /2 width=7 by/
-qed-.
-
-(* Basic inversions *********************************************************)
-
-(*** sand_inv_ppx *)
-lemma gr_sand_inv_push_bi:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** sand_inv_npx *)
-lemma gr_sand_inv_next_push:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** sand_inv_pnx *)
-lemma gr_sand_inv_push_next:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** sand_inv_nnx *)
-lemma gr_sand_inv_next_bi:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sand_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sand_eq.ma
deleted file mode 100644 (file)
index 86c2a71..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_sand.ma".
-
-(* RELATIONAL INTERSECTION FOR GENERIC RELOCATION MAPS **********************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** sand_eq_repl_back1 *)
-corec lemma gr_sand_eq_repl_back_sn:
-            ∀f2,f. gr_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 (gr_eq_inv_push_sn … Hx … H1) try cases (gr_eq_inv_next_sn … Hx … H1) -g1
-/3 width=7 by gr_sand_push_bi, gr_sand_next_push, gr_sand_push_next, gr_sand_next_bi/
-qed-.
-
-(*** sand_eq_repl_fwd1 *)
-lemma gr_sand_eq_repl_fwd_sn:
-      ∀f2,f. gr_eq_repl_fwd … (λf1. f1 ⋒ f2 ≘ f).
-#f2 #f @gr_eq_repl_sym /2 width=3 by gr_sand_eq_repl_back_sn/
-qed-.
-
-(*** sand_eq_repl_back2 *)
-corec lemma gr_sand_eq_repl_back_dx:
-            ∀f1,f. gr_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 (gr_eq_inv_push_sn … Hx … H2) try cases (gr_eq_inv_next_sn … Hx … H2) -g2
-/3 width=7 by gr_sand_push_bi, gr_sand_next_push, gr_sand_push_next, gr_sand_next_bi/
-qed-.
-
-(*** sand_eq_repl_fwd2 *)
-lemma sand_eq_repl_fwd_dx:
-      ∀f1,f. gr_eq_repl_fwd … (λf2. f1 ⋒ f2 ≘ f).
-#f1 #f @gr_eq_repl_sym /2 width=3 by gr_sand_eq_repl_back_dx/
-qed-.
-
-(*** sand_eq_repl_back3 *)
-corec lemma gr_sand_eq_repl_back:
-            ∀f1,f2. gr_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 (gr_eq_inv_push_sn … Hx … H0) try cases (gr_eq_inv_next_sn … Hx … H0) -g
-/3 width=7 by gr_sand_push_bi, gr_sand_next_push, gr_sand_push_next, gr_sand_next_bi/
-qed-.
-
-(*** sand_eq_repl_fwd3 *)
-lemma gr_sand_eq_repl_fwd:
-      ∀f1,f2. gr_eq_repl_fwd … (λf. f1 ⋒ f2 ≘ f).
-#f1 #f2 @gr_eq_repl_sym /2 width=3 by gr_sand_eq_repl_back/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj.ma
deleted file mode 100644 (file)
index f8b101d..0000000
+++ /dev/null
@@ -1,144 +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/notation/relations/parallel_2.ma".
-include "ground/relocation/gr_tl.ma".
-
-(* DISJOINTNESS FOR GENERIC RELOCATION MAPS *********************************)
-
-(*** sdj *)
-coinductive gr_sdj: relation gr_map ≝
-(*** sdj_pp *)
-| gr_sdj_push_bi (f1) (f2) (g1) (g2):
-  gr_sdj f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → gr_sdj g1 g2
-(*** sdj_np *)
-| gr_sdj_next_push (f1) (f2) (g1) (g2):
-  gr_sdj f1 f2 → ↑f1 = g1 → ⫯f2 = g2 → gr_sdj g1 g2
-(*** sdj_pn *)
-| gr_sdj_push_next (f1) (f2) (g1) (g2):
-  gr_sdj f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → gr_sdj g1 g2
-.
-
-interpretation
-  "disjointness (generic relocation maps)"
-  'Parallel f1 f2 = (gr_sdj f1 f2).
-
-(* Basic constructions ******************************************************)
-
-(*** sdj_sym *)
-corec lemma gr_sdj_sym:
-            symmetric … gr_sdj.
-#f1 #f2 * -f1 -f2
-#f1 #f2 #g1 #g2 #Hf #H1 #H2
-[ @(gr_sdj_push_bi … H2 H1)
-| @(gr_sdj_push_next … H2 H1)
-| @(gr_sdj_next_push … H2 H1)
-] -g2 -g1
-/2 width=1 by/
-qed-.
-
-(* Basic inversions *********************************************************)
-
-(*** sdj_inv_pp *)
-lemma gr_sdj_inv_push_bi:
-      ∀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 (eq_inv_gr_push_bi … Hx1) -Hx1
-  lapply (eq_inv_gr_push_bi … Hx2) -Hx2 //
-| elim (eq_inv_gr_push_next … Hx1)
-| elim (eq_inv_gr_push_next … Hx2)
-]
-qed-.
-
-(*** sdj_inv_np *)
-lemma gr_sdj_inv_next_push:
-      ∀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 (eq_inv_gr_next_push … Hx1)
-| lapply (eq_inv_gr_next_bi … Hx1) -Hx1
-  lapply (eq_inv_gr_push_bi … Hx2) -Hx2 //
-| elim (eq_inv_gr_push_next … Hx2)
-]
-qed-.
-
-(*** sdj_inv_pn *)
-lemma gr_sdj_inv_push_next:
-      ∀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 (eq_inv_gr_next_push … Hx2)
-| elim (eq_inv_gr_push_next … Hx1)
-| lapply (eq_inv_gr_push_bi … Hx1) -Hx1
-  lapply (eq_inv_gr_next_bi … Hx2) -Hx2 //
-]
-qed-.
-
-(*** sdj_inv_nn *)
-lemma gr_sdj_inv_next_bi:
-      ∀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 (eq_inv_gr_next_push … Hx1)
-| elim (eq_inv_gr_next_push … Hx2)
-| elim (eq_inv_gr_next_push … Hx1)
-]
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** sdj_inv_nx *)
-lemma gr_sdj_inv_next_sn:
-      ∀g1,g2. g1 ∥ g2 → ∀f1. ↑f1 = g1 →
-      ∃∃f2. f1 ∥ f2 & ⫯f2 = g2.
-#g1 #g2 elim (gr_map_split_tl g2) #H2 #H #f1 #H1
-[ lapply (gr_sdj_inv_next_push … H … H1 H2) -H /2 width=3 by ex2_intro/
-| elim (gr_sdj_inv_next_bi … H … H1 H2)
-]
-qed-.
-
-(*** sdj_inv_xn *)
-lemma gr_sdj_inv_next_dx:
-      ∀g1,g2. g1 ∥ g2 → ∀f2. ↑f2 = g2 →
-      ∃∃f1. f1 ∥ f2 & ⫯f1 = g1.
-#g1 #g2 elim (gr_map_split_tl g1) #H1 #H #f2 #H2
-[ lapply (gr_sdj_inv_push_next … H … H1 H2) -H /2 width=3 by ex2_intro/
-| elim (gr_sdj_inv_next_bi … H … H1 H2)
-]
-qed-.
-
-(*** sdj_inv_xp *)
-lemma gr_sdj_inv_push_dx:
-      ∀g1,g2. g1 ∥ g2 → ∀f2. ⫯f2 = g2 →
-      ∨∨ ∃∃f1. f1 ∥ f2 & ⫯f1 = g1
-       | ∃∃f1. f1 ∥ f2 & ↑f1 = g1.
-#g1 #g2 elim (gr_map_split_tl g1) #H1 #H #f2 #H2
-[ lapply (gr_sdj_inv_push_bi … H … H1 H2)
-| lapply (gr_sdj_inv_next_push … H … H1 H2)
-] -H -H2
-/3 width=3 by ex2_intro, or_introl, or_intror/
-qed-.
-
-(*** sdj_inv_px *)
-lemma gr_sdj_inv_push_sn:
-      ∀g1,g2. g1 ∥ g2 → ∀f1. ⫯f1 = g1 →
-      ∨∨ ∃∃f2. f1 ∥ f2 & ⫯f2 = g2
-       | ∃∃f2. f1 ∥ f2 & ↑f2 = g2.
-#g1 #g2 elim (gr_map_split_tl g2) #H2 #H #f1 #H1
-[ lapply (gr_sdj_inv_push_bi … H … H1 H2)
-| lapply (gr_sdj_inv_push_next … H … H1 H2)
-] -H -H1
-/3 width=3 by ex2_intro, or_introl, or_intror/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj_eq.ma
deleted file mode 100644 (file)
index f4b82a5..0000000
+++ /dev/null
@@ -1,54 +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/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_sdj.ma".
-
-(* DISJOINTNESS FOR GENERIC RELOCATION MAPS *********************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** sdj_eq_repl_back1 *)
-corec lemma gr_sdj_eq_repl_back_sn:
-            ∀f2. gr_eq_repl_back … (λf1. f1 ∥ f2).
-#f2 #f1 * -f2 -f1
-#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
-[ cases (gr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by gr_sdj_push_bi/
-| cases (gr_eq_inv_next_sn …  H0 …  H1) -g1 /3 width=5 by gr_sdj_next_push/
-| cases (gr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by gr_sdj_push_next/
-]
-qed-.
-
-(*** sdj_eq_repl_fwd1 *)
-lemma gr_sdj_eq_repl_fwd_sn:
-      ∀f2. gr_eq_repl_fwd … (λf1. f1 ∥ f2).
-#f2 @gr_eq_repl_sym /2 width=3 by gr_sdj_eq_repl_back_sn/
-qed-.
-
-(*** sdj_eq_repl_back2 *)
-corec lemma gr_sdj_eq_repl_back_dx:
-            ∀f1. gr_eq_repl_back … (λf2. f1 ∥ f2).
-#f1 #f2 * -f1 -f2
-#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
-[ cases (gr_eq_inv_push_sn …  H0 …  H2) -g2 /3 width=5 by gr_sdj_push_bi/
-| cases (gr_eq_inv_push_sn …  H0 …  H2) -g2 /3 width=5 by gr_sdj_next_push/
-| cases (gr_eq_inv_next_sn …  H0 …  H2) -g2 /3 width=5 by gr_sdj_push_next/
-]
-qed-.
-
-(*** sdj_eq_repl_fwd2 *)
-lemma gr_sdj_eq_repl_fwd_dx:
-      ∀f1. gr_eq_repl_fwd … (λf2. f1 ∥ f2).
-#f1 @gr_eq_repl_sym /2 width=3 by gr_sdj_eq_repl_back_dx/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sdj_isi.ma
deleted file mode 100644 (file)
index fac14a4..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi.ma".
-include "ground/relocation/gr_sdj.ma".
-
-(* DISJOINTNESS FOR GENERIC RELOCATION MAPS *********************************)
-
-(* Constructions with gr_isi ************************************************)
-
-(*** sdj_isid_dx *)
-corec lemma gr_sdj_isi_dx:
-            ∀f2. 𝐈❪f2❫ → ∀f1. f1 ∥ f2.
-#f2 * -f2
-#f2 #g2 #Hf2 #H2 #f1 cases (gr_map_split_tl f1) *
-/3 width=5 by gr_sdj_next_push, gr_sdj_push_bi/
-qed.
-
-(*** sdj_isid_sn *)
-corec lemma gr_sdj_isi_sn:
-            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ∥ f2.
-#f1 * -f1
-#f1 #g1 #Hf1 #H1 #f2 cases (gr_map_split_tl f2) *
-/3 width=5 by gr_sdj_push_next, gr_sdj_push_bi/
-qed.
-
-(* Inversions with gr_isi ***************************************************)
-
-(*** sdj_inv_refl *)
-corec lemma gr_sdj_inv_refl:
-            ∀f. f ∥ f →  𝐈❪f❫.
-#f cases (gr_map_split_tl f) #Hf #H
-[ lapply (gr_sdj_inv_push_bi … H … Hf Hf) -H /3 width=3 by gr_isi_push/
-| elim (gr_sdj_inv_next_bi … H … Hf Hf)
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle.ma
deleted file mode 100644 (file)
index 74c1578..0000000
+++ /dev/null
@@ -1,162 +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/relocation/gr_tl.ma".
-
-(* INCLUSION FOR GENERIC RELOCATION MAPS ************************************)
-
-(*** sle *)
-coinductive gr_sle: relation gr_map ≝
-(*** sle_push *)
-| gr_sle_push (f1) (f2) (g1) (g2):
-  gr_sle f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → gr_sle g1 g2
-(*** sle_next *)
-| gr_sle_next (f1) (f2) (g1) (g2):
-  gr_sle f1 f2 → ↑f1 = g1 → ↑f2 = g2 → gr_sle g1 g2
-(*** sle_weak *)
-| gr_sle_weak (f1) (f2) (g1) (g2):
-  gr_sle f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → gr_sle g1 g2
-.
-
-interpretation
-  "inclusion (generic relocation maps)"
-  'subseteq f1 f2 = (gr_sle f1 f2).
-
-(* Basic constructions ******************************************************)
-
-(*** sle_refl *)
-corec lemma gr_sle_refl:
-            reflexive … gr_sle.
-#f cases (gr_map_split_tl f) #H
-[ @(gr_sle_push … H H) | @(gr_sle_next … H H) ] -H //
-qed.
-
-(* Basic inversions *********************************************************)
-
-(*** sle_inv_xp *)
-lemma gr_sle_inv_push_dx:
-      ∀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 (eq_inv_gr_push_bi … Hx2) -Hx2 /2 width=3 by ex2_intro/ ]
-elim (eq_inv_gr_push_next … Hx2)
-qed-.
-
-(*** sle_inv_nx *)
-lemma gr_sle_inv_next_sn:
-      ∀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 (eq_inv_gr_next_bi … Hx1) -Hx1 /2 width=3 by ex2_intro/ ]
-elim (eq_inv_gr_next_push … Hx1)
-qed-.
-
-(*** sle_inv_pn *)
-lemma gr_sle_inv_push_next:
-      ∀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 (eq_inv_gr_next_push … Hx2)
-| elim (eq_inv_gr_push_next … Hx1)
-| lapply (eq_inv_gr_push_bi … Hx1) -Hx1
-  lapply (eq_inv_gr_next_bi … Hx2) -Hx2 //
-]
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** sle_inv_pp *)
-lemma gr_sle_inv_push_bi:
-      ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ⊆ f2.
-#g1 #g2 #H #f1 #f2 #H1 #H2
-elim (gr_sle_inv_push_dx … H … H2) -g2 #x1 #H #Hx1 destruct
-lapply (eq_inv_gr_push_bi … Hx1) -Hx1 //
-qed-.
-
-(*** sle_inv_nn *)
-lemma gr_sle_inv_next_bi:
-      ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → f1 ⊆ f2.
-#g1 #g2 #H #f1 #f2 #H1 #H2
-elim (gr_sle_inv_next_sn … H … H1) -g1 #x2 #H #Hx2 destruct
-lapply (eq_inv_gr_next_bi … Hx2) -Hx2 //
-qed-.
-
-(*** sle_inv_px *)
-lemma gr_sle_inv_push_sn:
-      ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 →
-      ∨∨ ∃∃f2. f1 ⊆ f2 & ⫯f2 = g2 
-       | ∃∃f2. f1 ⊆ f2 & ↑f2 = g2.
-#g1 #g2
-elim (gr_map_split_tl g2) #H2 #H #f1 #H1
-[ lapply (gr_sle_inv_push_bi … H … H1 H2)
-| lapply (gr_sle_inv_push_next … H … H1 H2)
-] -H -H1
-/3 width=3 by ex2_intro, or_introl, or_intror/
-qed-.
-
-(*** sle_inv_xn *)
-lemma gr_sle_inv_next_dx:
-      ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 →
-      ∨∨ ∃∃f1. f1 ⊆ f2 & ⫯f1 = g1
-       | ∃∃f1. f1 ⊆ f2 & ↑f1 = g1.
-#g1 #g2
-elim (gr_map_split_tl g1) #H1 #H #f2 #H2
-[ lapply (gr_sle_inv_push_next … H … H1 H2)
-| lapply (gr_sle_inv_next_bi … H … H1 H2)
-] -H -H2
-/3 width=3 by ex2_intro, or_introl, or_intror/
-qed-.
-
-(* Constructions with gr_tl *************************************************)
-
-(*** sle_px_tl *)
-lemma gr_sle_push_sn_tl:
-      ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 → f1 ⊆ ⫰g2.
-#g1 #g2 #H #f1 #H1
-elim (gr_sle_inv_push_sn … H … H1) -H -H1 * //
-qed.
-
-(*** sle_xn_tl *)
-lemma gr_sle_next_dx_tl:
-      ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 → ⫰g1 ⊆ f2.
-#g1 #g2 #H #f2 #H2
-elim (gr_sle_inv_next_dx … H … H2) -H -H2 * //
-qed.
-
-(*** sle_tl *)
-lemma gr_sle_tl:
-      ∀f1,f2. f1 ⊆ f2 → ⫰f1 ⊆ ⫰f2.
-#f1 elim (gr_map_split_tl f1) #H1 #f2 #H
-[ lapply (gr_sle_push_sn_tl … H … H1) -H //
-| elim (gr_sle_inv_next_sn … H … H1) -H //
-]
-qed.
-
-(* Inversions with gr_tl ****************************************************)
-
-(*** sle_inv_tl_sn *)
-lemma gr_sle_inv_tl_sn:
-      ∀f1,f2. ⫰f1 ⊆ f2 → f1 ⊆ ↑f2.
-#f1 elim (gr_map_split_tl f1) #H #f2 #Hf12
-/2 width=5 by gr_sle_next, gr_sle_weak/
-qed-.
-
-(*** sle_inv_tl_dx *)
-lemma gr_sle_inv_tl_dx:
-      ∀f1,f2. f1 ⊆ ⫰f2 → ⫯f1 ⊆ f2.
-#f1 #f2 elim (gr_map_split_tl f2) #H #Hf12
-/2 width=5 by gr_sle_push, gr_sle_weak/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_eq.ma
deleted file mode 100644 (file)
index caa6ae5..0000000
+++ /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/relocation/gr_sle.ma".
-(* * this should go first *)
-include "ground/relocation/gr_tl_eq.ma".
-
-(* INCLUSION FOR GENERIC RELOCATION MAPS ************************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** sle_eq_repl_back1 *)
-corec lemma gr_sle_eq_repl_back_sn:
-            ∀f2:gr_map. gr_eq_repl_back … (λf1:gr_map. f1 ⊆ f2).
-#f2 #f1 * -f2 -f1
-#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
-[ cases (gr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by gr_sle_push/
-| cases (gr_eq_inv_next_sn …  H0 …  H1) -g1 /3 width=5 by gr_sle_next/
-| cases (gr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by gr_sle_weak/
-]
-qed-.
-
-(*** sle_eq_repl_fwd1 *)
-lemma gr_sle_eq_repl_fwd_sn:
-      ∀f2. gr_eq_repl_fwd … (λf1. f1 ⊆ f2).
-#f2 @gr_eq_repl_sym /2 width=3 by gr_sle_eq_repl_back_sn/
-qed-.
-
-(*** sle_eq_repl_back2 *)
-corec lemma gr_sle_eq_repl_back_dx:
-            ∀f1. gr_eq_repl_back … (λf2. f1 ⊆ f2).
-#f1 #f2 * -f1 -f2
-#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
-[ cases (gr_eq_inv_push_sn …  H0 …  H2) -g2 /3 width=5 by gr_sle_push/
-| cases (gr_eq_inv_next_sn …  H0 …  H2) -g2 /3 width=5 by gr_sle_next/
-| cases (gr_eq_inv_next_sn …  H0 …  H2) -g2 /3 width=5 by gr_sle_weak/
-]
-qed-.
-
-(*** sle_eq_repl_fwd2 *)
-lemma gr_sle_eq_repl_fwd_dx:
-      ∀f1. gr_eq_repl_fwd … (λf2. f1 ⊆ f2).
-#f1 @gr_eq_repl_sym /2 width=3 by gr_sle_eq_repl_back_dx/
-qed-.
-
-(*** sle_refl_eq *)
-lemma gr_sle_refl_eq:
-      ∀f1,f2. f1 ≡ f2 → f1 ⊆ f2.
-/2 width=3 by gr_sle_eq_repl_back_dx/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_isd.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_isd.ma
deleted file mode 100644 (file)
index 5174bab..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isd.ma".
-include "ground/relocation/gr_sle.ma".
-
-(* INCLUSION FOR GENERIC RELOCATION MAPS ************************************)
-
-(* Constructions with gr_isd ************************************************)
-
-(*** sle_isdiv_dx *)
-corec lemma gr_sle_isd_dx:
-            ∀f2. 𝛀❪f2❫ → ∀f1. f1 ⊆ f2.
-#f2 * -f2
-#f2 #g2 #Hf2 #H2 #f1 cases (gr_map_split_tl f1) *
-/3 width=5 by gr_sle_weak, gr_sle_next/
-qed.
-
-(* Inversions with gr_isd ***************************************************)
-
-(*** sle_inv_isdiv_sn *)
-corec lemma gr_sle_inv_isd_sn:
-            ∀f1,f2. f1 ⊆ f2 → 𝛀❪f1❫ → 𝛀❪f2❫.
-#f1 #f2 * -f1 -f2
-#f1 #f2 #g1 #g2 #Hf * * #H
-[1,3: elim (gr_isd_inv_push … H) // ]
-lapply (gr_isd_inv_next … H ??) -H
-/3 width=3 by gr_isd_next/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_isi.ma
deleted file mode 100644 (file)
index 96b277b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_isi.ma".
-include "ground/relocation/gr_sle.ma".
-
-(* INCLUSION FOR GENERIC RELOCATION MAPS ************************************)
-
-(* Constructions with gr_isi ************************************************)
-
-(*** sle_isid_sn *)
-corec lemma gr_sle_isi_sn:
-            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⊆ f2.
-#f1 * -f1
-#f1 #g1 #Hf1 #H1 #f2 cases (gr_map_split_tl f2) *
-/3 width=5 by gr_sle_weak, gr_sle_push/
-qed.
-
-(* Inversions with gr_isi ***************************************************)
-
-(*** sle_inv_isid_dx *)
-corec lemma gr_sle_inv_isi_dx:
-            ∀f1,f2. f1 ⊆ f2 → 𝐈❪f2❫ → 𝐈❪f1❫.
-#f1 #f2 * -f1 -f2
-#f1 #f2 #g1 #g2 #Hf * * #H
-[2,3: elim (gr_isi_inv_next … H) // ]
-lapply (gr_isi_inv_push … H ??) -H
-/3 width=3 by gr_isi_push/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_pushs.ma
deleted file mode 100644 (file)
index 41d2bb7..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_pushs.ma".
-include "ground/relocation/gr_sle.ma".
-
-(* INCLUSION FOR GENERIC RELOCATION MAPS ************************************)
-
-(* Constructions with gr_pushs **********************************************)
-
-(*** sle_pushs *)
-lemma gr_sle_pushs:
-      ∀f1,f2. f1 ⊆ f2 → ∀n. ⫯*[n] f1 ⊆ ⫯*[n] f2.
-#f1 #f2 #Hf12 #n @(nat_ind_succ … n) -n
-/2 width=5 by gr_sle_push/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_sle.ma
deleted file mode 100644 (file)
index f7c34e1..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_sle.ma".
-
-(* INCLUSION FOR GENERIC RELOCATION MAPS ************************************)
-
-(* Main constructions *******************************************************)
-
-(*** sle_trans *)
-corec theorem gr_sle_trans:
-              Transitive … gr_sle.
-#f1 #f * -f1 -f
-#f1 #f #g1 #g #Hf #H1 #H #g2 #H0
-[ cases (gr_sle_inv_push_sn … H0 … H) *
-|*: cases (gr_sle_inv_next_sn … H0 … H)
-] -g
-/3 width=5 by gr_sle_push, gr_sle_next, gr_sle_weak/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sle_tls.ma
deleted file mode 100644 (file)
index ea319cc..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_sle.ma".
-
-(* INCLUSION FOR GENERIC RELOCATION MAPS ************************************)
-
-(* Constructions with gr_tls ************************************************)
-
-(*** sle_tls *)
-lemma gr_sle_tls:
-      ∀f1,f2. f1 ⊆ f2 → ∀n. ⫰*[n] f1 ⊆ ⫰*[n] f2.
-#f1 #f2 #Hf12 #n @(nat_ind_succ … n) -n
-/2 width=5 by gr_sle_tl/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor.ma
deleted file mode 100644 (file)
index 4f2e759..0000000
+++ /dev/null
@@ -1,340 +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/notation/relations/runion_3.ma".
-include "ground/xoa/or_3.ma".
-include "ground/xoa/ex_3_2.ma".
-include "ground/relocation/gr_tl.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(*** sor *)
-coinductive gr_sor: relation3 gr_map gr_map gr_map ≝
-(*** sor_pp *)
-| gr_sor_push_bi (f1) (f2) (f) (g1) (g2) (g):
-  gr_sor f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → gr_sor g1 g2 g
-(*** sor_np *)
-| gr_sor_next_push (f1) (f2) (f) (g1) (g2) (g):
-  gr_sor f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ↑f = g → gr_sor g1 g2 g
-(*** sor_pn *)
-| gr_sor_push_next (f1) (f2) (f) (g1) (g2) (g):
-  gr_sor f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → gr_sor g1 g2 g
-(*** sor_nn *)
-| gr_sor_next_bi (f1) (f2) (f) (g1) (g2) (g):
-  gr_sor f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → gr_sor g1 g2 g
-.
-
-interpretation
-  "relational union (generic relocation maps)"
-  'RUnion f1 f2 f = (gr_sor f1 f2 f).
-
-(* Basic constructions ******************************************************)
-
-(*** sor_idem *)
-corec lemma gr_sor_idem:
-            ∀f. f ⋓ f ≘ f.
-#f cases (gr_map_split_tl f) #H
-[ @(gr_sor_push_bi … H H H)
-| @(gr_sor_next_bi … H H H)
-] -H //
-qed.
-
-(*** sor_comm *)
-corec lemma gr_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
-[ @gr_sor_push_bi | @gr_sor_push_next | @gr_sor_next_push | @gr_sor_next_bi ] /2 width=7 by/
-qed-.
-
-(* Basic inversions *********************************************************)
-
-(*** sor_inv_ppx *)
-lemma gr_sor_inv_push_bi:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** sor_inv_npx *)
-lemma gr_sor_inv_next_push:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** sor_inv_pnx *)
-lemma gr_sor_inv_push_next:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
-
-(*** sor_inv_nnx *)
-lemma gr_sor_inv_next_bi:
-      ∀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 (>(eq_inv_gr_push_bi … Hx1) -x1) try (>(eq_inv_gr_next_bi … Hx1) -x1)
-try elim (eq_inv_gr_push_next … Hx1) try elim (eq_inv_gr_next_push … Hx1)
-try (>(eq_inv_gr_push_bi … Hx2) -x2) try (>(eq_inv_gr_next_bi … Hx2) -x2)
-try elim (eq_inv_gr_push_next … Hx2) try elim (eq_inv_gr_next_push … Hx2)
-/2 width=3 by ex2_intro/
-qed-.
-
-(* Advanced inversions ******************************************************)
-
-(*** sor_inv_ppn *)
-lemma gr_sor_inv_push_bi_next:
-      ∀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 (gr_sor_inv_push_bi … H … H1 H2) -g1 -g2 #x #_ #H destruct
-/2 width=3 by eq_inv_gr_push_next/
-qed-.
-
-(*** sor_inv_nxp *)
-lemma gr_sor_inv_next_sn_push:
-      ∀g1,g2,g. g1 ⋓ g2 ≘ g →
-      ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥.
-#g1 #g2 #g #H #f1 #f #H1 #H0
-elim (gr_map_split_tl g2) #H2
-[ elim (gr_sor_inv_next_push … H … H1 H2)
-| elim (gr_sor_inv_next_bi … H … H1 H2)
-] -g1 #x #H
-/2 width=3 by eq_inv_gr_next_push/
-qed-.
-
-(*** sor_inv_xnp *)
-lemma gr_sor_inv_next_dx_push:
-      ∀g1,g2,g. g1 ⋓ g2 ≘ g →
-      ∀f2,f. ↑f2 = g2 → ⫯f = g → ⊥.
-#g1 #g2 #g #H #f2 #f #H2 #H0
-elim (gr_map_split_tl g1) #H1
-[ elim (gr_sor_inv_push_next … H … H1 H2)
-| elim (gr_sor_inv_next_bi … H … H1 H2)
-] -g2 #x #H
-/2 width=3 by eq_inv_gr_next_push/
-qed-.
-
-(*** sor_inv_ppp *)
-lemma gr_sor_inv_push_bi_push:
-      ∀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 (gr_sor_inv_push_bi … H … H1 H2) -g1 -g2 #x #Hx #H destruct
-<(eq_inv_gr_push_bi … H) -f //
-qed-.
-
-(*** sor_inv_npn *)
-lemma gr_sor_inv_next_push_next:
-      ∀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 (gr_sor_inv_next_push … H … H1 H2) -g1 -g2 #x #Hx #H destruct
-<(eq_inv_gr_next_bi … H) -f //
-qed-.
-
-(*** sor_inv_pnn *)
-lemma gr_sor_inv_push_next_next:
-      ∀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 (gr_sor_inv_push_next … H … H1 H2) -g1 -g2 #x #Hx #H destruct
-<(eq_inv_gr_next_bi … H) -f //
-qed-.
-
-(*** sor_inv_nnn *)
-lemma gr_sor_inv_next_bi_next:
-      ∀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 (gr_sor_inv_next_bi … H … H1 H2) -g1 -g2 #x #Hx #H destruct
-<(eq_inv_gr_next_bi … H) -f //
-qed-.
-
-(*** sor_inv_pxp *)
-lemma gr_sor_inv_push_sn_push:
-      ∀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 (gr_map_split_tl g2) #H2
-[ /3 width=7 by gr_sor_inv_push_bi_push, ex2_intro/
-| elim (gr_sor_inv_next_dx_push … H … H2 H0)
-]
-qed-.
-
-(*** sor_inv_xpp *)
-lemma gr_sor_inv_push_dx_push:
-      ∀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 (gr_map_split_tl g1) #H1
-[ /3 width=7 by gr_sor_inv_push_bi_push, ex2_intro/
-| elim (gr_sor_inv_next_sn_push … H … H1 H0)
-]
-qed-.
-
-(*** sor_inv_pxn *)
-lemma gr_sor_inv_push_sn_next:
-      ∀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 (gr_map_split_tl g2) #H2
-[ elim (gr_sor_inv_push_bi_next … H … H1 H2 H0)
-| /3 width=7 by gr_sor_inv_push_next_next, ex2_intro/
-]
-qed-.
-
-(*** sor_inv_xpn *)
-lemma gr_sor_inv_push_dx_next:
-      ∀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 (gr_map_split_tl g1) #H1
-[ elim (gr_sor_inv_push_bi_next … H … H1 H2 H0)
-| /3 width=7 by gr_sor_inv_next_push_next, ex2_intro/
-]
-qed-.
-
-(*** sor_inv_xxp *)
-lemma gr_sor_inv_push:
-      ∀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 (gr_map_split_tl g1) #H1
-[ elim (gr_sor_inv_push_sn_push … H … H1 H0) -g /2 width=5 by ex3_2_intro/
-| elim (gr_sor_inv_next_sn_push … H … H1 H0)
-]
-qed-.
-
-(*** sor_inv_nxn *)
-lemma gr_sor_inv_next_sn_next:
-      ∀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 (gr_map_split_tl g2)
-/4 width=7 by gr_sor_inv_next_push_next, gr_sor_inv_next_bi_next, ex2_intro, or_intror, or_introl/
-qed-.
-
-(*** sor_inv_xnn *)
-lemma gr_sor_inv_next_dx_next:
-      ∀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 (gr_map_split_tl g1)
-/4 width=7 by gr_sor_inv_push_next_next, gr_sor_inv_next_bi_next, ex2_intro, or_intror, or_introl/
-qed-.
-
-(*** sor_inv_xxn *)
-lemma gr_sor_inv_next:
-      ∀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 (gr_map_split_tl g1) #H1
-[ elim (gr_sor_inv_push_sn_next … H … H1 H0) -g
-  /3 width=5 by or3_intro1, ex3_2_intro/
-| elim (gr_sor_inv_next_sn_next … H … H1 H0) -g *
-  /3 width=5 by or3_intro0, or3_intro2, ex3_2_intro/
-]
-qed-.
-
-(* Constructions with gr_tl *************************************************)
-
-(*** sor_tl *)
-lemma gr_sor_tl:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ⫰f1 ⋓ ⫰f2 ≘ ⫰f.
-#f1 cases (gr_map_split_tl f1) #H1
-#f2 cases (gr_map_split_tl f2) #H2
-#f #Hf
-[ cases (gr_sor_inv_push_bi … Hf … H1 H2)
-| cases (gr_sor_inv_push_next … Hf … H1 H2)
-| cases (gr_sor_inv_next_push … Hf … H1 H2)
-| cases (gr_sor_inv_next_bi … Hf … H1 H2)
-] -Hf #g #Hg #H destruct //
-qed.
-
-(*** sor_xxn_tl *)
-lemma gr_sor_next_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 (gr_sor_inv_next … H … H0) -H -H0 *
-/3 width=5 by ex3_2_intro, or_introl, or_intror/
-qed-.
-
-(*** sor_xnx_tl *)
-lemma gr_sor_next_dx_tl:
-      ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f2. ↑f2 = g2 →
-      ∃∃f1,f. f1 ⋓ f2 ≘ f & ⫰g1 = f1 & ↑f = g.
-#g1 elim (gr_map_split_tl g1) #H1 #g2 #g #H #f2 #H2
-[ elim (gr_sor_inv_push_next … H … H1 H2)
-| elim (gr_sor_inv_next_bi … H … H1 H2)
-] -g2
-/3 width=5 by ex3_2_intro/
-qed-.
-
-(*** sor_nxx_tl *)
-lemma gr_sor_next_sn_tl:
-      ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1. ↑f1 = g1 →
-      ∃∃f2,f. f1 ⋓ f2 ≘ f & ⫰g2 = f2 & ↑f = g.
-#g1 #g2 elim (gr_map_split_tl g2) #H2 #g #H #f1 #H1
-[ elim (gr_sor_inv_next_push … H … H1 H2)
-| elim (gr_sor_inv_next_bi … H … H1 H2)
-] -g1
-/3 width=5 by ex3_2_intro/
-qed-.
-
-(* Inversions with gr_tl ****************************************************)
-
-(*** sor_inv_tl_sn *)
-lemma gr_sor_inv_tl_sn:
-      ∀f1,f2,f. ⫰f1 ⋓ f2 ≘ f → f1 ⋓ ↑f2 ≘ ↑f.
-#f1 #f2 #f elim (gr_map_split_tl f1)
-/2 width=7 by gr_sor_push_next, gr_sor_next_bi/
-qed-.
-
-(*** sor_inv_tl_dx *)
-lemma gr_sor_inv_tl_dx:
-      ∀f1,f2,f. f1 ⋓ ⫰f2 ≘ f → ↑f1 ⋓ f2 ≘ ↑f.
-#f1 #f2 #f elim (gr_map_split_tl f2)
-/2 width=7 by gr_sor_next_push, gr_sor_next_bi/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_coafter_ist_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_coafter_ist_isf.ma
deleted file mode 100644 (file)
index 89b457f..0000000
+++ /dev/null
@@ -1,76 +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/relocation/gr_isf.ma".
-include "ground/relocation/gr_coafter_isi.ma".
-include "ground/relocation/gr_coafter_ist_isi.ma".
-include "ground/relocation/gr_sor_isi.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Constructions with gr_coafter and gr_ist and gr_isf **********************)
-
-(*** coafter_sor *)
-lemma gr_sor_coafter_dx_tans:
-      ∀f. 𝐅❪f❫ → ∀f2. 𝐓❪f2❫ → ∀f1. f2 ~⊚ f1 ≘ f → ∀f1a,f1b. f1a ⋓ f1b ≘ f1 →
-      ∃∃fa,fb. f2 ~⊚ f1a ≘ fa & f2 ~⊚ f1b ≘ fb & fa ⋓ fb ≘ f.
-@gr_isf_ind
-[ #f #Hf #f2 #Hf2 #f1 #Hf #f1a #f1b #Hf1
-  lapply (gr_coafter_des_ist_sn_isi … Hf ??) -Hf // #H2f1
-  elim (gr_sor_inv_isi … Hf1) -Hf1 //
-  /3 width=5 by gr_coafter_isi_dx, gr_sor_idem, ex3_2_intro/
-| #f #_ #IH #f2 #Hf2 #f1 #H1 #f1a #f1b #H2
-  elim (gr_coafter_inv_push … H1) -H1 [1,3: * |*: // ]
-  [ #g2 #g1 #Hf #Hgf2 #Hgf1
-    elim (gr_sor_inv_push … H2) -H2 [ |*: // ] #ga #gb #Hg1
-    lapply (gr_ist_inv_push … Hf2 … Hgf2) -Hf2 #Hg2
-    elim (IH … Hf … Hg1) // -f1 -g1 -IH -Hg2
-    /3 width=11 by gr_coafter_refl, gr_sor_push_bi, ex3_2_intro/
-  | #g2 #Hf #Hgf2
-    lapply (gr_ist_inv_next … Hf2 … Hgf2) -Hf2 #Hg2
-    elim (IH … Hf … H2) // -f1 -IH -Hg2
-    /3 width=11 by gr_coafter_next, gr_sor_push_bi, ex3_2_intro/
-  ]
-| #f #_ #IH #f2 #Hf2 #f1 #H1 #f1a #f1b #H2
-  elim (gr_coafter_inv_next … H1) -H1 [ |*: // ] #g2 #g1 #Hf #Hgf2 #Hgf1
-  lapply (gr_ist_inv_push … Hf2 … Hgf2) -Hf2 #Hg2
-  elim (gr_sor_inv_next … H2) -H2 [1,3,4: * |*: // ] #ga #gb #Hg1
-  elim (IH … Hf … Hg1) // -f1 -g1 -IH -Hg2
-  /3 width=11 by gr_coafter_refl, gr_coafter_push, gr_sor_next_push, gr_sor_push_next, gr_sor_next_bi, ex3_2_intro/
-]
-qed-.
-
-(*** coafter_inv_sor *)
-lemma gr_sor_coafter_div:
-      ∀f. 𝐅❪f❫ → ∀f2. 𝐓❪f2❫ → ∀f1. f2 ~⊚ f1 ≘ f → ∀fa,fb. fa ⋓ fb ≘ f →
-      ∃∃f1a,f1b. f2 ~⊚ f1a ≘ fa & f2 ~⊚ f1b ≘ fb & f1a ⋓ f1b ≘ f1.
-@gr_isf_ind
-[ #f #Hf #f2 #Hf2 #f1 #H1f #fa #fb #H2f
-  elim (gr_sor_inv_isi … H2f) -H2f //
-  lapply (gr_coafter_des_ist_sn_isi … H1f ??) -H1f //
-  /3 width=5 by ex3_2_intro, gr_coafter_isi_dx, gr_sor_isi_bi_isi/
-| #f #_ #IH #f2 #Hf2 #f1 #H1 #fa #fb #H2
-  elim (gr_sor_inv_push … H2) -H2 [ |*: // ] #ga #gb #H2f
-  elim (gr_coafter_inv_push … H1) -H1 [1,3: * |*: // ] #g2 [ #g1 ] #H1f #Hgf2
-  [ lapply (gr_ist_inv_push … Hf2 … Hgf2) | lapply (gr_ist_inv_next … Hf2 … Hgf2) ] -Hf2 #Hg2
-  elim (IH … Hg2 … H1f … H2f) -f -Hg2
-  /3 width=11 by gr_sor_push_bi, ex3_2_intro, gr_coafter_refl, gr_coafter_next/
-| #f #_ #IH #f2 #Hf2 #f1 #H1 #fa #fb #H2
-  elim (gr_coafter_inv_next … H1) -H1 [ |*: // ] #g2 #g1 #H1f #Hgf2
-  lapply (gr_ist_inv_push … Hf2 … Hgf2) -Hf2 #Hg2
-  elim (gr_sor_inv_next … H2) -H2 [1,3,4: * |*: // ] #ga #gb #H2f
-  elim (IH … Hg2 … H1f … H2f) -f -Hg2
-  /3 width=11 by gr_sor_next_push, gr_sor_push_next, gr_sor_next_bi, ex3_2_intro, gr_coafter_refl, gr_coafter_push/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_eq.ma
deleted file mode 100644 (file)
index 96bf535..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_sor.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** sor_eq_repl_back1 *)
-corec lemma gr_sor_eq_repl_back_sn:
-            ∀f2,f. gr_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 (gr_eq_inv_push_sn … Hx … H1) try cases (gr_eq_inv_next_sn … Hx … H1) -g1
-/3 width=7 by gr_sor_push_bi, gr_sor_next_push, gr_sor_push_next, gr_sor_next_bi/
-qed-.
-
-(*** sor_eq_repl_fwd1 *)
-lemma gr_sor_eq_repl_fwd_sn:
-      ∀f2,f. gr_eq_repl_fwd … (λf1. f1 ⋓ f2 ≘ f).
-#f2 #f @gr_eq_repl_sym /2 width=3 by gr_sor_eq_repl_back_sn/
-qed-.
-
-(*** sor_eq_repl_back2 *)
-corec lemma gr_sor_eq_repl_back_dx:
-            ∀f1,f. gr_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 (gr_eq_inv_push_sn … Hx … H2) try cases (gr_eq_inv_next_sn … Hx … H2) -g2
-/3 width=7 by gr_sor_push_bi, gr_sor_next_push, gr_sor_push_next, gr_sor_next_bi/
-qed-.
-
-(*** sor_eq_repl_fwd2 *)
-lemma gr_sor_eq_repl_fwd_dx:
-      ∀f1,f. gr_eq_repl_fwd … (λf2. f1 ⋓ f2 ≘ f).
-#f1 #f @gr_eq_repl_sym /2 width=3 by gr_sor_eq_repl_back_dx/
-qed-.
-
-(*** sor_eq_repl_back3 *)
-corec lemma gr_sor_eq_repl_back:
-            ∀f1,f2. gr_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 (gr_eq_inv_push_sn … Hx … H0) try cases (gr_eq_inv_next_sn … Hx … H0) -g
-/3 width=7 by gr_sor_push_bi, gr_sor_next_push, gr_sor_push_next, gr_sor_next_bi/
-qed-.
-
-(*** sor_eq_repl_fwd3 *)
-lemma gr_sor_eq_repl_fwd:
-      ∀f1,f2. gr_eq_repl_fwd … (λf. f1 ⋓ f2 ≘ f).
-#f1 #f2 @gr_eq_repl_sym /2 width=3 by gr_sor_eq_repl_back/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_fcla.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_fcla.ma
deleted file mode 100644 (file)
index 3540561..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/xoa/ex_3_1.ma".
-include "ground/xoa/ex_4_2.ma".
-include "ground/arith/nat_plus.ma".
-include "ground/arith/nat_le_max.ma".
-include "ground/relocation/gr_fcla_eq.ma".
-include "ground/relocation/gr_sor_isi.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Constructions with gr_fcla ***********************************************)
-
-(*** sor_fcla_ex *)
-lemma gr_sor_fcla_bi:
-      ∀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 gr_sor_isi_sn, ex4_2_intro/
-#f1 #n1 #Hf1 #IH #f2 #n2 * -f2 -n2 /3 width=6 by gr_fcla_push, gr_fcla_next, ex4_2_intro, gr_sor_isi_dx/
-#f2 #n2 #Hf2 elim (IH … Hf2) -IH -Hf2 -Hf1 [2,4: #f #n <nplus_succ_dx ] (* * full auto fails *)
-[ /3 width=7 by gr_fcla_next, gr_sor_push_next, nle_max_sn_succ_dx, nle_succ_bi, ex4_2_intro/
-| /4 width=7 by gr_fcla_next, gr_sor_next_bi, nle_succ_dx, nle_succ_bi, ex4_2_intro/
-| /3 width=7 by gr_fcla_push, gr_sor_push_bi, ex4_2_intro/
-| /3 width=7 by gr_fcla_next, gr_sor_next_push, nle_max_sn_succ_sn, nle_succ_bi, ex4_2_intro/
-]
-qed-.
-
-(* Destructions with gr_fcla ************************************************)
-
-(*** sor_fcla *)
-lemma gr_sor_inv_fcla_bi:
-      ∀f1,n1. 𝐂❪f1❫ ≘ n1 → ∀f2,n2. 𝐂❪f2❫ ≘ n2 → ∀f. f1 ⋓ f2 ≘ f →
-      ∃∃n. 𝐂❪f❫ ≘ n & (n1 ∨ n2) ≤ n & n ≤ n1 + n2.
-#f1 #n1 #Hf1 #f2 #n2 #Hf2 #f #Hf elim (gr_sor_fcla_bi … Hf1 … Hf2) -Hf1 -Hf2
-/4 width=6 by gr_sor_mono, gr_fcla_eq_repl_back, ex3_intro/
-qed-.
-
-(* Destructions with gr_fcla ************************************************)
-
-(*** sor_fwd_fcla_sn_ex *)
-lemma gr_sor_des_fcla_sn:
-      ∀f,n. 𝐂❪f❫ ≘ n → ∀f1,f2. f1 ⋓ f2 ≘ f →
-      ∃∃n1. 𝐂❪f1❫ ≘ n1 & n1 ≤ n.
-#f #n #H elim H -f -n
-[ /4 width=4 by gr_sor_des_isi_sn, gr_fcla_isi, ex2_intro/
-| #f #n #_ #IH #f1 #f2 #H
-  elim (gr_sor_inv_push … H) -H [ |*: // ] #g1 #g2 #Hf #H1 #H2 destruct
-  elim (IH … Hf) -f /3 width=3 by gr_fcla_push, ex2_intro/
-| #f #n #_ #IH #f1 #f2 #H
-  elim (gr_sor_inv_next … H) -H [1,3,4: * |*: // ] #g1 #g2 #Hf #H1 #H2 destruct
-  elim (IH … Hf) -f /3 width=3 by gr_fcla_push, gr_fcla_next, nle_succ_bi, nle_succ_dx, ex2_intro/
-]
-qed-.
-
-(*** sor_fwd_fcla_dx_ex *)
-lemma gr_sor_des_fcla_dx:
-      ∀f,n. 𝐂❪f❫ ≘ n → ∀f1,f2. f1 ⋓ f2 ≘ f →
-      ∃∃n2. 𝐂❪f2❫ ≘ n2 & n2 ≤ n.
-/3 width=4 by gr_sor_des_fcla_sn, gr_sor_comm/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_isf.ma
deleted file mode 100644 (file)
index f059bff..0000000
+++ /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/relocation/gr_isf_eq.ma".
-include "ground/relocation/gr_sor_fcla.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Constructions with gr_isf ************************************************)
-
-(*** sor_isfin_ex *)
-lemma gr_sor_isf_bi:
-      ∀f1,f2. 𝐅❪f1❫ → 𝐅❪f2❫ → ∃∃f. f1 ⋓ f2 ≘ f & 𝐅❪f❫.
-#f1 #f2 * #n1 #H1 * #n2 #H2 elim (gr_sor_fcla_bi … H1 … H2) -H1 -H2
-/3 width=4 by ex2_intro, ex_intro/
-qed-.
-
-(* Destructions with gr_isf *************************************************)
-
-(*** sor_fwd_isfin_sn *)
-lemma gr_sor_des_isf_sn:
-      ∀f. 𝐅❪f❫ → ∀f1,f2. f1 ⋓ f2 ≘ f → 𝐅❪f1❫.
-#f * #n #Hf #f1 #f2 #H
-elim (gr_sor_des_fcla_sn … Hf … H) -f -f2 /2 width=2 by ex_intro/
-qed-.
-
-(*** sor_fwd_isfin_dx *)
-lemma gr_sor_des_isf_dx:
-      ∀f. 𝐅❪f❫ → ∀f1,f2. f1 ⋓ f2 ≘ f → 𝐅❪f2❫.
-#f * #n #Hf #f1 #f2 #H
-elim (gr_sor_des_fcla_dx … Hf … H) -f -f1 /2 width=2 by ex_intro/
-qed-.
-
-(* Inversions with gr_isf ***************************************************)
-
-(*** sor_isfin *)
-lemma gr_sor_inv_isf_bi:
-      ∀f1,f2. 𝐅❪f1❫ → 𝐅❪f2❫ → ∀f. f1 ⋓ f2 ≘ f → 𝐅❪f❫.
-#f1 #f2 #Hf1 #Hf2 #f #Hf elim (gr_sor_isf_bi … Hf1 … Hf2) -Hf1 -Hf2
-/3 width=6 by gr_sor_mono, gr_isf_eq_repl_back/
-qed-.
-
-(*** sor_inv_isfin3 *)
-lemma gr_sor_inv_isf:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐅❪f❫ →
-      ∧∧ 𝐅❪f1❫ & 𝐅❪f2❫.
-/3 width=4 by gr_sor_des_isf_dx, gr_sor_des_isf_sn, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_isi.ma
deleted file mode 100644 (file)
index 69a568a..0000000
+++ /dev/null
@@ -1,83 +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/relocation/gr_isi_eq.ma".
-include "ground/relocation/gr_sor_eq.ma".
-include "ground/relocation/gr_sor_sor.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Constructions with gr_isi ************************************************)
-
-(*** sor_isid_sn *)
-corec lemma gr_sor_isi_sn:
-            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⋓ f2 ≘ f2.
-#f1 * -f1
-#f1 #g1 #Hf1 #H1 #f2 cases (gr_map_split_tl f2)
-/3 width=7 by gr_sor_push_bi, gr_sor_push_next/
-qed.
-
-(*** sor_isid_dx *)
-corec lemma gr_sor_isi_dx:
-            ∀f2. 𝐈❪f2❫ → ∀f1. f1 ⋓ f2 ≘ f1.
-#f2 * -f2
-#f2 #g2 #Hf2 #H2 #f1 cases (gr_map_split_tl f1)
-/3 width=7 by gr_sor_push_bi, gr_sor_next_push/
-qed.
-
-(*** sor_isid *)
-lemma gr_sor_isi_bi_isi:
-      ∀f1,f2,f. 𝐈❪f1❫ → 𝐈❪f2❫ → 𝐈❪f❫ → f1 ⋓ f2 ≘ f.
-/4 width=3 by gr_sor_eq_repl_back_dx, gr_sor_eq_repl_back_sn, gr_isi_inv_eq_repl/ qed.
-
-
-(* Destructions with gr_isi *************************************************)
-
-(*** sor_fwd_isid1 *)
-corec lemma gr_sor_des_isi_sn:
-            ∀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 gr_isi_inv_push, gr_isi_push/ ]
-cases (gr_isi_inv_next … Hg … H)
-qed-.
-
-(*** sor_fwd_isid2 *)
-corec lemma gr_sor_des_isi_dx:
-            ∀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 gr_isi_inv_push, gr_isi_push/ ]
-cases (gr_isi_inv_next … Hg … H)
-qed-.
-
-(* Inversions with gr_isi ***************************************************)
-
-(*** sor_isid_inv_sn *)
-lemma gr_sor_inv_isi_sn:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f.
-/3 width=4 by gr_sor_isi_sn, gr_sor_mono/
-qed-.
-
-(*** sor_isid_inv_dx *)
-lemma gr_sor_inv_isi_dx:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f2❫ → f1 ≡ f.
-/3 width=4 by gr_sor_isi_dx, gr_sor_mono/
-qed-.
-
-(*** sor_inv_isid3 *)
-lemma gr_sor_inv_isi:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ →
-      ∧∧ 𝐈❪f1❫ & 𝐈❪f2❫.
-/3 width=4 by gr_sor_des_isi_dx, gr_sor_des_isi_sn, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sle.ma
deleted file mode 100644 (file)
index d036f6a..0000000
+++ /dev/null
@@ -1,66 +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/relocation/gr_sle_sle.ma".
-include "ground/relocation/gr_sor.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Inversions with gr_sle ***************************************************)
-
-(*** sor_inv_sle_sn *)
-corec lemma gr_sor_inv_sle_sn:
-            ∀f1,f2,f. f1 ⋓ f2 ≘ f → f1 ⊆ f.
-#f1 #f2 #f * -f1 -f2 -f
-#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0
-/3 width=5 by gr_sle_push, gr_sle_next, gr_sle_weak/
-qed-.
-
-(*** sor_inv_sle_dx *)
-corec lemma gr_sor_inv_sle_dx:
-            ∀f1,f2,f. f1 ⋓ f2 ≘ f → f2 ⊆ f.
-#f1 #f2 #f * -f1 -f2 -f
-#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0
-/3 width=5 by gr_sle_push, gr_sle_next, gr_sle_weak/
-qed-.
-
-(*** sor_inv_sle_sn_trans *)
-lemma gr_sor_inv_sle_sn_trans:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g. g ⊆ f1 → g ⊆ f.
-/3 width=4 by gr_sor_inv_sle_sn, gr_sle_trans/ qed-.
-
-(*** sor_inv_sle_dx_trans *)
-lemma gr_sor_inv_sle_dx_trans:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g. g ⊆ f2 → g ⊆ f.
-/3 width=4 by gr_sor_inv_sle_dx, gr_sle_trans/ qed-.
-
-(*** sor_inv_sle *)
-axiom gr_sor_inv_sle_bi:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g. f1 ⊆ g → f2 ⊆ g → f ⊆ g.
-
-(* Constructions with gr_sle ************************************************)
-
-(*** sor_sle_dx *)
-corec lemma gr_sor_sle_dx:
-            ∀f1,f2. f1 ⊆ f2 → f1 ⋓ f2 ≘ f2.
-#f1 #f2 * -f1 -f2
-/3 width=7 by gr_sor_push_bi, gr_sor_next_bi, gr_sor_push_next/
-qed.
-
-(*** sor_sle_sn *)
-corec lemma gr_sor_sle_sn:
-            ∀f1,f2. f1 ⊆ f2 → f2 ⋓ f1 ≘ f2.
-#f1 #f2 * -f1 -f2
-/3 width=7 by gr_sor_push_bi, gr_sor_next_bi, gr_sor_next_push/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sor.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sor.ma
deleted file mode 100644 (file)
index c4e0376..0000000
+++ /dev/null
@@ -1,129 +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/relocation/gr_eq.ma".
-include "ground/relocation/gr_sor.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Main inversions **********************************************************)
-
-(*** sor_mono *)
-corec theorem gr_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 (gr_sor_inv_push_bi … H … H1 H2)
-| cases (gr_sor_inv_next_push … H … H1 H2)
-| cases (gr_sor_inv_push_next … H … H1 H2)
-| cases (gr_sor_inv_next_bi … H … H1 H2)
-] -g1 -g2
-/3 width=5 by gr_eq_push, gr_eq_next/
-qed-.
-
-(* Main constructions *******************************************************)
-
-(*** sor_assoc_dx *)
-axiom gr_sor_assoc_dx:
-      ∀f0,f3,f4. f0 ⋓ f3 ≘ f4 →
-      ∀f1,f2. f1 ⋓ f2 ≘ f0 →
-      ∀f. f2 ⋓ f3 ≘ f → f1 ⋓ f ≘ f4.
-
-(*** sor_assoc_sn *)
-axiom gr_sor_assoc_sn:
-      ∀f1,f0,f4. f1 ⋓ f0 ≘ f4 →
-      ∀f2, f3. f2 ⋓ f3 ≘ f0 →
-      ∀f. f1 ⋓ f2 ≘ f → f ⋓ f3 ≘ f4.
-
-(*** sor_comm_23 *)
-lemma gr_sor_comm_23:
-      ∀f0,f1,f2,f3,f4,f.
-      f0⋓f4 ≘ f1 → f1⋓f2 ≘ f → f0⋓f2 ≘ f3 → f3⋓f4 ≘ f.
-/4 width=6 by gr_sor_comm, gr_sor_assoc_dx/ qed-.
-
-(*** sor_comm_23_idem *)
-corec theorem gr_sor_comm_23_idem:
-              ∀f0,f1,f2. f0 ⋓ f1 ≘ f2 →
-              ∀f. f1 ⋓ f2 ≘ f → f1 ⋓ f0 ≘ f.
-#f0 #f1 #f2 * -f0 -f1 -f2
-#f0 #f1 #f2 #g0 #g1 #g2 #Hf2 #H0 #H1 #H2 #g #Hg
-[ cases (gr_sor_inv_push_bi … Hg … H1 H2)
-| cases (gr_sor_inv_push_next … Hg … H1 H2)
-| cases (gr_sor_inv_next_bi … Hg … H1 H2)
-| cases (gr_sor_inv_next_bi … Hg … H1 H2)
-] -g2 #f #Hf #H
-/3 width=7 by gr_sor_next_bi, gr_sor_next_push, gr_sor_push_next, gr_sor_push_bi/
-qed-.
-
-(*** sor_coll_dx *)
-corec theorem gr_sor_coll_dx:
-              ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g1,g2,g. g1 ⋓ g2 ≘ g →
-              ∀g0. g1 ⋓ g0 ≘ f1 → g2 ⋓ g0 ≘ f2 → g ⋓ g0 ≘ f.
-#f1 #f2 #f cases (gr_map_split_tl f) #H1 #Hf #g1 #g2 #g #Hg #g0 #Hf1 #Hf2
-[ cases (gr_sor_inv_push … Hf … H1) -Hf #x1 #x2 #Hf #Hx1 #Hx2
-  cases (gr_sor_inv_push … Hf1 … Hx1) -f1 #y1 #y0 #Hf1 #Hy1 #Hy0
-  cases (gr_sor_inv_push_dx_push … Hf2 … Hy0 … Hx2) -f2 #y2 #Hf2 #Hy2
-  cases (gr_sor_inv_push_bi … Hg … Hy1 Hy2) -g1 -g2 #y #Hg #Hy
-  @(gr_sor_push_bi … Hy Hy0 H1) -g -g0 /2 width=8 by/
-| cases (gr_map_split_tl g) #H2
-  [ cases (gr_sor_inv_push … Hg … H2) -Hg #y1 #y2 #Hg #Hy1 #Hy2
-    cases (gr_sor_next_tl … Hf … H1) * #x1 #x2 #_ #Hx1 #Hx2
-    [ cases (gr_sor_inv_push_sn_next … Hf1 … Hy1 Hx1) -g1 #y0 #Hf1 #Hy0
-      cases (gr_sor_inv_push_next … Hf2 … Hy2 Hy0) -g2 -x2 #x2 #Hf2 #Hx2
-    | cases (gr_sor_inv_push_sn_next … Hf2 … Hy2 Hx2) -g2 #y0 #Hf2 #Hy0
-      cases (gr_sor_inv_push_next … Hf1 … Hy1 Hy0) -g1 -x1 #x1 #Hf1 #Hx1
-    ]
-    lapply (gr_sor_inv_next_bi_next … Hf … Hx1 Hx2 H1) -f1 -f2 #Hf
-    @(gr_sor_push_next … H2 Hy0 H1) -g0 /2 width=8 by/
-  | lapply (gr_sor_tl … Hf) -Hf #Hf
-    lapply (gr_sor_tl … Hg) -Hg #Hg
-    lapply (gr_sor_tl … Hf1) -Hf1 #Hf1
-    lapply (gr_sor_tl … Hf2) -Hf2 #Hf2
-    cases (gr_map_split_tl g0) #H0
-    [ @(gr_sor_next_push … H2 H0 H1) /2 width=8 by/
-    | @(gr_sor_next_bi … H2 H0 H1) /2 width=8 by/
-    ]
-  ]
-]
-qed-.
-
-(*** sor_distr_dx *)
-corec theorem gr_sor_distr_dx:
-              ∀g0,g1,g2,g. g1 ⋓ g2 ≘ g →
-              ∀f1,f2,f. g1 ⋓ g0 ≘ f1 → g2 ⋓ g0 ≘ f2 → g ⋓ g0 ≘ f →
-              f1 ⋓ f2 ≘ f.
-#g0 cases (gr_map_split_tl g0) #H0 #g1 #g2 #g
-[ * -g1 -g2 -g #y1 #y2 #y #g1 #g2 #g #Hy #Hy1 #Hy2 #Hy #f1 #f2 #f #Hf1 #Hf2 #Hf
-  [ cases (gr_sor_inv_push_bi … Hf1 … Hy1 H0) -g1
-    cases (gr_sor_inv_push_bi … Hf2 … Hy2 H0) -g2
-    cases (gr_sor_inv_push_bi … Hf … Hy H0) -g
-  | cases (gr_sor_inv_next_push … Hf1 … Hy1 H0) -g1
-    cases (gr_sor_inv_push_bi … Hf2 … Hy2 H0) -g2
-    cases (gr_sor_inv_next_push … Hf … Hy H0) -g
-  | cases (gr_sor_inv_push_bi … Hf1 … Hy1 H0) -g1
-    cases (gr_sor_inv_next_push … Hf2 … Hy2 H0) -g2
-    cases (gr_sor_inv_next_push … Hf … Hy H0) -g
-  | cases (gr_sor_inv_next_push … Hf1 … Hy1 H0) -g1
-    cases (gr_sor_inv_next_push … Hf2 … Hy2 H0) -g2
-    cases (gr_sor_inv_next_push … Hf … Hy H0) -g
-  ] #y #Hy #H #y2 #Hy2 #H2 #y1 #Hy1 #H1
-  /3 width=8 by gr_sor_next_bi, gr_sor_next_push, gr_sor_push_next, gr_sor_push_bi/
-| #H #f1 #f2 #f #Hf1 #Hf2 #Hf
-  cases (gr_sor_next_dx_tl … Hf1 … H0) -Hf1
-  cases (gr_sor_next_dx_tl … Hf2 … H0) -Hf2
-  cases (gr_sor_next_dx_tl … Hf … H0) -Hf
-  #y #x #Hx #Hy #H #y2 #x2 #Hx2 #Hy2 #H2 #y1 #x1 #Hx1 #Hy1 #H1
-  /4 width=8 by gr_sor_tl, gr_sor_next_bi/
-]
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sor_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_sor_sle.ma
deleted file mode 100644 (file)
index 9dc8cb1..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_sle.ma".
-include "ground/relocation/gr_sor.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Main inversions with gr_sle **********************************************)
-
-(*** monotonic_sle_sor *)
-axiom gr_sor_monotonic_sle:
-      ∀f1,g1. f1 ⊆ g1 → ∀f2,g2. f2 ⊆ g2 →
-      ∀f. f1 ⋓ f2 ≘ f → ∀g. g1 ⋓ g2 ≘ g → f ⊆ g.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_sor_tls.ma
deleted file mode 100644 (file)
index 33a55aa..0000000
+++ /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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tls.ma".
-include "ground/relocation/gr_sor.ma".
-
-(* RELATIONAL UNION FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Constructions with gr_tls ************************************************)
-
-(*** sor_tls *)
-lemma gr_sor_tls:
-      ∀f1,f2,f. f1 ⋓ f2 ≘ f →
-      ∀n. ⫰*[n]f1 ⋓ ⫰*[n]f2 ≘ ⫰*[n]f.
-#f1 #f2 #f #Hf #n @(nat_ind_succ … n) -n
-/2 width=1 by gr_sor_tl/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tl.ma
deleted file mode 100644 (file)
index 2d395b6..0000000
+++ /dev/null
@@ -1,43 +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/notation/functions/downspoon_1.ma".
-include "ground/lib/stream_hdtl.ma".
-include "ground/relocation/gr_map.ma".
-
-(* TAIL FOR GENERIC RELOCATION MAPS *****************************************)
-
-(*** tl *)
-definition gr_tl (f): gr_map ≝ ⇂f.
-
-interpretation
-  "tail (generic relocation maps)"
-  'DownSpoon f = (gr_tl f).
-
-(* Basic constructions ******************************************************)
-
-(*** tl_push_rew *)
-lemma gr_tl_push (f): f = ⫰⫯f.
-// qed.
-
-(*** tl_next_rew *)
-lemma gr_tl_next (f): f = ⫰↑f.
-// qed.
-
-(* Basic eliminations *******************************************************)
-
-(*** pn_split gr_map_split *)
-lemma gr_map_split_tl (f): ∨∨ ⫯⫰f = f | ↑⫰f = f.
-* * /2 width=1 by or_introl, or_intror/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tl_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tl_eq.ma
deleted file mode 100644 (file)
index e5f9897..0000000
+++ /dev/null
@@ -1,121 +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/relocation/gr_eq.ma".
-include "ground/relocation/gr_tl.ma".
-
-(* TAIL FOR GENERIC RELOCATION MAPS *****************************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** eq_refl *)
-corec lemma gr_eq_refl: reflexive … gr_eq.
-#f cases (gr_map_split_tl f) #Hf
-[ @(gr_eq_push … Hf Hf) | @(gr_eq_next … Hf Hf) ] -Hf //
-qed.
-
-(*** tl_eq_repl *)
-lemma gr_tl_eq_repl:
-      gr_eq_repl … (λf1,f2. ⫰f1 ≡ ⫰f2).
-#f1 #f2 * -f1 -f2 //
-qed.
-
-(* Inversions with gr_eq ****************************************************)
-
-(*** eq_inv_gen *)
-lemma gr_eq_inv_gen (g1) (g2):
-      g1 ≡ g2 →
-      ∨∨ ∧∧ ⫰g1 ≡ ⫰g2 & ⫯⫰g1 = g1 & ⫯⫰g2 = g2
-       | ∧∧ ⫰g1 ≡ ⫰g2 & ↑⫰g1 = g1 & ↑⫰g2 = g2.
-#g1 #g2 * -g1 -g2 #f1 #f2 #g1 #g2 #f * *
-/3 width=1 by and3_intro, or_introl, or_intror/
-qed-.
-
-(* Advanced inversions with gr_eq *******************************************)
-
-(*** gr_eq_inv_px *)
-lemma gr_eq_inv_push_sn (g1) (g2):
-      g1 ≡ g2 → ∀f1. ⫯f1 = g1 →
-      ∧∧ f1 ≡ ⫰g2 & ⫯⫰g2 = g2.
-#g1 #g2 #H #f1 #Hf1
-elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
-[ /2 width=1 by conj/
-| elim (eq_inv_gr_next_push … Hg1)
-]
-qed-.
-
-(*** gr_eq_inv_nx *)
-lemma gr_eq_inv_next_sn (g1) (g2):
-      g1 ≡ g2 → ∀f1. ↑f1 = g1 →
-      ∧∧ f1 ≡ ⫰g2 & ↑⫰g2 = g2.
-#g1 #g2 #H #f1 #Hf1
-elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
-[ elim (eq_inv_gr_push_next … Hg1)
-| /2 width=1 by conj/
-]
-qed-.
-
-(*** gr_eq_inv_xp *)
-lemma gr_eq_inv_push_dx (g1) (g2):
-      g1 ≡ g2 → ∀f2. ⫯f2 = g2 →
-      ∧∧ ⫰g1 ≡ f2 & ⫯⫰g1 = g1.
-#g1 #g2 #H #f2 #Hf2
-elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
-[ /2 width=1 by conj/
-| elim (eq_inv_gr_next_push … Hg2)
-]
-qed-.
-
-(*** gr_eq_inv_xn *)
-lemma gr_eq_inv_next_dx (g1) (g2):
-      g1 ≡ g2 → ∀f2. ↑f2 = g2 →
-      ∧∧ ⫰g1 ≡ f2 & ↑⫰g1 = g1.
-#g1 #g2 #H #f2 #Hf2
-elim (gr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
-[ elim (eq_inv_gr_push_next … Hg2)
-| /2 width=1 by conj/
-]
-qed-.
-
-(*** gr_eq_inv_pp *)
-lemma gr_eq_inv_push_bi (g1) (g2):
-      g1 ≡ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ≡ f2.
-#g1 #g2 #H #f1 #f2 #H1
-elim (gr_eq_inv_push_sn … H … H1) -g1 #Hx2 * #H
-lapply (eq_inv_gr_push_bi … H) -H //
-qed-.
-
-(*** gr_eq_inv_nn *)
-lemma gr_eq_inv_next_bi (g1) (g2):
-      g1 ≡ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → f1 ≡ f2.
-#g1 #g2 #H #f1 #f2 #H1
-elim (gr_eq_inv_next_sn … H … H1) -g1 #Hx2 * #H
-lapply (eq_inv_gr_next_bi … H) -H //
-qed-.
-
-(*** gr_eq_inv_pn *)
-lemma gr_eq_inv_push_next (g1) (g2):
-      g1 ≡ g2 → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → ⊥.
-#g1 #g2 #H #f1 #f2 #H1
-elim (gr_eq_inv_push_sn … H … H1) -g1 #Hx2 * #H
-elim (eq_inv_gr_next_push … H)
-qed-.
-
-(*** gr_eq_inv_np *)
-lemma gr_eq_inv_next_push (g1) (g2):
-      g1 ≡ g2 → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → ⊥.
-#g1 #g2 #H #f1 #f2 #H1
-elim (gr_eq_inv_next_sn … H … H1) -g1 #Hx2 * #H
-elim (eq_inv_gr_push_next … H)
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tl_eq_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tl_eq_eq.ma
deleted file mode 100644 (file)
index 3322574..0000000
+++ /dev/null
@@ -1,37 +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/relocation/gr_tl_eq.ma".
-
-(* TAIL FOR GENERIC RELOCATION MAPS *****************************************)
-
-(* Main constructions with gr_eq ********************************************)
-
-(*** eq_trans *)
-corec theorem gr_eq_trans: Transitive … gr_eq.
-#f1 #f * -f1 -f
-#f1 #f #g1 #g #Hf1 #H1 #H #f2 #Hf2
-[ cases (gr_eq_inv_push_sn … Hf2 … H)
-| cases (gr_eq_inv_next_sn … Hf2 … H)
-] -g
-/3 width=5 by gr_eq_push, gr_eq_next/
-qed-.
-
-(*** eq_canc_sn *)
-theorem gr_eq_canc_sn (f2): gr_eq_repl_back (λf. f ≡ f2).
-/3 width=3 by gr_eq_trans, gr_eq_sym/ qed-.
-
-(*** eq_canc_dx *)
-theorem gr_eq_canc_dx (f1): gr_eq_repl_fwd (λf. f1 ≡ f).
-/3 width=5 by gr_eq_canc_sn, gr_eq_repl_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls.ma
deleted file mode 100644 (file)
index 6b52f79..0000000
+++ /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/notation/functions/downspoonstar_2.ma".
-include "ground/lib/stream_tls.ma".
-include "ground/relocation/gr_tl.ma".
-
-(* ITERATED TAIL FOR GENERIC RELOCATION MAPS ********************************)
-
-(*** tls *)
-definition gr_tls (n) (f:gr_map) ≝ ⇂*[n]f.
-
-interpretation
-  "iterated tail (generic relocation maps)"
-  'DownSpoonStar n f = (gr_tls n f).
-
-(* Basic constructions (specific) *******************************************)
-
-(*** tls_O *)
-lemma gr_tls_zero (f): f = ⫰*[𝟎] f.
-// qed.
-
-(*** tls_swap *)
-lemma gr_tls_tl (n) (f): ⫰⫰*[n] f = ⫰*[n] ⫰f.
-/2 width=1 by stream_tls_tl/ qed.
-
-(*** tls_S *)
-lemma gr_tls_succ (n) (f): ⫰⫰*[n] f = ⫰*[↑n] f.
-/2 width=1 by stream_tls_succ/ qed.
-
-(*** tls_xn *)
-lemma gr_tls_swap (n) (f): ⫰*[n] ⫰f = ⫰*[↑n] f.
-// qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_eq.ma
deleted file mode 100644 (file)
index 0cc6316..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_tls.ma".
-
-(* ITERATED TAIL FOR GENERIC RELOCATION MAPS ********************************)
-
-(* Constructions with gr_eq *************************************************)
-
-(*** tls_eq_repl *)
-lemma gr_tls_eq_repl (n):
-      gr_eq_repl (λf1,f2. ⫰*[n] f1 ≡ ⫰*[n] f2).
-#n @(nat_ind_succ … n) -n /3 width=1 by gr_tl_eq_repl/
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_nexts_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_nexts_eq.ma
deleted file mode 100644 (file)
index a0d4e39..0000000
+++ /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/relocation/gr_nexts.ma".
-include "ground/relocation/gr_tls_eq.ma".
-
-(* ITERATED TAIL FOR GENERIC RELOCATION MAPS ********************************)
-
-(* Inversions with gr_nexts and gr_eq ***************************************)
-
-(*** eq_inv_nexts_sn *)
-lemma gr_eq_inv_nexts_sn (n):
-      ∀f1,g2. ↑*[n] f1 ≡ g2 →
-      ∧∧ f1 ≡ ⫰*[n]g2 & ↑*[n]⫰*[n]g2 = g2.
-#n @(nat_ind_succ … n) -n /2 width=1 by conj/
-#n #IH #f1 #g2 #H
-elim (gr_eq_inv_next_sn … H) -H [|*: // ] #Hf10 *
-elim (IH … Hf10) -IH -Hf10 #Hf12 #H2
-<gr_tls_succ /2 width=1 by conj/
-qed-.
-
-(*** eq_inv_nexts_dx *)
-lemma gr_eq_inv_nexts_dx (n):
-      ∀f2,g1. g1 ≡ ↑*[n] f2 →
-      ∧∧ ⫰*[n]g1 ≡ f2 & ↑*[n]⫰*[n]g1 = g1.
-#n @(nat_ind_succ … n) -n /2 width=1 by conj/
-#n #IH #f2 #g1 #H
-elim (gr_eq_inv_next_dx … H) -H [|*: // ] #Hf02 *
-elim (IH … Hf02) -IH -Hf02 #Hf12 #H2
-<gr_tls_succ /2 width=1 by conj/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_pushs.ma
deleted file mode 100644 (file)
index 1bc1578..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/relocation/gr_pushs.ma".
-include "ground/relocation/gr_tls.ma".
-
-(* ITERATED TAIL FOR GENERIC RELOCATION MAPS ********************************)
-
-(* Constructions with gr_pushs **********************************************)
-
-(*** tls_pushs *)
-lemma gr_tls_pushs (n) (f): f = ⫰*[n] ⫯*[n] f.
-#n @(nat_ind_succ … n) -n //
-#n #IH #f <gr_tls_swap <gr_pushs_succ <gr_tl_push //
-qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_pushs_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_tls_pushs_eq.ma
deleted file mode 100644 (file)
index 2193d8d..0000000
+++ /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/relocation/gr_tls_eq.ma".
-include "ground/relocation/gr_pushs.ma".
-
-(* ITERATED TAIL FOR GENERIC RELOCATION MAPS ********************************)
-
-(* Inversions with gr_pushs and gr_eq ***************************************)
-
-(*** eq_inv_pushs_sn *)
-lemma gr_eq_inv_pushs_sn (n):
-      ∀f1,g2. ⫯*[n] f1 ≡ g2 →
-      ∧∧ f1 ≡ ⫰*[n]g2 & ⫯*[n]⫰*[n]g2 = g2.
-#n @(nat_ind_succ … n) -n /2 width=1 by conj/
-#n #IH #f1 #g2 #H
-elim (gr_eq_inv_push_sn … H) -H [|*: // ] #Hf10 *
-elim (IH … Hf10) -IH -Hf10 #Hf12 #H1
-/2 width=1 by conj/
-qed-.
-
-(*** eq_inv_pushs_dx *)
-lemma gr_eq_inv_pushs_dx (n):
-      ∀f2,g1. g1 ≡ ⫯*[n] f2 →
-      ∧∧ ⫰*[n]g1 ≡ f2 & ⫯*[n]⫰*[n]g1 = g1.
-#n @(nat_ind_succ … n) -n /2 width=1 by conj/
-#n #IH #f2 #g1 #H
-elim (gr_eq_inv_push_dx … H) -H [|*: // ] #Hf02 *
-elim (IH … Hf02) -IH -Hf02 #Hf12 #H2
-/2 width=1 by conj/
-qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_uni.ma
deleted file mode 100644 (file)
index 12a1273..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-(**************************************************************************)
-(*       ___                                                              *)
-(*      ||M||                                                             *)
-(*      ||A||       A project by Andrea Asperti                           *)
-(*      ||T||                                                             *)
-(*      ||I||       Developers:                                           *)
-(*      ||T||         The HELM team.                                      *)
-(*      ||A||         http://helm.cs.unibo.it                             *)
-(*      \   /                                                             *)
-(*       \ /        This file is distributed under the terms of the       *)
-(*        v         GNU General Public License Version 2                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-include "ground/notation/functions/element_u_1.ma".
-include "ground/relocation/gr_nexts.ma".
-include "ground/relocation/gr_id.ma".
-
-(* UNIFORM ELEMENTS FOR GENERIC RELOCATION MAPS *****************************)
-
-(*** uni *)
-definition gr_uni (n) ≝ ↑*[n] 𝐢.
-
-interpretation
-  "uniform elements (generic relocation maps)"
-  'ElementU n = (gr_uni n).
-
-(* Basic constructions ******************************************************)
-
-(*** uni_zero *)
-lemma gr_uni_zero: 𝐢 = 𝐮❨𝟎❩.
-// qed.
-
-(*** uni_succ *)
-lemma gr_uni_succ (n): ↑𝐮❨n❩ = 𝐮❨↑n❩.
-/2 width=1 by gr_nexts_succ/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/gr_uni_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/gr_uni_eq.ma
deleted file mode 100644 (file)
index f579558..0000000
+++ /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/arith/nat_pred_succ.ma".
-include "ground/relocation/gr_tl_eq.ma".
-include "ground/relocation/gr_uni.ma".
-
-(* UNIFORM ELEMENTS FOR GENERIC RELOCATION MAPS *****************************)
-
-(* Inversions with gr_eq ****************************************************)
-
-(*** uni_inv_push_dx *)
-lemma gr_eq_inv_uni_push (n) (g):  𝐮❨n❩ ≡ ⫯g → ∧∧ 𝟎 = n & 𝐢 ≡ g.
-#n @(nat_ind_succ … n) -n 
-[ /3 width=5 by gr_eq_inv_push_bi, conj/
-| #n #_ #f <gr_uni_succ #H elim (gr_eq_inv_next_push … H) -H //
-]
-qed-.
-
-(*** uni_inv_push_sn *)
-lemma gr_eq_inv_push_uni (n) (g): ⫯g ≡ 𝐮❨n❩ → ∧∧ 𝟎 = n & 𝐢 ≡ g.
-/3 width=1 by gr_eq_inv_uni_push, gr_eq_sym/ qed-.
-
-(*** uni_inv_next_dx *)
-lemma gr_eq_inv_uni_next (n) (g): 𝐮❨n❩ ≡ ↑g → ∧∧ 𝐮❨↓n❩ ≡ g & ↑↓n = n.
-#n @(nat_ind_succ … n) -n
-[ #g <gr_uni_zero <gr_id_unfold #H elim (gr_eq_inv_push_next … H) -H //
-| #n #_ #g <gr_uni_succ /3 width=5 by gr_eq_inv_next_bi, conj/
-]
-qed-.
-
-(*** uni_inv_next_sn *)
-lemma gr_eq_inv_next_uni (n) (g): ↑g ≡ 𝐮❨n❩ → ∧∧ 𝐮❨↓n❩ ≡ g & ↑↓n = n.
-/3 width=1 by gr_eq_inv_uni_next, gr_eq_sym/ qed-.
-
-(* Inversions with gr_id and gr_eq ******************************************)
-
-(*** uni_inv_id_dx *)
-lemma gr_eq_inv_uni_id (n): 𝐮❨n❩ ≡ 𝐢 → 𝟎 = n.
-#n <gr_id_unfold #H elim (gr_eq_inv_uni_push … H) -H //
-qed-.
-
-(*** uni_inv_id_sn *)
-lemma gr_eq_inv_id_uni (n):  𝐢 ≡ 𝐮❨n❩ → 𝟎 = n.
-/3 width=1 by gr_eq_inv_uni_id, gr_eq_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after.ma
new file mode 100644 (file)
index 0000000..554d254
--- /dev/null
@@ -0,0 +1,197 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/relations/rafter_3.ma".
+include "ground/xoa/ex_3_2.ma". 
+include "ground/relocation/pr_tl.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(*** after *)
+coinductive pr_after: relation3 pr_map pr_map pr_map ≝
+(*** after_refl *)
+| pr_after_refl (f1) (f2) (f) (g1) (g2) (g):
+  pr_after f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → pr_after g1 g2 g
+(*** after_push *)
+| pr_after_push (f1) (f2) (f) (g1) (g2) (g):
+  pr_after f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → pr_after g1 g2 g
+(*** after_next *)
+| pr_after_next (f1) (f2) (f) (g1) (g):
+  pr_after f1 f2 f → ↑f1 = g1 → ↑f = g → pr_after g1 f2 g
+.
+
+interpretation
+  "relational composition (partial relocation maps)"
+  'RAfter f1 f2 f = (pr_after f1 f2 f).
+
+(* Basic inversions *********************************************************)
+
+(*** after_inv_ppx *)
+lemma pr_after_inv_push_bi:
+      ∀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
+  >(eq_inv_pr_push_bi … Hx1) >(eq_inv_pr_push_bi … Hx2) -x2 -x1
+  /2 width=3 by ex2_intro/
+| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct
+  elim (eq_inv_pr_push_next … Hx2)
+| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
+  elim (eq_inv_pr_push_next … Hx1)
+]
+qed-.
+
+(*** after_inv_pnx *)
+lemma pr_after_inv_push_next:
+      ∀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 (eq_inv_pr_next_push … Hx2)
+| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct
+  >(eq_inv_pr_push_bi … Hx1) >(eq_inv_pr_next_bi … Hx2) -x2 -x1
+  /2 width=3 by ex2_intro/
+| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
+  elim (eq_inv_pr_push_next … Hx1)
+]
+qed-.
+
+(*** after_inv_nxx *)
+lemma pr_after_inv_next_sn:
+      ∀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 (eq_inv_pr_next_push … Hx1)
+| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct
+  elim (eq_inv_pr_next_push … Hx1)
+| #g #Hf #H1 #H #x1 #Hx1 destruct
+  >(eq_inv_pr_next_bi … Hx1) -x1
+  /2 width=3 by ex2_intro/
+]
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** after_inv_ppp *)
+lemma pr_after_inv_push_bi_push:
+      ∀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 (pr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
+#x #Hf #Hx destruct <(eq_inv_pr_push_bi … Hx) -f //
+qed-.
+
+(*** after_inv_ppn *)
+lemma pr_after_inv_push_bi_next:
+      ∀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 (pr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
+#x #Hf #Hx destruct elim (eq_inv_pr_push_next … Hx)
+qed-.
+
+(*** after_inv_pnn *)
+lemma pr_after_inv_push_next_next:
+      ∀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 (pr_after_inv_push_next … Hg … H1 H2) -g1 -g2
+#x #Hf #Hx destruct <(eq_inv_pr_next_bi … Hx) -f //
+qed-.
+
+(*** after_inv_pnp *)
+lemma pr_after_inv_push_next_push:
+      ∀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 (pr_after_inv_push_next … Hg … H1 H2) -g1 -g2
+#x #Hf #Hx destruct elim (eq_inv_pr_next_push … Hx)
+qed-.
+
+(*** after_inv_nxn *)
+lemma pr_after_inv_next_sn_next:
+      ∀g1,f2,g. g1 ⊚ f2 ≘ g →
+      ∀f1,f. ↑f1 = g1 → ↑f = g → f1 ⊚ f2 ≘ f.
+#g1 #f2 #g #Hg #f1 #f #H1 #H elim (pr_after_inv_next_sn … Hg … H1) -g1
+#x #Hf #Hx destruct <(eq_inv_pr_next_bi … Hx) -f //
+qed-.
+
+(*** after_inv_nxp *)
+lemma pr_after_inv_next_sn_push:
+      ∀g1,f2,g. g1 ⊚ f2 ≘ g →
+      ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥.
+#g1 #f2 #g #Hg #f1 #f #H1 #H elim (pr_after_inv_next_sn … Hg … H1) -g1
+#x #Hf #Hx destruct elim (eq_inv_pr_next_push … Hx)
+qed-.
+
+(*** after_inv_pxp *)
+lemma pr_after_inv_push_sn_push:
+      ∀g1,g2,g. g1 ⊚ g2 ≘ g →
+      ∀f1,f. ⫯f1 = g1 → ⫯f = g →
+      ∃∃f2. f1 ⊚ f2 ≘ f & ⫯f2 = g2.
+#g1 #g2 elim (pr_map_split_tl g2)
+#Hg2 #g #Hg #f1 #f #H1 #H
+[ lapply (pr_after_inv_push_bi_push … Hg … H1 … H) -g1 -g
+  /2 width=3 by ex2_intro/
+| elim (pr_after_inv_push_next_push … Hg … H1 … H) -g1 -g -f1 -f //
+]
+qed-.
+
+(*** after_inv_pxn *)
+lemma pr_after_inv_push_sn_next:
+      ∀g1,g2,g. g1 ⊚ g2 ≘ g →
+      ∀f1,f. ⫯f1 = g1 → ↑f = g →
+      ∃∃f2. f1 ⊚ f2 ≘ f & ↑f2 = g2.
+#g1 #g2 elim (pr_map_split_tl g2)
+#Hg2 #g #Hg #f1 #f #H1 #H
+[ elim (pr_after_inv_push_bi_next … Hg … H1 … H) -g1 -g -f1 -f //
+| lapply (pr_after_inv_push_next_next … Hg … H1 … H) -g1 -g
+  /2 width=3 by ex2_intro/
+]
+qed-.
+
+(*** after_inv_xxp *)
+lemma pr_after_inv_push:
+      ∀g1,g2,g. g1 ⊚ g2 ≘ g → ∀f. ⫯f = g →
+      ∃∃f1,f2. f1 ⊚ f2 ≘ f & ⫯f1 = g1 & ⫯f2 = g2.
+#g1 elim (pr_map_split_tl g1)
+#Hg1 #g2 #g #Hg #f #H
+[ elim (pr_after_inv_push_sn_push … Hg … H) -g /2 width=5 by ex3_2_intro/
+| elim (pr_after_inv_next_sn_push … Hg … H) -g2 -g -f //
+]
+qed-.
+
+(*** after_inv_xxn *)
+lemma pr_after_inv_next:
+      ∀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 elim (pr_map_split_tl g1)
+#Hg1 #g2 #g #Hg #f #H
+[ elim (pr_after_inv_push_sn_next … Hg … H) -g
+  /3 width=5 by or_introl, ex3_2_intro/
+| /4 width=5 by pr_after_inv_next_sn_next, or_intror, ex2_intro/
+]
+qed-.
+
+(*** after_inv_pxx *)
+lemma pr_after_inv_push_sn:
+      ∀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 elim (pr_map_split_tl g2)
+#Hg2 #g #Hg #f1 #H
+[ elim (pr_after_inv_push_bi … Hg … H) -g1
+  /3 width=5 by or_introl, ex3_2_intro/
+| elim (pr_after_inv_push_next … Hg … H) -g1
+  /3 width=5 by or_intror, ex3_2_intro/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_after.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_after.ma
new file mode 100644 (file)
index 0000000..c048ec4
--- /dev/null
@@ -0,0 +1,90 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_after_eq.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Main constructions *******************************************************)
+
+(*** after_trans1 *)
+corec theorem pr_after_trans_sn:
+              ∀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 (pr_after_inv_push … Hg0 … H0) -g0
+  #f1 #f2 #Hf0 #H1 #H2
+  cases (pr_after_inv_push_bi … Hg … H2 H3) -g2 -g3
+  #f #Hf #H /3 width=7 by pr_after_refl/
+| #Hf4 #H0 #H3 #H4 #g1 #g2 #Hg0 #g #Hg
+  cases (pr_after_inv_push … Hg0 … H0) -g0
+  #f1 #f2 #Hf0 #H1 #H2
+  cases (pr_after_inv_push_next … Hg … H2 H3) -g2 -g3
+  #f #Hf #H /3 width=7 by pr_after_push/
+| #Hf4 #H0 #H4 #g1 #g2 #Hg0 #g #Hg
+  cases (pr_after_inv_next … Hg0 … H0) -g0 *
+  [ #f1 #f2 #Hf0 #H1 #H2
+    cases (pr_after_inv_next_sn … Hg … H2) -g2
+    #f #Hf #H /3 width=7 by pr_after_push/
+  | #f1 #Hf0 #H1 /3 width=6 by pr_after_next/
+  ]
+]
+qed-.
+
+(*** after_trans2 *)
+corec theorem pr_after_trans_dx:
+              ∀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 (pr_after_inv_push … Hg0 … H0) -g0
+  #f2 #f3 #Hf0 #H2 #H3
+  cases (pr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
+  #f #Hf #H /3 width=7 by pr_after_refl/
+| #Hf4 #H1 #H0 #H4 #g2 #g3 #Hg0 #g #Hg
+  cases (pr_after_inv_next … Hg0 … H0) -g0 *
+  [ #f2 #f3 #Hf0 #H2 #H3
+    cases (pr_after_inv_push_bi … Hg … H1 H2) -g1 -g2
+    #f #Hf #H /3 width=7 by pr_after_push/
+  | #f2 #Hf0 #H2
+    cases (pr_after_inv_push_next … Hg … H1 H2) -g1 -g2
+    #f #Hf #H /3 width=6 by pr_after_next/
+  ]
+| #Hf4 #H1 #H4 #f2 #f3 #Hf0 #g #Hg
+  cases (pr_after_inv_next_sn … Hg … H1) -g1
+  #f #Hg #H /3 width=6 by pr_after_next/
+]
+qed-.
+
+(* Main inversions **********************************************************)
+
+(*** after_mono *)
+corec theorem pr_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 (pr_after_inv_push_bi … Hy … H1 H2) -g1 -g2 /3 width=8 by pr_eq_push/
+| cases (pr_after_inv_push_next … Hy … H1 H2) -g1 -g2 /3 width=8 by pr_eq_next/
+| cases (pr_after_inv_next_sn … Hy … H1) -g1 /3 width=8 by pr_eq_next/
+]
+qed-.
+
+(*** after_mono_eq *)
+lemma pr_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 pr_after_mono, pr_after_eq_repl_back_dx, pr_after_eq_repl_back_sn/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_after_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_after_ist.ma
new file mode 100644 (file)
index 0000000..8a01526
--- /dev/null
@@ -0,0 +1,63 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/arith/nat_pred_succ.ma".
+include "ground/relocation/pr_pat_tls.ma".
+include "ground/relocation/pr_ist_tls.ma".
+include "ground/relocation/pr_after_pat_tls.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(*** H_after_inj *)
+definition H_pr_after_inj: predicate pr_map ≝
+           λf1. 𝐓❪f1❫ →
+           ∀f,f21,f22. f1 ⊚ f21 ≘ f → f1 ⊚ f22 ≘ f → f21 ≡ f22.
+
+(* Main destructions with pr_ist ********************************************)
+
+(*** after_inj_O_aux *)
+corec fact pr_after_inj_unit_aux:
+           ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_after_inj f1.
+#f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
+cases (pr_pat_inv_unit_bi … H1f1) -H1f1 [|*: // ] #g1 #H1
+lapply (pr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
+cases (H2g1 (𝟏)) #p #Hp
+cases (pr_after_inv_push_sn … H1f … H1) -H1f * #g21 #g #H1g #H21 #H
+[ cases (pr_after_inv_push_sn_push … H2f … H1 H) -f1 -f #g22 #H2g #H22
+  @(pr_eq_push … H21 H22) -f21 -f22
+| cases (pr_after_inv_push_sn_next … H2f … H1 H) -f1 -f #g22 #H2g #H22
+  @(pr_eq_next … H21 H22) -f21 -f22
+]
+@(pr_after_inj_unit_aux (⫰*[↓p]g1) … (⫰*[↓p]g)) -pr_after_inj_unit_aux
+/2 width=1 by pr_after_tls_sn_tls, pr_ist_tls, pr_pat_unit_succ_tls/
+qed-.
+
+(*** after_inj_aux *)
+fact pr_after_inj_aux:
+     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_after_inj f1) →
+     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_pr_after_inj f1.
+#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
+#i2 #IH #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
+elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [|*: // ] #g1 #H1g1 #H1
+elim (pr_after_inv_next_sn … H1f … H1) -H1f #g #H1g #H
+lapply (pr_after_inv_next_sn_next … H2f … H1 H) -f #H2g
+/3 width=6 by pr_ist_inv_next/
+qed-.
+
+(*** after_inj *)
+theorem pr_after_inj:
+        ∀f1. H_pr_after_inj f1.
+#f1 #H cases (H (𝟏))
+/3 width=7 by pr_after_inj_aux, pr_after_inj_unit_aux/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_basic.ma
new file mode 100644 (file)
index 0000000..b64889f
--- /dev/null
@@ -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/arith/nat_le_pred.ma".
+include "ground/relocation/pr_basic.ma".
+include "ground/relocation/pr_after_uni.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_basic **********************************************)
+
+(*** after_basic_rc *)
+lemma after_basic_rc (d2) (d1):
+      d1 ≤ d2 → ∀h2,h1.d2 ≤ h1+d1 → 𝐛❨d2,h2❩ ⊚ 𝐛❨d1,h1❩ ≘ 𝐛❨d1,h1+h2❩.
+#d2 #d1 @(nat_ind_2_succ … d2 d1) -d2 -d1
+[ #d1 #H #h2 #h1 #_
+  <(nle_inv_zero_dx … H) -d1 //
+| #d2 #IH #_ #h2 #h1 <nplus_zero_dx #H
+  elim (nle_inv_succ_sn … H) -H #Hd2 #Hh1
+  >Hh1 -Hh1 <nplus_succ_sn
+  /3 width=7 by pr_after_push/
+| #d2 #d1 #IH #H1 #h2 #h1 <nplus_succ_dx #H2
+  lapply (nle_inv_succ_bi … H1) -H1 #H1
+  lapply (nle_inv_succ_bi … H2) -H2 #H2
+  /3 width=7 by pr_after_refl/
+]
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_eq.ma
new file mode 100644 (file)
index 0000000..8fa720a
--- /dev/null
@@ -0,0 +1,71 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_after.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** after_eq_repl_back2 *)
+corec lemma pr_after_eq_repl_back_sn:
+            ∀f1,f. pr_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 (pr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by pr_after_refl/
+| cases (pr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by pr_after_push/
+| cases (pr_eq_inv_next_sn …  H0 …  H21) -g21 /3 width=5 by pr_after_next/
+]
+qed-.
+
+(*** after_eq_repl_fwd2 *)
+lemma pr_after_eq_repl_fwd_sn:
+      ∀f1,f. pr_eq_repl_fwd (λf2. f2 ⊚ f1 ≘ f).
+#f1 #f @pr_eq_repl_sym /2 width=3 by pr_after_eq_repl_back_sn/
+qed-.
+
+(*** after_eq_repl_back1 *)
+corec lemma pr_after_eq_repl_back_dx:
+            ∀f2,f. pr_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 (pr_eq_inv_push_sn …  H0 …  H11) -g11 /3 width=7 by pr_after_refl/
+| cases (pr_eq_inv_next_sn …  H0 …  H11) -g11 /3 width=7 by pr_after_push/
+| @(pr_after_next … H2 H) /2 width=5 by/
+]
+qed-.
+
+(*** after_eq_repl_fwd1 *)
+lemma pr_after_eq_repl_fwd_dx:
+      ∀f2,f. pr_eq_repl_fwd (λf1. f2 ⊚ f1 ≘ f).
+#f2 #f @pr_eq_repl_sym /2 width=3 by pr_after_eq_repl_back_dx/
+qed-.
+
+(*** after_eq_repl_back0 *)
+corec lemma pr_after_eq_repl_back:
+            ∀f1,f2. pr_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 (pr_eq_inv_push_sn …  H0 …  H01) -g01 /3 width=7 by pr_after_refl/
+| cases (pr_eq_inv_next_sn …  H0 …  H01) -g01 /3 width=7 by pr_after_push/
+| cases (pr_eq_inv_next_sn …  H0 …  H01) -g01 /3 width=5 by pr_after_next/
+]
+qed-.
+
+(*** after_eq_repl_fwd0 *)
+lemma pr_after_eq_repl_fwd:
+      ∀f2,f1. pr_eq_repl_fwd (λf. f2 ⊚ f1 ≘ f).
+#f2 #f1 @pr_eq_repl_sym /2 width=3 by pr_after_eq_repl_back/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_isi.ma
new file mode 100644 (file)
index 0000000..93182f8
--- /dev/null
@@ -0,0 +1,73 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_isi.ma".
+include "ground/relocation/pr_after_after.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_isi ************************************************)
+
+(*** after_isid_sn *)
+corec lemma pr_after_isi_sn:
+            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⊚ f2 ≘ f2.
+#f1 * -f1
+#f1 #g1 #Hf1 #H1 #f2 cases (pr_map_split_tl f2) #H2
+/3 width=7 by pr_after_push, pr_after_refl/
+qed.
+
+(*** after_isid_dx *)
+corec lemma pr_after_isi_dx:
+            ∀f2. 𝐈❪f2❫ → ∀f1. f1 ⊚ f2 ≘ f1.
+#f2 * -f2
+#f2 #g2 #Hf2 #H2 #f1 cases (pr_map_split_tl f1) #H1
+[ /3 width=7 by pr_after_refl/
+| @(pr_after_next … H1 H1) /3 width=3 by pr_isi_push/
+]
+qed.
+
+(* Destructions with pr_isi *************************************************)
+
+(*** after_isid_inv_sn *)
+lemma pr_after_isi_inv_sn:
+      ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f.
+/3 width=6 by pr_after_isi_sn, pr_after_mono/ qed-.
+
+(*** after_isid_inv_dx *)
+lemma pr_after_isi_inv_dx:
+      ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f2❫ → f1 ≡ f.
+/3 width=6 by pr_after_isi_dx, pr_after_mono/ qed-.
+
+(*** after_fwd_isid1 *)
+corec lemma pr_after_des_isi_sn:
+            ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫.
+#f1 #f2 #f * -f1 -f2 -f
+#f1 #f2 #f #g1 [1,2: #g2 ] #g #Hf #H1 [1,2: #H2 ] #H0 #H
+[ /4 width=6 by pr_isi_inv_push, pr_isi_push/ ]
+cases (pr_isi_inv_next … H … H0)
+qed-.
+
+(*** after_fwd_isid2 *)
+corec lemma pr_after_des_isi_dx:
+            ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f2❫.
+#f1 #f2 #f * -f1 -f2 -f
+#f1 #f2 #f #g1 [1,2: #g2 ] #g #Hf #H1 [1,2: #H2 ] #H0 #H
+[ /4 width=6 by pr_isi_inv_push, pr_isi_push/ ]
+cases (pr_isi_inv_next … H … H0)
+qed-.
+
+(*** after_inv_isid3 *)
+lemma pr_after_inv_isi:
+      ∀f1,f2,f. f1 ⊚ f2 ≘ f → 𝐈❪f❫ → 𝐈❪f1❫ ∧ 𝐈❪f2❫.
+/3 width=4 by pr_after_des_isi_dx, pr_after_des_isi_sn, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_ist.ma
new file mode 100644 (file)
index 0000000..f25cd9b
--- /dev/null
@@ -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/relocation/pr_pat_lt.ma".
+include "ground/relocation/pr_ist.ma".
+include "ground/relocation/pr_after_pat.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Destructions with pr_ist *************************************************)
+
+(*** after_istot_fwd *)
+lemma pr_after_ist_des:
+      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f2❫ → 𝐓❪f1❫ → 𝐓❪f❫.
+#f2 #f1 #f #Hf #Hf2 #Hf1 #i1 elim (Hf1 i1) -Hf1
+#i2 #Hf1 elim (Hf2 i2) -Hf2
+/3 width=7 by pr_after_des_pat, ex_intro/
+qed-.
+
+(*** after_fwd_istot_dx *)
+lemma pr_after_des_ist_dx:
+      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f❫ → 𝐓❪f1❫.
+#f2 #f1 #f #H #Hf #i1 elim (Hf i1) -Hf
+#i2 #Hf elim (pr_after_pat_des … Hf … H) -f /2 width=2 by ex_intro/
+qed-.
+
+(*** after_fwd_istot_sn *)
+lemma pr_after_des_ist_sn:
+      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f❫ → 𝐓❪f2❫.
+#f2 #f1 #f #H #Hf #i1 elim (Hf i1) -Hf
+#i #Hf elim (pr_after_pat_des … Hf … H) -f
+#i2 #Hf1 #Hf2 lapply (pr_pat_increasing … Hf1) -f1
+#Hi12 elim (pr_pat_le_ex … Hf2 … Hi12) -i2 /2 width=2 by ex_intro/
+qed-.
+
+(*** after_at1_fwd *)
+lemma pr_after_des_ist_pat:
+      ∀f1,i1,i2. @❪i1, f1❫ ≘ i2 → ∀f2. 𝐓❪f2❫ → ∀f. f2 ⊚ f1 ≘ f →
+      ∃∃i. @❪i2, f2❫ ≘ i & @❪i1, f❫ ≘ i.
+#f1 #i1 #i2 #Hf1 #f2 #Hf2 #f #Hf elim (Hf2 i2) -Hf2
+/3 width=8 by pr_after_des_pat, ex2_intro/
+qed-.
+
+(* Inversions with pr_ist ***************************************************)
+
+(*** after_inv_istot *)
+lemma pr_after_inv_ist:
+      ∀f2,f1,f. f2 ⊚ f1 ≘ f → 𝐓❪f❫ → ∧∧ 𝐓❪f2❫ & 𝐓❪f1❫.
+/3 width=4 by pr_after_des_ist_sn, pr_after_des_ist_dx, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_ist_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_ist_isi.ma
new file mode 100644 (file)
index 0000000..ea312f5
--- /dev/null
@@ -0,0 +1,40 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_ist_isi.ma".
+include "ground/relocation/pr_after_ist.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Destructions with pr_ist and pr_isi **************************************)
+
+(*** after_fwd_isid_sn *)
+lemma pr_after_des_ist_eq_sn:
+      ∀f2,f1,f. 𝐓❪f❫ → f2 ⊚ f1 ≘ f → f1 ≡ f → 𝐈❪f2❫.
+#f2 #f1 #f #H #Hf elim (pr_after_inv_ist … Hf H) -H
+#Hf2 #Hf1 #H @pr_isi_pat_total // -Hf2
+#i2 #i #Hf2 elim (Hf1 i2) -Hf1
+#i0 #Hf1 lapply (pr_pat_increasing … Hf1)
+#Hi20 lapply (pr_after_des_pat_sn … i0 … Hf1 … Hf) -Hf
+/3 width=7 by pr_pat_eq_repl_back, pr_pat_mono, pr_pat_id_le/
+qed-.
+
+(*** after_fwd_isid_dx *)
+lemma pr_after_des_ist_eq_dx:
+      ∀f2,f1,f.  𝐓❪f❫ → f2 ⊚ f1 ≘ f → f2 ≡ f → 𝐈❪f1❫.
+#f2 #f1 #f #H #Hf elim (pr_after_inv_ist … Hf H) -H
+#Hf2 #Hf1 #H2 @pr_isi_pat_total // -Hf1
+#i1 #i2 #Hi12 elim (pr_after_des_ist_pat … Hi12 … Hf) -f1
+/3 width=8 by pr_pat_inj, pr_pat_eq_repl_back/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_isu.ma
new file mode 100644 (file)
index 0000000..311ba55
--- /dev/null
@@ -0,0 +1,36 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isu_uni.ma".
+include "ground/relocation/pr_after_uni.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_isu ************************************************)
+
+(*** after_isid_isuni *)
+lemma pr_after_isu_isi_next:
+      ∀f1,f2. 𝐈❪f2❫ → 𝐔❪f1❫ → f1 ⊚ ↑f2 ≘ ↑f1.
+#f1 #f2 #Hf2 #H
+elim (pr_isu_inv_uni … H) -H #h #H
+/5 width=7 by pr_after_uni_isi_next, pr_after_eq_repl_back, pr_after_eq_repl_back_sn, pr_eq_next/
+qed.
+
+(*** after_uni_next2 *)
+lemma pr_after_isu_next_sn:
+      ∀f2. 𝐔❪f2❫ → ∀f1,f. ↑f2 ⊚ f1 ≘ f → f2 ⊚ ↑f1 ≘ f.
+#f2 #H #f1 #f #Hf
+elim (pr_isu_inv_uni … H) -H #h #H
+/5 width=7 by pr_after_uni_next_sn, pr_after_eq_repl_fwd_sn, pr_after_eq_repl_back_sn, pr_eq_next/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_nat_uni_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_nat_uni_tls.ma
new file mode 100644 (file)
index 0000000..82141bc
--- /dev/null
@@ -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/relocation/pr_tls.ma".
+include "ground/relocation/pr_nat.ma".
+include "ground/relocation/pr_isi_uni.ma".
+include "ground/relocation/pr_after_isi.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_nat and pr_uni *************************************)
+
+(*** after_uni_dx *)
+lemma pr_after_nat_uni (l2) (l1):
+      ∀f2. @↑❪l1, f2❫ ≘ l2 →
+      ∀f. f2 ⊚ 𝐮❨l1❩ ≘ f → 𝐮❨l2❩ ⊚ ⫰*[l2] f2 ≘ f.
+#l2 @(nat_ind_succ … l2) -l2
+[ #l1 #f2 #Hf2 #f #Hf
+  elim (pr_nat_inv_zero_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
+  lapply (pr_after_isi_inv_dx … Hf ?) -Hf
+  /3 width=3 by pr_after_isi_sn, pr_after_eq_repl_back/
+| #l2 #IH #l1 #f2 #Hf2 #f #Hf
+  elim (pr_nat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
+  [ #g2 #k1 #Hg2 #H1 #H2 destruct
+    elim (pr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H destruct
+    <pr_tls_swap /3 width=5 by pr_after_next/
+  | #g2 #Hg2 #H2 destruct
+    elim (pr_after_inv_next_sn … Hf) -Hf [ |*: // ] #g #Hg #H destruct
+    <pr_tls_swap /3 width=5 by pr_after_next/
+  ]
+]
+qed.
+
+(*** after_uni_sn *)
+lemma pr_nat_after_uni_tls (l2) (l1):
+      ∀f2. @↑❪l1, f2❫ ≘ l2 →
+      ∀f. 𝐮❨l2❩ ⊚ ⫰*[l2] f2 ≘ f → f2 ⊚ 𝐮❨l1❩ ≘ f.
+#l2 @(nat_ind_succ … l2) -l2
+[ #l1 #f2 #Hf2 #f #Hf
+  elim (pr_nat_inv_zero_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
+  lapply (pr_after_isi_inv_sn … Hf ?) -Hf
+  /3 width=3 by pr_after_isi_dx, pr_after_eq_repl_back/
+| #l2 #IH #l1 #f2 #Hf2 #f #Hf
+  elim (pr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H destruct
+  elim (pr_nat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
+  [ #g2 #k1 #Hg2 #H1 #H2 destruct /3 width=7 by pr_after_push/
+  | #g2 #Hg2 #H2 destruct /3 width=5 by pr_after_next/
+  ]
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat.ma
new file mode 100644 (file)
index 0000000..525658c
--- /dev/null
@@ -0,0 +1,87 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_pat_pat.ma".
+include "ground/relocation/pr_after.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Destructions with pr_pat *************************************************)
+
+(*** after_at_fwd *)
+lemma pr_after_pat_des (i) (i1):
+      ∀f. @❪i1, f❫ ≘ i → ∀f2,f1. f2 ⊚ f1 ≘ f →
+      ∃∃i2. @❪i1, f1❫ ≘ i2 & @❪i2, f2❫ ≘ i.
+#i elim i -i [2: #i #IH ] #i1 #f #Hf #f2 #f1 #Hf21
+[ elim (pr_pat_inv_succ_dx … Hf) -Hf [1,3:* |*: // ]
+  [1: #g #j1 #Hg #H0 #H |2,4: #g #Hg #H ]
+| elim (pr_pat_inv_unit_dx … Hf) -Hf //
+  #g #H1 #H
+]
+[2: elim (pr_after_inv_next … Hf21 … H) -f *
+    [ #g2 #g1 #Hg21 #H2 #H1 | #g2 #Hg21 #H2 ]
+|*: elim (pr_after_inv_push … Hf21 … H) -f
+    #g2 #g1 #Hg21 #H2 #H1
+]
+[4: -Hg21 |*: elim (IH … Hg … Hg21) -g -IH ]
+/3 width=9 by pr_pat_refl, pr_pat_push, pr_pat_next, ex2_intro/
+qed-.
+
+(*** after_fwd_at *)
+lemma pr_after_des_pat (i) (i2) (i1):
+      ∀f1,f2. @❪i1, f1❫ ≘ i2 → @❪i2, f2❫ ≘ i →
+      ∀f. f2 ⊚ f1 ≘ f → @❪i1, f❫ ≘ i.
+#i elim i -i [2: #i #IH ] #i2 #i1 #f1 #f2 #Hf1 #Hf2 #f #Hf
+[ elim (pr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
+  #g2 [ #j2 ] #Hg2 [ #H22 ] #H20
+  [ elim (pr_pat_inv_succ_dx … Hf1 … H22) -i2 *
+    #g1 [ #j1 ] #Hg1 [ #H11 ] #H10
+    [ elim (pr_after_inv_push_bi … Hf … H20 H10) -f1 -f2 /3 width=7 by pr_pat_push/
+    | elim (pr_after_inv_push_next … Hf … H20 H10) -f1 -f2 /3 width=6 by pr_pat_next/
+    ]
+  | elim (pr_after_inv_next_sn … Hf … H20) -f2 /3 width=7 by pr_pat_next/
+  ]
+| elim (pr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H22 #H20
+  elim (pr_pat_inv_unit_dx … Hf1 … H22) -i2 #g1 #H11 #H10
+  elim (pr_after_inv_push_bi … Hf … H20 H10) -f1 -f2 /2 width=2 by pr_pat_refl/
+]
+qed-.
+
+(*** after_fwd_at2 *)
+lemma pr_after_des_pat_sn (i1) (i):
+      ∀f. @❪i1, f❫ ≘ i → ∀f1,i2. @❪i1, f1❫ ≘ i2 →
+      ∀f2. f2 ⊚ f1 ≘ f → @❪i2, f2❫ ≘ i.
+#i1 #i #f #Hf #f1 #i2 #Hf1 #f2 #H elim (pr_after_pat_des … Hf … H) -f
+#j1 #H #Hf2 <(pr_pat_mono … Hf1 … H) -i1 -i2 //
+qed-.
+
+(*** after_fwd_at1 *)
+lemma pr_after_des_pat_dx (i) (i2) (i1):
+      ∀f,f2. @❪i1, f❫ ≘ i → @❪i2, f2❫ ≘ i →
+      ∀f1. f2 ⊚ f1 ≘ f → @❪i1, f1❫ ≘ i2.
+#i elim i -i [2: #i #IH ] #i2 #i1 #f #f2 #Hf #Hf2 #f1 #Hf1
+[ elim (pr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
+  #g [ #j1 ] #Hg [ #H01 ] #H00
+  elim (pr_pat_inv_succ_dx … Hf2) -Hf2 [1,3,5,7: * |*: // ]
+  #g2 [1,3: #j2 ] #Hg2 [1,2: #H22 ] #H20
+  [ elim (pr_after_inv_push_sn_push … Hf1 … H20 H00) -f2 -f /3 width=7 by pr_pat_push/
+  | elim (pr_after_inv_push_sn_next … Hf1 … H20 H00) -f2 -f /3 width=5 by pr_pat_next/
+  | elim (pr_after_inv_next_sn_push … Hf1 … H20 H00)
+  | /4 width=9 by pr_after_inv_next_sn_next, pr_pat_next/
+  ]
+| elim (pr_pat_inv_unit_dx … Hf) -Hf // #g #H01 #H00
+  elim (pr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H21 #H20
+  elim (pr_after_inv_push_sn_push … Hf1 … H20 H00) -f2 -f /3 width=2 by pr_pat_refl/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_tls.ma
new file mode 100644 (file)
index 0000000..ec6fb76
--- /dev/null
@@ -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/relocation/pr_tls.ma".
+include "ground/relocation/pr_pat.ma".
+include "ground/relocation/pr_after.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_pat and pr_tls *************************************)
+
+(* Note: this requires ↑ on first n *)
+(*** after_tls *)
+lemma pr_after_tls_sn_tls (n):
+      ∀f1,f2,f. @❪𝟏, f1❫ ≘ ↑n →
+      f1 ⊚ f2 ≘ f → ⫰*[n]f1 ⊚ f2 ≘ ⫰*[n]f.
+#n @(nat_ind_succ … n) -n //
+#n #IH #f1 #f2 #f #Hf1 #Hf
+cases (pr_pat_inv_unit_succ … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1
+cases (pr_after_inv_next_sn … Hf … H1) -Hf #g #Hg #H0 destruct
+<pr_tls_swap <pr_tls_swap /2 width=1 by/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_uni_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_pat_uni_tls.ma
new file mode 100644 (file)
index 0000000..f2ce2ca
--- /dev/null
@@ -0,0 +1,79 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_tls.ma".
+include "ground/relocation/pr_pat.ma".
+(* * it should not depend on pr_isi *)
+include "ground/relocation/pr_isi_uni.ma".
+include "ground/relocation/pr_after_isi.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_pat and pr_uni and pr_tls **************************)
+
+(*** after_uni_succ_dx *)
+lemma pr_after_pat_uni (i2) (i1):
+      ∀f2. @❪i1, f2❫ ≘ i2 →
+      ∀f. f2 ⊚ 𝐮❨i1❩ ≘ f → 𝐮❨i2❩ ⊚ ⫰*[i2] f2 ≘ f.
+#i2 elim i2 -i2
+[ #i1 #f2 #Hf2 #f #Hf
+  elim (pr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
+  elim (pr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H
+  lapply (pr_after_isi_inv_dx … Hg ?) -Hg
+  /4 width=5 by pr_after_isi_sn, pr_after_eq_repl_back, pr_after_next/
+| #i2 #IH #i1 #f2 #Hf2 #f #Hf >nsucc_inj
+  elim (pr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
+  [ #g2 #j1 #Hg2 #H1 #H2 destruct >nsucc_inj in Hf; #Hf
+    elim (pr_after_inv_push_next … Hf) -Hf [ |*: // ] #g #Hg #H destruct
+    <pr_tls_swap /3 width=5 by pr_after_next/
+  | #g2 #Hg2 #H2 destruct
+    elim (pr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H destruct
+    <pr_tls_swap /3 width=5 by pr_after_next/
+  ]
+]
+qed.
+
+(*** after_uni_succ_sn *)
+lemma pr_pat_after_uni_tls (i2) (i1):
+      ∀f2. @❪i1, f2❫ ≘ i2 →
+      ∀f. 𝐮❨i2❩ ⊚ ⫰*[i2] f2 ≘ f → f2 ⊚ 𝐮❨i1❩ ≘ f.
+#i2 elim i2 -i2
+[ #i1 #f2 #Hf2 #f #Hf
+  elim (pr_pat_inv_unit_dx … Hf2) -Hf2 // #g2 #H1 #H2 destruct
+  elim (pr_after_inv_next_sn … Hf) -Hf [ |*: // ] #g #Hg #H destruct
+  lapply (pr_after_isi_inv_sn … Hg ?) -Hg
+  /4 width=7 by pr_after_isi_dx, pr_after_eq_repl_back, pr_after_push/
+| #i2 #IH #i1 #f2 #Hf2 #f >nsucc_inj #Hf
+  elim (pr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H destruct
+  elim (pr_pat_inv_succ_dx … Hf2) -Hf2 [1,3: * |*: // ]
+  [ #g2 #j1 #Hg2 #H1 #H2 destruct <pr_tls_swap in Hg; /3 width=7 by pr_after_push/
+  | #g2 #Hg2 #H2 destruct <pr_tls_swap in Hg; /3 width=5 by pr_after_next/
+  ]
+]
+qed-.
+
+(* Advanced constructions with pr_uni ***************************************)
+
+(*** after_uni_one_dx *)
+lemma pr_after_push_unit:
+      ∀f2,f. ⫯f2 ⊚ 𝐮❨𝟏❩ ≘ f → 𝐮❨𝟏❩ ⊚ f2 ≘ f.
+#f2 #f #H
+@(pr_after_pat_uni … (⫯f2))
+/2 width=3 by pr_pat_refl/
+qed.
+
+(*** after_uni_one_sn *)
+lemma pr_after_unit_sn:
+      ∀f1,f. 𝐮❨𝟏❩ ⊚ f1 ≘ f → ⫯f1 ⊚ 𝐮❨𝟏❩ ≘ f.
+/3 width=3 by pr_pat_after_uni_tls, pr_pat_refl/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_after_uni.ma
new file mode 100644 (file)
index 0000000..e74d8e0
--- /dev/null
@@ -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 "ground/arith/nat_plus.ma".
+(* * it should not depend on pr_isi *)
+include "ground/relocation/pr_isi_uni.ma".
+include "ground/relocation/pr_after_isi.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+(* Constructions with pr_uni ************************************************)
+
+(*** after_uni *)
+lemma pr_after_uni (h1) (h2): 𝐮❨h1❩ ⊚ 𝐮❨h2❩ ≘ 𝐮❨h2+h1❩.
+#h1 @(nat_ind_succ … h1) -h1
+/3 width=5 by pr_after_isi_sn, pr_after_next, eq_f/
+qed.
+
+(*** after_uni_sn_pushs *)
+lemma pr_after_uni_sn_pushs (h):
+      ∀f. 𝐮❨h❩ ⊚ f ≘ ↑*[h]f.
+#h @(nat_ind_succ … h) -h
+/2 width=5 by pr_after_isi_sn, pr_after_next/
+qed.
+
+lemma pr_after_uni_isi_next (h1):
+      ∀f2. 𝐈❪f2❫ → 𝐮❨h1❩ ⊚ ↑f2 ≘ ↑𝐮❨h1❩.
+#h1 @(nat_ind_succ … h1) -h1
+/5 width=7 by pr_after_isi_dx, pr_after_eq_repl_back_sn, pr_after_next, pr_after_push, pr_isi_inv_eq_push/
+qed.
+
+lemma pr_after_uni_next_sn (h2):
+      ∀f1,f. ↑𝐮❨h2❩ ⊚ f1 ≘ f → 𝐮❨h2❩ ⊚ ↑f1 ≘ f.
+#h2 @(nat_ind_succ … h2) -h2
+[ #f1 #f #Hf
+  elim (pr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H0 destruct
+  /4 width=7 by pr_after_isi_inv_sn, pr_after_isi_sn, pr_after_eq_repl_back, pr_eq_next/
+| #h2 #IH #f1 #f #Hf
+  elim (pr_after_inv_next_sn … Hf) -Hf [2,3: // ] #g #Hg #H0 destruct
+  /3 width=5 by pr_after_next/
+]
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_basic.ma
new file mode 100644 (file)
index 0000000..2028819
--- /dev/null
@@ -0,0 +1,37 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/element_b_2.ma".
+include "ground/relocation/pr_pushs.ma".
+include "ground/relocation/pr_uni.ma".
+
+(* BASIC ELEMENTS FOR PARTIAL RELOCATION MAPS *******************************)
+
+definition basic (d) (h): pr_map ≝ ⫯*[d] 𝐮❨h❩.
+
+interpretation
+  "basic elements (partial relocation maps)"
+  'ElementB d h = (basic d h).
+
+(* Basic constructions ******************************************************)
+
+(*** at_basic_succ_sn *)
+lemma pr_basic_succ_sn (d) (h): ⫯𝐛❨d,h❩ = 𝐛❨↑d,h❩.
+#d #h >pr_pushs_succ //
+qed.
+
+(*** at_basic_zero_succ *)
+lemma pr_basic_zero_succ (h): ↑𝐛❨𝟎,h❩ = 𝐛❨𝟎,↑h❩.
+#h >pr_nexts_succ //
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter.ma
new file mode 100644 (file)
index 0000000..ec02fea
--- /dev/null
@@ -0,0 +1,238 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/rcoafter_3.ma".
+include "ground/xoa/ex_3_2.ma".
+include "ground/relocation/pr_tl.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(*** coafter *)
+coinductive pr_coafter: relation3 pr_map pr_map pr_map ≝
+(*** coafter_refl *)
+| pr_coafter_refl (f1) (f2) (f) (g1) (g2) (g):
+  pr_coafter f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → pr_coafter g1 g2 g
+(*** coafter_push *)
+| pr_coafter_push (f1) (f2) (f) (g1) (g2) (g):
+  pr_coafter f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → pr_coafter g1 g2 g
+(*** coafter_next *)
+| pr_coafter_next (f1) (f2) (f) (g1) (g):
+  pr_coafter f1 f2 f → ↑f1 = g1 → ⫯f = g → pr_coafter g1 f2 g
+.
+
+interpretation
+  "relational co-composition (partial relocation maps)"
+  'RCoAfter f1 f2 f = (pr_coafter f1 f2 f).
+
+(* Basic inversions *********************************************************)
+
+(*** coafter_inv_ppx *)
+lemma pr_coafter_inv_push_bi:
+      ∀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
+  >(eq_inv_pr_push_bi … Hx1) >(eq_inv_pr_push_bi … Hx2) -x2 -x1
+  /2 width=3 by ex2_intro/
+| #g2 #g #_ #_ #H2 #_ #x1 #x2 #_ #Hx2 destruct
+  elim (eq_inv_pr_push_next … Hx2)
+| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
+  elim (eq_inv_pr_push_next … Hx1)
+]
+qed-.
+
+(*** coafter_inv_pnx *)
+lemma pr_coafter_inv_push_next:
+      ∀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 (eq_inv_pr_next_push … Hx2)
+| #g2 #g #Hf #H1 #H2 #H3 #x1 #x2 #Hx1 #Hx2 destruct
+  >(eq_inv_pr_push_bi … Hx1) >(eq_inv_pr_next_bi … Hx2) -x2 -x1
+  /2 width=3 by ex2_intro/
+| #g #_ #H1 #_ #x1 #x2 #Hx1 #_ destruct
+  elim (eq_inv_pr_push_next … Hx1)
+]
+qed-.
+
+(*** coafter_inv_nxx *)
+lemma pr_coafter_inv_next_sn:
+      ∀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 (eq_inv_pr_next_push … Hx1)
+| #g2 #g #_ #H1 #_ #_ #x1 #Hx1 destruct
+  elim (eq_inv_pr_next_push … Hx1)
+| #g #Hf #H1 #H #x1 #Hx1 destruct
+  >(eq_inv_pr_next_bi … Hx1) -x1
+  /2 width=3 by ex2_intro/
+]
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** coafter_inv_ppp *)
+lemma pr_coafter_inv_push_bi_push:
+      ∀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 (pr_coafter_inv_push_bi … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
+<(eq_inv_pr_push_bi … Hx) -f //
+qed-.
+
+(*** coafter_inv_ppn *)
+lemma pr_coafter_inv_push_bi_next:
+      ∀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 (pr_coafter_inv_push_bi … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
+elim (eq_inv_pr_push_next … Hx)
+qed-.
+
+(*** coafter_inv_pnn *)
+lemma pr_coafter_inv_push_next_next:
+      ∀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 (pr_coafter_inv_push_next … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
+<(eq_inv_pr_next_bi … Hx) -f //
+qed-.
+
+(*** coafter_inv_pnp *)
+lemma pr_coafter_inv_push_next_push:
+      ∀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 (pr_coafter_inv_push_next … Hg … H1 H2) -g1 -g2 #x #Hf #Hx destruct
+elim (eq_inv_pr_next_push … Hx)
+qed-.
+
+(*** coafter_inv_nxp *)
+lemma pr_coafter_inv_next_sn_push:
+      ∀g1,f2,g. g1 ~⊚ f2 ≘ g →
+      ∀f1,f. ↑f1 = g1 → ⫯f = g → f1 ~⊚ f2 ≘ f.
+#g1 #f2 #g #Hg #f1 #f #H1 #H
+elim (pr_coafter_inv_next_sn … Hg … H1) -g1 #x #Hf #Hx destruct
+<(eq_inv_pr_push_bi … Hx) -f //
+qed-.
+
+(*** coafter_inv_nxn *)
+lemma pr_coafter_inv_next_sn_next:
+      ∀g1,f2,g. g1 ~⊚ f2 ≘ g →
+      ∀f1,f. ↑f1 = g1 → ↑f = g → ⊥.
+#g1 #f2 #g #Hg #f1 #f #H1 #H
+elim (pr_coafter_inv_next_sn … Hg … H1) -g1 #x #Hf #Hx destruct
+elim (eq_inv_pr_push_next … Hx)
+qed-.
+
+(*** coafter_inv_pxp *)
+lemma pr_coafter_inv_push_sn_push:
+      ∀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 (pr_map_split_tl g2) #H2
+[ lapply (pr_coafter_inv_push_bi_push … Hg … H1 H2 H) -g1 -g
+  /2 width=3 by ex2_intro/
+| elim (pr_coafter_inv_push_next_push … Hg … H1 H2 H)
+]
+qed-.
+
+(*** coafter_inv_pxn *)
+lemma pr_coafter_inv_push_sn_next:
+      ∀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 (pr_map_split_tl g2) #H2
+[ elim (pr_coafter_inv_push_bi_next … Hg … H1 H2 H)
+| lapply (pr_coafter_inv_push_next_next … Hg … H1 … H) -g1 -g
+  /2 width=3 by ex2_intro/
+]
+qed-.
+
+(*** coafter_inv_xxn *)
+lemma pr_coafter_inv_next:
+      ∀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 (pr_map_split_tl g1) #H1
+[ elim (pr_coafter_inv_push_sn_next … Hg … H1 H) -g
+  /2 width=5 by ex3_2_intro/
+| elim (pr_coafter_inv_next_sn_next … Hg … H1 H)
+]
+qed-.
+
+(*** coafter_inv_xnn *)
+lemma pr_coafter_inv_next_dx_next:
+      ∀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 (pr_coafter_inv_next … Hg … H) -g #z1 #z2 #Hf #H1 #H2 destruct
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** coafter_inv_xxp *)
+lemma pr_coafter_inv_push:
+      ∀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 (pr_map_split_tl g1) #H1
+[ elim (pr_coafter_inv_push_sn_push … Hg … H1 H) -g
+  /3 width=5 by or_introl, ex3_2_intro/
+| /4 width=5 by pr_coafter_inv_next_sn_push, or_intror, ex2_intro/
+]
+qed-.
+
+(*** coafter_inv_pxx *)
+lemma pr_coafter_inv_push_sn:
+      ∀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 (pr_map_split_tl g2) #H2
+[ elim (pr_coafter_inv_push_bi … Hg … H1 H2) -g1
+  /3 width=5 by or_introl, ex3_2_intro/
+| elim (pr_coafter_inv_push_next … Hg … H1 H2) -g1
+  /3 width=5 by or_intror, ex3_2_intro/
+]
+qed-.
+
+(* Inversions with pr_tl ****************************************************)
+
+(*** coafter_inv_tl1 *)
+lemma pr_coafter_inv_tl_dx:
+      ∀g2,g1,g. g2 ~⊚ ⫰g1 ≘ g →
+      ∃∃f. ⫯g2 ~⊚ g1 ≘ f & ⫰f = g.
+#g2 #g1 #g
+elim (pr_map_split_tl g1) #H1 #H2
+[ /3 width=7 by pr_coafter_refl, ex2_intro/
+| @(ex2_intro … (↑g)) /2 width=7 by pr_coafter_push/ (* * full auto fails *)
+]
+qed-.
+
+(*** coafter_inv_tl0 *)
+lemma pr_coafter_inv_tl:
+      ∀g2,g1,g. g2 ~⊚ g1 ≘ ⫰g →
+      ∃∃f1. ⫯g2 ~⊚ f1 ≘ g & ⫰f1 = g1.
+#g2 #g1 #g
+elim (pr_map_split_tl g) #H1 #H2
+[ /3 width=7 by pr_coafter_refl, ex2_intro/
+| @(ex2_intro … (↑g1)) /2 width=7 by pr_coafter_push/ (* * full auto fails *)
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_coafter.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_coafter.ma
new file mode 100644 (file)
index 0000000..8ac9736
--- /dev/null
@@ -0,0 +1,36 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_coafter_eq.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Main inversions **********************************************************)
+
+(*** coafter_mono *)
+corec theorem pr_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 (pr_coafter_inv_push_bi … Hy … H1 H2) -g1 -g2 /3 width=8 by pr_eq_push/
+| cases (pr_coafter_inv_push_next … Hy … H1 H2) -g1 -g2 /3 width=8 by pr_eq_next/
+| cases (pr_coafter_inv_next_sn … Hy … H1) -g1 /3 width=8 by pr_eq_push/
+]
+qed-.
+
+(*** coafter_mono_eq *)
+lemma pr_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 pr_coafter_mono, pr_coafter_eq_repl_back_dx, pr_coafter_eq_repl_back_sn/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_coafter_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_coafter_ist.ma
new file mode 100644 (file)
index 0000000..13681ff
--- /dev/null
@@ -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/relocation/pr_pat_tls.ma".
+include "ground/relocation/pr_ist_tls.ma".
+include "ground/relocation/pr_coafter_nat_tls.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(*** H_coafter_inj *)
+definition H_pr_coafter_inj: predicate pr_map ≝
+           λf1. 𝐓❪f1❫ →
+           ∀f,f21,f22. f1 ~⊚ f21 ≘ f → f1 ~⊚ f22 ≘ f → f21 ≡ f22.
+
+(* Main destructions with pr_ist ********************************************)
+
+(*** coafter_inj_O_aux *)
+corec fact pr_coafter_inj_unit_aux:
+           ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_coafter_inj f1.
+#f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
+cases (pr_pat_inv_unit_bi … H1f1) -H1f1 [ |*: // ] #g1 #H1
+lapply (pr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
+cases (H2g1 (𝟏)) #n #Hn
+cases (pr_coafter_inv_push_sn … H1f … H1) -H1f * #g21 #g #H1g #H21 #H
+[ cases (pr_coafter_inv_push_sn_push … H2f … H1 H) -f1 -f #g22 #H2g #H22
+  @(pr_eq_push … H21 H22) -f21 -f22
+| cases (pr_coafter_inv_push_sn_next … H2f … H1 H) -f1 -f #g22 #H2g #H22
+  @(pr_eq_next … H21 H22) -f21 -f22
+]
+@(pr_coafter_inj_unit_aux (⫰*[↓n]g1) … (⫰*[↓n]g)) -pr_coafter_inj_unit_aux
+/2 width=1 by pr_coafter_tls_bi_tls, pr_ist_tls, pr_pat_unit_succ_tls/
+qed-.
+
+(*** coafter_inj_aux *)
+fact pr_coafter_inj_aux:
+     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_coafter_inj f1) →
+     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_pr_coafter_inj f1.
+#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
+#i2 #IH #f1 #H1f1 #H2f1 #f #f21 #f22 #H1f #H2f
+elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #H1g1 #H1
+elim (pr_coafter_inv_next_sn … H1f … H1) -H1f #g #H1g #H
+lapply (pr_coafter_inv_next_sn_push … H2f … H1 H) -f #H2g
+/3 width=6 by pr_ist_inv_next/
+qed-.
+
+(*** coafter_inj *)
+theorem pr_coafter_inj:
+        ∀f1. H_pr_coafter_inj f1.
+#f1 #H cases (H (𝟏)) /3 width=7 by pr_coafter_inj_aux, pr_coafter_inj_unit_aux/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_eq.ma
new file mode 100644 (file)
index 0000000..70edc94
--- /dev/null
@@ -0,0 +1,71 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_coafter.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** coafter_eq_repl_back2 *)
+corec lemma pr_coafter_eq_repl_back_sn:
+            ∀f1,f. pr_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 (pr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by pr_coafter_refl/
+| cases (pr_eq_inv_push_sn …  H0 …  H21) -g21 /3 width=7 by pr_coafter_push/
+| cases (pr_eq_inv_next_sn …  H0 …  H21) -g21 /3 width=5 by pr_coafter_next/
+]
+qed-.
+
+(*** coafter_eq_repl_fwd2 *)
+lemma pr_coafter_eq_repl_fwd_sn:
+      ∀f1,f. pr_eq_repl_fwd (λf2. f2 ~⊚ f1 ≘ f).
+#f1 #f @pr_eq_repl_sym /2 width=3 by pr_coafter_eq_repl_back_sn/
+qed-.
+
+(*** coafter_eq_repl_back1 *)
+corec lemma pr_coafter_eq_repl_back_dx:
+            ∀f2,f. pr_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 (pr_eq_inv_push_sn …  H0 …  H11) -g11 /3 width=7 by pr_coafter_refl/
+| cases (pr_eq_inv_next_sn …  H0 …  H11) -g11 /3 width=7 by pr_coafter_push/
+| @(pr_coafter_next … H2 H) /2 width=5 by/
+]
+qed-.
+
+(*** coafter_eq_repl_fwd1 *)
+lemma pr_coafter_eq_repl_fwd_dx:
+      ∀f2,f. pr_eq_repl_fwd (λf1. f2 ~⊚ f1 ≘ f).
+#f2 #f @pr_eq_repl_sym /2 width=3 by pr_coafter_eq_repl_back_dx/
+qed-.
+
+(*** coafter_eq_repl_back0 *)
+corec lemma pr_coafter_eq_repl_back:
+            ∀f1,f2. pr_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 (pr_eq_inv_push_sn …  H0 …  H01) -g01 /3 width=7 by pr_coafter_refl/
+| cases (pr_eq_inv_next_sn …  H0 …  H01) -g01 /3 width=7 by pr_coafter_push/
+| cases (pr_eq_inv_push_sn …  H0 …  H01) -g01 /3 width=5 by pr_coafter_next/
+]
+qed-.
+
+(*** coafter_eq_repl_fwd0 *)
+lemma pr_coafter_eq_repl_fwd:
+      ∀f2,f1. pr_eq_repl_fwd (λf. f2 ~⊚ f1 ≘ f).
+#f2 #f1 @pr_eq_repl_sym /2 width=3 by pr_coafter_eq_repl_back/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_isi.ma
new file mode 100644 (file)
index 0000000..c8e71ee
--- /dev/null
@@ -0,0 +1,50 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi_id.ma".
+include "ground/relocation/pr_coafter_coafter.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_isi ************************************************)
+
+(*** coafter_isid_sn *)
+corec lemma pr_coafter_isi_sn:
+            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ~⊚ f2 ≘ f2.
+#f1 * -f1 #f1 #g1 #Hf1 #H1 #f2
+cases (pr_map_split_tl f2) #H2
+/3 width=7 by pr_coafter_push, pr_coafter_refl/
+qed.
+
+(*** coafter_isid_dx *)
+corec lemma pr_coafter_isi_dx:
+            ∀f2,f. 𝐈❪f2❫ → 𝐈❪f❫ → ∀f1. f1 ~⊚ f2 ≘ f.
+#f2 #f * -f2 #f2 #g2 #Hf2 #H2 * -f #f #g #Hf #H #f1
+cases (pr_map_split_tl f1) #H1
+[ /3 width=7 by pr_coafter_refl/
+| @(pr_coafter_next … H1 … H) /3 width=3 by pr_isi_push/
+]
+qed.
+
+(* Inversions with pr_isi ***************************************************)
+
+(*** coafter_isid_inv_sn *)
+lemma pr_coafter_isi_inv_sn:
+      ∀f1,f2,f. f1 ~⊚ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f.
+/3 width=6 by pr_coafter_isi_sn, pr_coafter_mono/ qed-.
+
+(*** coafter_isid_inv_dx *)
+lemma pr_coafter_isi_inv_dx:
+      ∀f1,f2,f. f1 ~⊚ f2 ≘ f → 𝐈❪f2❫ → 𝐈❪f❫.
+/4 width=4 by pr_eq_id_isi, pr_coafter_isi_dx, pr_coafter_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isf.ma
new file mode 100644 (file)
index 0000000..c3f8185
--- /dev/null
@@ -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/relocation/pr_pat_tls.ma".
+include "ground/relocation/pr_isf_tls.ma".
+include "ground/relocation/pr_ist_tls.ma".
+include "ground/relocation/pr_coafter_nat_tls.ma".
+include "ground/relocation/pr_coafter_isi.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(*** H_coafter_isfin2_fwd *)
+definition H_pr_coafter_des_ist_isf: predicate pr_map ≝
+           λf1. ∀f2. 𝐅❪f2❫ → 𝐓❪f1❫ → ∀f. f1 ~⊚ f2 ≘ f →  𝐅❪f❫.
+
+(* Destructions with pr_ist and pr_isf **************************************)
+
+(*** coafter_isfin2_fwd_O_aux *)
+fact pr_coafter_des_ist_isf_unit_aux:
+     ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_coafter_des_ist_isf f1.
+#f1 #Hf1 #f2 #H
+generalize in match Hf1; generalize in match f1; -f1
+@(pr_isf_ind … H) -f2
+[ /3 width=4 by pr_coafter_isi_inv_dx, pr_isf_isi/ ]
+#f2 #_ #IH #f1 #H #Hf1 #f #Hf
+elim (pr_pat_inv_unit_bi … H) -H [ |*: // ] #g1 #H1
+lapply (pr_ist_inv_push … Hf1 … H1) -Hf1 #Hg1
+elim (Hg1 (𝟏)) #n #Hn
+[ elim (pr_coafter_inv_push_bi … Hf) | elim (pr_coafter_inv_push_next … Hf)
+] -Hf [1,6: |*: // ] #g #Hg #H0 destruct
+/5 width=6 by pr_isf_next, pr_isf_push, pr_isf_inv_tls, pr_ist_tls, pr_pat_unit_succ_tls, pr_coafter_tls_sn_tls/
+qed-.
+
+(*** coafter_isfin2_fwd_aux *)
+fact pr_coafter_des_ist_isf_aux:
+     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_coafter_des_ist_isf f1) →
+     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_pr_coafter_des_ist_isf f1.
+#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
+#i2 #IH #f1 #H1f1 #f2 #Hf2 #H2f1 #f #Hf
+elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #Hg1 #H1
+elim (pr_coafter_inv_next_sn … Hf … H1) -Hf #g #Hg #H0
+lapply (IH … Hg1 … Hg) -i2 -Hg
+/2 width=4 by pr_ist_inv_next, pr_isf_push/ (* * full auto fails *)
+qed-.
+
+(*** coafter_isfin2_fwd *)
+lemma pr_coafter_des_ist_isf: ∀f1. H_pr_coafter_des_ist_isf f1.
+#f1 #f2 #Hf2 #Hf1 cases (Hf1 (𝟏))
+/3 width=7 by pr_coafter_des_ist_isf_aux, pr_coafter_des_ist_isf_unit_aux/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_ist_isi.ma
new file mode 100644 (file)
index 0000000..d3dc9e6
--- /dev/null
@@ -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/relocation/pr_pat_tls.ma".
+include "ground/relocation/pr_isi_tls.ma".
+include "ground/relocation/pr_ist_tls.ma".
+include "ground/relocation/pr_coafter_nat_tls.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(*** H_coafter_fwd_isid2 *)
+definition H_pr_coafter_des_ist_sn_isi: predicate pr_map ≝
+           λf1. ∀f2,f. f1 ~⊚ f2 ≘ f → 𝐓❪f1❫ → 𝐈❪f❫ → 𝐈❪f2❫.
+
+(* Destructions with pr_ist and pr_isi **************************************)
+
+(*** coafter_fwd_isid2_O_aux *)
+corec fact pr_coafter_des_ist_sn_isi_unit_aux:
+           ∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_coafter_des_ist_sn_isi f1.
+#f1 #H1f1 #f2 #f #H #H2f1 #Hf
+cases (pr_pat_inv_unit_bi … H1f1) -H1f1 [ |*: // ] #g1 #H1
+lapply (pr_ist_inv_push … H2f1 … H1) -H2f1 #H2g1
+cases (H2g1 (𝟏)) #n #Hn
+cases (pr_coafter_inv_push_sn … H … H1) -H * #g2 #g #H #H2 #H0
+[ lapply (pr_isi_inv_push … Hf … H0) -Hf #Hg
+  @(pr_isi_push … H2) -H2
+  /3 width=7 by pr_coafter_tls_sn_tls, pr_pat_unit_succ_tls, pr_ist_tls, pr_isi_tls/
+| cases (pr_isi_inv_next … Hf … H0)
+]
+qed-.
+
+(*** coafter_fwd_isid2_aux *)
+fact pr_coafter_des_ist_sn_isi_aux:
+     (∀f1. @❪𝟏, f1❫ ≘ 𝟏 → H_pr_coafter_des_ist_sn_isi f1) →
+     ∀i2,f1. @❪𝟏, f1❫ ≘ i2 → H_pr_coafter_des_ist_sn_isi f1.
+#H0 #i2 elim i2 -i2 /2 width=1 by/ -H0
+#i2 #IH #f1 #H1f1 #f2 #f #H #H2f1 #Hf
+elim (pr_pat_inv_unit_succ … H1f1) -H1f1 [ |*: // ] #g1 #Hg1 #H1
+elim (pr_coafter_inv_next_sn … H … H1) -H #g #Hg #H0
+@(IH … Hg1 … Hg) /2 width=3 by pr_ist_inv_next, pr_isi_inv_push/ (* * full auto fails *)
+qed-.
+
+(*** coafter_fwd_isid2 *)
+lemma pr_coafter_des_ist_sn_isi:
+      ∀f1. H_pr_coafter_des_ist_sn_isi f1.
+#f1 #f2 #f #Hf #H cases (H (𝟏))
+/3 width=7 by pr_coafter_des_ist_sn_isi_aux, pr_coafter_des_ist_sn_isi_unit_aux/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_isu.ma
new file mode 100644 (file)
index 0000000..01d0d95
--- /dev/null
@@ -0,0 +1,29 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi_pushs.ma".
+include "ground/relocation/pr_isu_uni.ma".
+include "ground/relocation/pr_coafter_uni_pushs.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_isu and pr_isi *************************************)
+
+(*** coafter_isuni_isid *)
+lemma pr_coafter_isu_isi:
+      ∀f2. 𝐈❪f2❫ → ∀f1. 𝐔❪f1❫ → f1 ~⊚ f2 ≘ f2.
+#f #Hf #g #H
+elim (pr_isu_inv_uni … H) -H #n #H
+/5 width=4 by pr_isi_pushs, pr_isi_inv_eq_repl, pr_coafter_eq_repl_back, pr_coafter_eq_repl_back_sn/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_nat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_nat_tls.ma
new file mode 100644 (file)
index 0000000..f3b7ba7
--- /dev/null
@@ -0,0 +1,45 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_nat.ma".
+include "ground/relocation/pr_coafter.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_nat and pr_tls *************************************)
+
+(*** coafter_tls *)
+lemma pr_coafter_tls_bi_tls (n2) (n1):
+      ∀f1,f2,f. @↑❪n1, f1❫ ≘ n2 →
+      f1 ~⊚ f2 ≘ f → ⫰*[n2]f1 ~⊚ ⫰*[n1]f2 ≘ ⫰*[n2]f.
+#n2 @(nat_ind_succ … n2) -n2 [ #n1 | #n2 #IH * [| #n1 ] ] #f1 #f2 #f #Hf1 #Hf
+[ elim (pr_nat_inv_zero_dx … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1 destruct //
+| elim (pr_nat_inv_zero_succ … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1
+  elim (pr_coafter_inv_next_sn … Hf … H1) -Hf #g #Hg #H0 destruct
+  lapply (IH … Hg1 Hg) -IH -Hg1 -Hg //
+| elim (pr_nat_inv_succ_dx … Hf1) -Hf1 [1,3: * |*: // ] #g1 [ #n1 ] #Hg1 [ #H ] #H1
+  [ elim (pr_coafter_inv_push_sn … Hf … H1) -Hf * #g2 #g #Hg #H2 #H0 destruct
+    lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H //
+  | elim (pr_coafter_inv_next_sn … Hf … H1) -Hf #g #Hg #H0 destruct
+    lapply (IH … Hg1 Hg) -IH -Hg1 -Hg #H //
+  ]
+]
+qed.
+
+(*** coafter_tls_O *)
+lemma pr_coafter_tls_sn_tls:
+      ∀n,f1,f2,f. @↑❪𝟎, f1❫ ≘ n →
+      f1 ~⊚ f2 ≘ f → ⫰*[n]f1 ~⊚ f2 ≘ ⫰*[n]f.
+/2 width=1 by pr_coafter_tls_bi_tls/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_nat_tls_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_nat_tls_pushs.ma
new file mode 100644 (file)
index 0000000..9445dcc
--- /dev/null
@@ -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/relocation/pr_pushs.ma".
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_nat.ma".
+include "ground/relocation/pr_coafter.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Destructions with pr_nat and pr_tls and pr_pushs *************************)
+
+(*** coafter_fwd_pushs *)
+lemma pr_coafter_des_pushs_dx (n) (m):
+      ∀g2,f1,g. g2 ~⊚ ⫯*[m]f1 ≘ g → @↑❪m, g2❫ ≘ n →
+      ∃∃f. ⫰*[n]g2 ~⊚ f1 ≘ f & ⫯*[n] f = g.
+#n @(nat_ind_succ … n) -n
+[ #m #g2 #f1 #g #Hg #H
+  elim (pr_nat_inv_zero_dx … H) -H [|*: // ] #f2 #H1 #H2 destruct
+  /2 width=3 by ex2_intro/
+| #n #IH * [| #m ] #g2 #f1 #g #Hg #H
+  [ elim (pr_nat_inv_zero_succ … H) -H [|*: // ] #f2 #Hmn #H destruct
+    elim (pr_coafter_inv_next_sn … Hg) -Hg [|*: // ] #f #Hf #H destruct
+    elim (IH … Hf Hmn) -IH -Hf -Hmn /2 width=3 by ex2_intro/
+  | elim (pr_nat_inv_succ_bi … H) -H [1,4: * |*: // ] #f2 #Hmn #H destruct
+    [ elim (pr_coafter_inv_push_bi … Hg) -Hg [|*: // ] #f #Hf #H destruct
+      elim (IH … Hf Hmn) -IH -Hf -Hmn /2 width=3 by ex2_intro/
+    | elim (pr_coafter_inv_next_sn … Hg) -Hg [|*: // ] #f #Hf #H destruct
+      elim (IH … Hf Hmn) -IH -Hf -Hmn /2 width=3 by ex2_intro/
+    ]
+  ]
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_pat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_pat_tls.ma
new file mode 100644 (file)
index 0000000..d4a9865
--- /dev/null
@@ -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/relocation/pr_pat_tls.ma".
+include "ground/relocation/pr_coafter_nat_tls.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_pat and pr_tls *************************************)
+
+(* Note: this does not require ↑ first and second j *)
+(*** coafter_tls_succ *)
+lemma pr_coafter_tls_tl_tls:
+      ∀g2,g1,g. g2 ~⊚ g1 ≘ g →
+      ∀j. @❪𝟏, g2❫ ≘ j → ⫰*[j]g2 ~⊚ ⫰g1 ≘ ⫰*[j]g.
+#g2 #g1 #g #Hg #j #Hg2
+lapply (pr_nat_pred_bi … Hg2) -Hg2 #Hg2
+lapply (pr_coafter_tls_bi_tls … Hg2 … Hg) -Hg #Hg
+lapply (pr_pat_unit_succ_tls … Hg2) -Hg2 #H
+elim (pr_pat_inv_unit_bi … H) -H [ |*: // ] #f2 #H2
+elim (pr_coafter_inv_push_sn … Hg … H2) -Hg * #f1 #f #Hf #H1 #H0
+>(npsucc_pred j) <pr_tls_succ <pr_tls_succ //
+qed.
+
+(* Note: parked for now
+lemma coafter_fwd_xpx_pushs:
+      ∀g2,f1,g,i,j. @❪i, g2❫ ≘ j → g2 ~⊚ ⫯*[i]⫯f1 ≘ g →
+      ∃∃f.  ⫰*[↑j]g2 ~⊚ f1 ≘ f & ⫯*[j]⫯f = g.
+#g2 #g1 #g #i #j #Hg2 <pushs_xn #Hg(coafter_fwd_pushs … Hg Hg2) #f #H0 destruct
+lapply (coafter_tls … Hg2 Hg) -Hg <tls_pushs <tls_pushs #Hf
+lapply (at_inv_tls … Hg2) -Hg2 #H
+lapply (coafter_eq_repl_fwd2 … Hf … H) -H -Hf #Hf
+elim (coafter_inv_ppx … Hf) [|*: // ] -Hf #g #Hg #H destruct
+/2 width=3 by ex2_intro/
+qed-.
+
+lemma coafter_fwd_xnx_pushs:
+      ∀g2,f1,g,i,j. @❪i, g2❫ ≘ j → g2 ~⊚ ⫯*[i]↑f1 ≘ g →
+      ∃∃f. ⫰*[↑j]g2 ~⊚ f1 ≘ f & ⫯*[j] ↑f = g.
+#g2 #g1 #g #i #j #Hg2 #Hg
+elim (coafter_fwd_pushs … Hg Hg2) #f #H0 destruct
+lapply (coafter_tls … Hg2 Hg) -Hg <tls_pushs <tls_pushs #Hf
+lapply (at_inv_tls … Hg2) -Hg2 #H
+lapply (coafter_eq_repl_fwd2 … Hf … H) -H -Hf #Hf
+elim (coafter_inv_pnx … Hf) [|*: // ] -Hf #g #Hg #H destruct
+/2 width=3 by ex2_intro/
+qed-.
+*)
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_uni_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_coafter_uni_pushs.ma
new file mode 100644 (file)
index 0000000..9eb8658
--- /dev/null
@@ -0,0 +1,29 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_pushs.ma".
+include "ground/relocation/pr_uni.ma".
+(* * it should not depend on pr_isi *)
+include "ground/relocation/pr_coafter_isi.ma".
+
+(* RELATIONAL CO-COMPOSITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_uni and pr_pushs ***********************************)
+
+(*** coafter_uni_sn *)
+lemma pr_coafter_uni_sn_pushs (n):
+      ∀f. 𝐮❨n❩ ~⊚ f ≘ ⫯*[n] f.
+#n @(nat_ind_succ … n) -n
+/2 width=5 by pr_coafter_isi_sn, pr_coafter_next/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_compose.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_compose.ma
new file mode 100644 (file)
index 0000000..0629472
--- /dev/null
@@ -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/relocation/pr_after.ma".
+
+(* RELATIONAL COMPOSITION FOR PARTIAL RELOCATION MAPS ***********************)
+
+corec definition pr_compose: pr_map → pr_map → pr_map.
+* * #g2 [ #f1 | * * #g1 ]
+[ @pr_next @(pr_compose g2 f1)
+| @pr_next @(pr_compose g2 g1)
+| @pr_push @(pr_compose g2 g1)
+]
+defined.
+
+interpretation
+  "functional composition (partial relocation maps)"
+  'compose f2 f1 = (pr_compose f2 f1).
+
+(* Basic constructions (specific) *******************************************)
+
+lemma pr_compose_unfold_refl (f2) (f1): ⫯(f2∘f1) = (⫯f2)∘(⫯f1).
+#f2 #f1
+<(stream_unfold … ((⫯f2)∘(⫯f1))) in ⊢ (???%); //
+qed.
+
+lemma pr_compose_unfold_push (f2) (f1): ↑(f2∘f1) = (⫯f2)∘(↑f1).
+#f2 #f1
+<(stream_unfold … ((⫯f2)∘(↑f1))) in ⊢ (???%); //
+qed.
+
+lemma pr_compose_unfold_next (f2) (f1):
+      ↑(f2∘f1) = (↑f2)∘f1.
+#f2 #f1
+<(stream_unfold … ((↑f2)∘f1)) in ⊢ (???%); //
+qed.
+
+(* Main constructions *******************************************************)
+
+corec theorem pr_after_compose (f2) (f1):
+              f2 ⊚ f1 ≘ f2∘f1.
+cases (pr_map_split_tl f2)*
+[ cases (pr_map_split_tl f1) * ]
+[ @pr_after_refl /2 width=7 by/
+| @pr_after_push /2 width=7 by/
+| @pr_after_next /2 width=5 by/
+]
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_eq.ma
new file mode 100644 (file)
index 0000000..610ba9c
--- /dev/null
@@ -0,0 +1,75 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/notation/relations/ideq_2.ma".
+include "ground/lib/stream_eq.ma".
+include "ground/relocation/pr_map.ma".
+
+(* EXTENSIONAL EQUIVALENCE FOR PARTIAL RELOCATION MAPS **********************)
+
+(*** eq *)
+coinductive pr_eq: relation pr_map ≝
+(*** eq_push *)
+| pr_eq_push (f1) (f2) (g1) (g2):
+  pr_eq f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → pr_eq g1 g2
+(*** eq_next *)
+| pr_eq_next (f1) (f2) (g1) (g2):
+  pr_eq f1 f2 → ↑f1 = g1 → ↑f2 = g2 → pr_eq g1 g2
+.
+
+interpretation
+  "extensional equivalence (partial relocation maps)"
+  'IdEq f1 f2 = (pr_eq f1 f2).
+
+(*** eq_repl *)
+definition pr_eq_repl (R:relation …) ≝
+           ∀f1,f2. f1 ≡ f2 → R f1 f2.
+
+(*** eq_repl_back *)
+definition pr_eq_repl_back (R:predicate …) ≝
+           ∀f1. R f1 → ∀f2. f1 ≡ f2 → R f2.
+
+(*** eq_repl_fwd *)
+definition pr_eq_repl_fwd (R:predicate …) ≝
+           ∀f1. R f1 → ∀f2. f2 ≡ f1 → R f2.
+
+(* Basic constructions ******************************************************)
+
+(*** eq_sym *)
+corec lemma pr_eq_sym: symmetric … pr_eq.
+#f1 #f2 * -f1 -f2
+#f1 #f2 #g1 #g2 #Hf #H1 #H2
+[ @(pr_eq_push … H2 H1) | @(pr_eq_next … H2 H1) ] -g2 -g1 /2 width=1 by/
+qed-.
+
+(*** eq_repl_sym *)
+lemma pr_eq_repl_sym (R):
+      pr_eq_repl_back R → pr_eq_repl_fwd R.
+/3 width=3 by pr_eq_sym/ qed-.
+
+(* Alternative definition with stream_eq (specific) *************************)
+
+alias symbol "subseteq" (instance 1) = "relation inclusion".
+
+corec lemma stream_eq_pr_eq: stream_eq … ⊆ pr_eq.
+* #b1 #f1 * #b2 #f2 #H
+cases (stream_eq_inv_cons_bi … H) -H [|*: // ] * -b2 #Hf
+cases b1 /3 width=5 by pr_eq_next, pr_eq_push/
+qed.
+
+corec lemma pr_eq_inv_stream_eq: pr_eq ⊆ stream_eq ….
+#g1 #g2 * -g1 -g2 #f1 #f2 #g1 #g2 #Hf * * -g1 -g2
+/3 width=1 by stream_eq_cons/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla.ma
new file mode 100644 (file)
index 0000000..54c81af
--- /dev/null
@@ -0,0 +1,81 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/rfun_c_2.ma".
+include "ground/arith/nat_succ.ma".
+include "ground/relocation/pr_isi.ma".
+
+(* FINITE COLENGTH ASSIGNMENT FOR PARTIAL RELOCATION MAPS *******************)
+
+(*** fcla *)
+inductive pr_fcla: relation2 pr_map nat ≝
+(*** fcla_isid *)
+| pr_fcla_isi (f): 𝐈❪f❫ → pr_fcla f (𝟎)
+(*** fcla_push *)
+| pr_fcla_push (f) (n): pr_fcla f n → pr_fcla (⫯f) n
+(*** fcla_next *)
+| pr_fcla_next (f) (n): pr_fcla f n → pr_fcla (↑f) (↑n)
+.
+
+interpretation
+  "finite colength assignment (partial relocation maps)"
+  'RFunC f n = (pr_fcla f n).
+
+(* Basic inversions *********************************************************)
+
+(*** fcla_inv_px *)
+lemma pr_fcla_inv_push (g) (m): 𝐂❪g❫ ≘ m → ∀f. ⫯f = g → 𝐂❪f❫ ≘ m.
+#g #m * -g -m
+[ /3 width=3 by pr_fcla_isi, pr_isi_inv_push/
+| #g #m #Hg #f #H >(eq_inv_pr_push_bi … H) -f //
+| #g #m #_ #f #H elim (eq_inv_pr_push_next … H)
+]
+qed-.
+
+(*** fcla_inv_nx *)
+lemma pr_fcla_inv_next (g) (m): 𝐂❪g❫ ≘ m → ∀f. ↑f = g → ∃∃n. 𝐂❪f❫ ≘ n & ↑n = m.
+#g #m * -g -m
+[ #g #Hg #f #H destruct
+  elim (pr_isi_inv_next … Hg) -Hg //
+| #g #m #_ #f #H elim (eq_inv_pr_next_push … H)
+| #g #m #Hg #f #H >(eq_inv_pr_next_bi …  H) -f
+  /2 width=3 by ex2_intro/
+]
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** cla_inv_nn *)
+lemma pr_cla_inv_next_succ (g) (m): 𝐂❪g❫ ≘ m → ∀f,n. ↑f = g → ↑n = m → 𝐂❪f❫ ≘ n.
+#g #m #H #f #n #H1 #H2 elim (pr_fcla_inv_next … H … H1) -g
+#x #Hf #H destruct <(eq_inv_nsucc_bi … H) -n //
+qed-.
+
+(*** cla_inv_np *)
+lemma pr_cla_inv_next_zero (g) (m): 𝐂❪g❫ ≘ m → ∀f. ↑f = g → 𝟎 = m → ⊥.
+#g #m #H #f #H1 elim (pr_fcla_inv_next … H … H1) -g
+#x #_ #H1 #H2 destruct /2 width=2 by eq_inv_zero_nsucc/
+qed-.
+
+(*** fcla_inv_xp *)
+lemma pr_fcla_inv_zero (g) (m): 𝐂❪g❫ ≘ m → 𝟎 = m → 𝐈❪g❫.
+#g #m #H elim H -g -m /3 width=3 by pr_isi_push/
+#g #m #_ #_ #H destruct elim (eq_inv_zero_nsucc … H)
+qed-.
+
+(*** fcla_inv_isid *)
+lemma pr_fcla_inv_isi (g) (m): 𝐂❪g❫ ≘ m → 𝐈❪g❫ → 𝟎 = m.
+#f #n #H elim H -f -n /3 width=3 by pr_isi_inv_push/
+#f #n #_ #_ #H elim (pr_isi_inv_next … H) -H //
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_eq.ma
new file mode 100644 (file)
index 0000000..0ad95fa
--- /dev/null
@@ -0,0 +1,34 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi_eq.ma".
+include "ground/relocation/pr_fcla.ma".
+
+(* FINITE COLENGTH ASSIGNMENT FOR PARTIAL RELOCATION MAPS *******************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** fcla_eq_repl_back *)
+lemma pr_fcla_eq_repl_back (n):
+      pr_eq_repl_back … (λf. 𝐂❪f❫ ≘ n).
+#n #f1 #H elim H -f1 -n /3 width=3 by pr_fcla_isi, pr_isi_eq_repl_back/
+#f1 #n #_ #IH #g2 #H [ elim (pr_eq_inv_push_sn … H) | elim (pr_eq_inv_next_sn … H) ] -H
+/3 width=3 by pr_fcla_push, pr_fcla_next/
+qed-.
+
+(*** fcla_eq_repl_fwd *)
+lemma fcla_eq_repl_fwd (n):
+      pr_eq_repl_fwd … (λf. 𝐂❪f❫ ≘ n).
+#n @pr_eq_repl_sym /2 width=3 by pr_fcla_eq_repl_back/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_fcla.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_fcla.ma
new file mode 100644 (file)
index 0000000..8aa59f9
--- /dev/null
@@ -0,0 +1,30 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_fcla.ma".
+
+(* FINITE COLENGTH ASSIGNMENT FOR PARTIAL RELOCATION MAPS *******************)
+
+(* Main destructions ********************************************************)
+
+(*** fcla_mono *)
+theorem pr_fcla_mono (f):
+        ∀n1. 𝐂❪f❫ ≘ n1 → ∀n2. 𝐂❪f❫ ≘ n2 → n1 = n2.
+#f #n #H elim H -f -n
+[ /2 width=3 by pr_fcla_inv_isi/
+| /3 width=3 by pr_fcla_inv_push/
+| #f #n1 #_ #IH #n2 #H elim (pr_fcla_inv_next … H) -H [2,3 : // ]
+  #g #Hf #H destruct >IH //
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_fcla_uni.ma
new file mode 100644 (file)
index 0000000..60fbf89
--- /dev/null
@@ -0,0 +1,26 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi_uni.ma".
+include "ground/relocation/pr_fcla.ma".
+
+(* FINITE COLENGTH ASSIGNMENT FOR PARTIAL RELOCATION MAPS *******************)
+
+(* Constructions with pr_uni ************************************************)
+
+(*** fcla_uni *)
+lemma pr_fcla_uni (n): 𝐂❪𝐮❨n❩❫ ≘ n.
+#n @(nat_ind_succ … n) -n
+/2 width=1 by pr_fcla_isi, pr_fcla_next/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_id.ma
new file mode 100644 (file)
index 0000000..3b2b5b2
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/functions/element_i_0.ma".
+include "ground/relocation/pr_map.ma".
+
+(* IDENTITY ELEMENT FOR PARTIAL RELOCATION MAPS *****************************)
+
+(*** id *)
+corec definition pr_id: pr_map ≝ ⫯pr_id.
+
+interpretation
+  "identity element (partial relocation streams)"
+  'ElementI = (pr_id).
+
+(* Basic constructions (specific) *******************************************)
+
+(*** id_rew *)
+lemma pr_id_unfold: ⫯𝐢 = 𝐢.
+<(stream_unfold … (𝐢)) in ⊢ (???%); //
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_id_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_id_eq.ma
new file mode 100644 (file)
index 0000000..1e1fd6a
--- /dev/null
@@ -0,0 +1,39 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_id.ma".
+
+(* IDENTITY ELEMENT FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Constructions with pr_eq *************************************************)
+
+corec lemma pr_id_eq (f): ⫯f ≡ f → 𝐢 ≡ f.
+cases pr_id_unfold #Hf
+cases (pr_eq_inv_push_sn … Hf) [|*: // ] #_ #H
+cases H in Hf; -H #Hf
+@pr_eq_push [3:|*: // ]
+/3 width=5 by pr_eq_inv_push_bi/
+qed.
+
+(* Inversions with pr_eq ****************************************************)
+
+(* Note: this has the same proof of the previous *)
+corec lemma pr_id_inv_eq (f): 𝐢 ≡ f → ⫯f ≡ f.
+cases pr_id_unfold #Hf
+cases (pr_eq_inv_push_sn … Hf) [|*: // ] #_ #H
+cases H in Hf; -H #Hf
+@pr_eq_push [3:|*: // ]
+/3 width=5 by pr_eq_inv_push_bi/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd.ma
new file mode 100644 (file)
index 0000000..cc95909
--- /dev/null
@@ -0,0 +1,51 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/relations/predicate_omega_1.ma".
+include "ground/relocation/pr_map.ma".
+
+(* DIVERGENCE CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(*** isdiv *)
+coinductive pr_isd: predicate pr_map ≝
+(*** isdiv_next *)
+| pr_isd_next (f) (g):
+  pr_isd f → ↑f = g → pr_isd g
+.
+
+interpretation
+  "divergence condition (partial relocation maps)"
+  'PredicateOmega f = (pr_isd f).
+
+(* Basic inversions *********************************************************)
+
+(*** isdiv_inv_gen *)
+lemma pr_isd_inv_gen (g): 𝛀❪g❫ → ∃∃f. 𝛀❪f❫ & ↑f = g.
+#g * -g
+#f #g #Hf * /2 width=3 by ex2_intro/
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** isdiv_inv_next *)
+lemma pr_isd_inv_next (g): 𝛀❪g❫ → ∀f. ↑f = g → 𝛀❪f❫.
+#g #H elim (pr_isd_inv_gen … H) -H
+#f #Hf * -g #g #H >(eq_inv_pr_next_bi … H) -H //
+qed-.
+
+(*** isdiv_inv_push *)
+lemma pr_isd_inv_push (g): 𝛀❪g❫ → ∀f. ⫯f = g → ⊥.
+#g #H elim (pr_isd_inv_gen … H) -H
+#f #Hf * -g #g #H elim (eq_inv_pr_push_next … H)
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_eq.ma
new file mode 100644 (file)
index 0000000..49a304e
--- /dev/null
@@ -0,0 +1,57 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_tl_eq_eq.ma".
+include "ground/relocation/pr_isd.ma".
+
+(* DIVERGENCE CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** isdiv_eq_repl_back *)
+corec lemma pr_isd_eq_repl_back:
+            pr_eq_repl_back … pr_isd.
+#f1 #H cases (pr_isd_inv_gen … H) -H
+#g1 #Hg1 #H1 #f2 #Hf cases (pr_eq_inv_next_sn … Hf … H1) -f1
+/3 width=3 by pr_isd_next/
+qed-.
+
+(*** isdiv_eq_repl_fwd *)
+lemma pr_isd_eq_repl_fwd:
+      pr_eq_repl_fwd … pr_isd.
+/3 width=3 by pr_isd_eq_repl_back, pr_eq_repl_sym/ qed-.
+
+(* Main inversions with pr_eq ***********************************************)
+
+(*** isdiv_inv_eq_repl *)
+corec theorem pr_isd_inv_eq_repl (g1) (g2): 𝛀❪g1❫ → 𝛀❪g2❫ → g1 ≡ g2.
+#H1 #H2
+cases (pr_isd_inv_gen … H1) -H1
+cases (pr_isd_inv_gen … H2) -H2
+/3 width=5 by pr_eq_next/
+qed-.
+
+(* Alternative definition with pr_eq ****************************************)
+
+(*** eq_next_isdiv *)
+corec lemma pr_eq_next_isd (f): ↑f ≡ f → 𝛀❪f❫.
+#H cases (pr_eq_inv_next_sn … H) -H
+/4 width=3 by pr_isd_next, pr_eq_trans/
+qed.
+
+(*** eq_next_inv_isdiv *)
+corec lemma pr_eq_next_inv_isd (g): 𝛀❪g❫ → ↑g ≡ g.
+* -g #f #g #Hf *
+/3 width=5 by pr_eq_next/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_nexts.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_nexts.ma
new file mode 100644 (file)
index 0000000..c7dcd74
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_nexts.ma".
+include "ground/relocation/pr_isd.ma".
+
+(* DIVERGENCE CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_nexts **********************************************)
+
+(*** isdiv_nexts *)
+lemma pr_isd_nexts (n) (f): 𝛀❪f❫ → 𝛀❪↑*[n]f❫.
+#n @(nat_ind_succ … n) -n /3 width=3 by pr_isd_next/
+qed.
+
+(* Inversions with pr_nexts *************************************************)
+
+(*** isdiv_inv_nexts *)
+lemma pr_isd_inv_nexts (n) (g): 𝛀❪↑*[n]g❫ → 𝛀❪g❫.
+#n @(nat_ind_succ … n) -n /3 width=3 by pr_isd_inv_next/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_tl.ma
new file mode 100644 (file)
index 0000000..50f83a4
--- /dev/null
@@ -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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl.ma".
+include "ground/relocation/pr_isd.ma".
+
+(* DIVERGENCE CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_tl *************************************************)
+
+(*** isdiv_tl *)
+lemma pr_isd_tl (f): 𝛀❪f❫ → 𝛀❪⫰f❫.
+#f cases (pr_map_split_tl f) * #H
+[ elim (pr_isd_inv_push … H) -H //
+| /2 width=3 by pr_isd_inv_next/
+]
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isd_tls.ma
new file mode 100644 (file)
index 0000000..4f3d80e
--- /dev/null
@@ -0,0 +1,25 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_isd_tl.ma".
+
+(* DIVERGENCE CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_tls ************************************************)
+
+(*** isdiv_tls *)
+lemma pr_isd_tls (n) (g): 𝛀❪g❫ → 𝛀❪⫰*[n]g❫.
+#n @(nat_ind_succ … n) -n /3 width=1 by pr_isd_tl/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf.ma
new file mode 100644 (file)
index 0000000..3a68c00
--- /dev/null
@@ -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/notation/relations/predicate_f_1.ma".
+include "ground/relocation/pr_fcla.ma".
+
+(* FINITE COLENGTH CONDITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(*** isfin *)
+definition pr_isf: predicate pr_map ≝
+           λf. ∃n. 𝐂❪f❫ ≘ n.
+
+interpretation
+  "finite colength condition (partial relocation maps)"
+  'PredicateF f = (pr_isf f).
+
+(* Basic eliminations *******************************************************)
+
+(*** isfin_ind *)
+lemma pr_isf_ind (Q:predicate …):
+      (∀f.  𝐈❪f❫ → Q f) →
+      (∀f. 𝐅❪f❫ → Q f → Q (⫯f)) →
+      (∀f. 𝐅❪f❫ → Q f → Q (↑f)) →
+      ∀f. 𝐅❪f❫ → Q f.
+#Q #IH1 #IH2 #IH3 #f #H elim H -H
+#n #H elim H -f -n /3 width=2 by ex_intro/
+qed-.
+
+(* Basic inversions *********************************************************)
+
+(*** isfin_inv_push *)
+lemma pr_isf_inv_push (g): 𝐅❪g❫ → ∀f. ⫯f = g → 𝐅❪f❫.
+#g * /3 width=4 by pr_fcla_inv_push, ex_intro/
+qed-.
+
+(*** isfin_inv_next *)
+lemma pr_isf_inv_next (g): 𝐅❪g❫ → ∀f. ↑f = g → 𝐅❪f❫.
+#g * #n #H #f #H0 elim (pr_fcla_inv_next … H … H0) -g
+/2 width=2 by ex_intro/
+qed-.
+
+(* Basic constructions ******************************************************)
+
+(*** isfin_isid *)
+lemma pr_isf_isi (f): 𝐈❪f❫ → 𝐅❪f❫.
+/3 width=2 by pr_fcla_isi, ex_intro/ qed.
+
+(*** isfin_push *)
+lemma pr_isf_push (f): 𝐅❪f❫ → 𝐅❪⫯f❫.
+#f * /3 width=2 by pr_fcla_push, ex_intro/
+qed.
+
+(*** isfin_next *)
+lemma pr_isf_next (f): 𝐅❪f❫ → 𝐅❪↑f❫.
+#f * /3 width=2 by pr_fcla_next, ex_intro/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_eq.ma
new file mode 100644 (file)
index 0000000..11a6846
--- /dev/null
@@ -0,0 +1,30 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_fcla_eq.ma".
+include "ground/relocation/pr_isf.ma".
+
+(* FINITE COLENGTH CONDITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** isfin_eq_repl_back *)
+lemma pr_isf_eq_repl_back:
+      pr_eq_repl_back … pr_isf.
+#f1 * /3 width=4 by pr_fcla_eq_repl_back, ex_intro/
+qed-.
+
+(*** isfin_eq_repl_fwd *)
+lemma pr_isf_eq_repl_fwd: pr_eq_repl_fwd … pr_isf.
+/3 width=3 by pr_isf_eq_repl_back, pr_eq_repl_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_isu.ma
new file mode 100644 (file)
index 0000000..e6a1b74
--- /dev/null
@@ -0,0 +1,26 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isu.ma".
+include "ground/relocation/pr_isf.ma".
+
+(* FINITE COLENGTH CONDITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_isu ************************************************)
+
+(*** isuni_fwd_isfin *)
+lemma pr_isf_isu (f): 𝐔❪f❫ → 𝐅❪f❫.
+#f #H elim H -f
+/3 width=1 by pr_isf_next, pr_isf_isi/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_pushs.ma
new file mode 100644 (file)
index 0000000..e084ab7
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_pushs.ma".
+include "ground/relocation/pr_isf.ma".
+
+(* FINITE COLENGTH CONDITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_pushs **********************************************)
+
+(*** isfin_pushs *)
+lemma pr_isf_pushs (n) (f): 𝐅❪f❫ → 𝐅❪⫯*[n]f❫.
+#n @(nat_ind_succ … n) -n /3 width=3 by pr_isf_push/
+qed.
+
+(* Inversions with pr_pushs *************************************************)
+
+(*** isfin_inv_pushs *)
+lemma pr_isf_inv_pushs (n) (g): 𝐅❪⫯*[n]g❫ → 𝐅❪g❫.
+#n @(nat_ind_succ … n) -n /3 width=3 by pr_isf_inv_push/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_tl.ma
new file mode 100644 (file)
index 0000000..3bb1a4e
--- /dev/null
@@ -0,0 +1,34 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl.ma".
+include "ground/relocation/pr_isf.ma".
+
+(* FINITE COLENGTH CONDITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_tl *************************************************)
+
+(*** isfin_tl *)
+lemma pr_isf_tl (f): 𝐅❪f❫ → 𝐅❪⫰f❫.
+#f elim (pr_map_split_tl f) * #Hf
+/3 width=3 by pr_isf_inv_push, pr_isf_inv_next/
+qed.
+
+(* Inversions with pr_tl ****************************************************)
+
+(*** isfin_inv_tl *)
+lemma pr_isf_inv_tl (g): 𝐅❪⫰g❫ → 𝐅❪g❫.
+#f elim (pr_map_split_tl f) * #Hf
+/2 width=1 by pr_isf_next, pr_isf_push/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_tls.ma
new file mode 100644 (file)
index 0000000..4fe4051
--- /dev/null
@@ -0,0 +1,31 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_isf_tl.ma".
+
+(* FINITE COLENGTH CONDITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_tls ************************************************)
+
+lemma pr_isf_tls (n) (f): 𝐅❪f❫ → 𝐅❪⫰*[n]f❫.
+#n @(nat_ind_succ … n) -n /3 width=1 by pr_isf_tl/
+qed.
+
+(* Inversions with pr_tls ***************************************************)
+
+(*** isfin_inv_tls *)
+lemma pr_isf_inv_tls (n) (g): 𝐅❪⫰*[n]g❫ → 𝐅❪g❫.
+#n @(nat_ind_succ … n) -n /3 width=1 by pr_isf_inv_tl/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isf_uni.ma
new file mode 100644 (file)
index 0000000..74132ec
--- /dev/null
@@ -0,0 +1,24 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_fcla_uni.ma".
+include "ground/relocation/pr_isf.ma".
+
+(* FINITE COLENGTH CONDITION FOR PARTIAL RELOCATION MAPS ********************)
+
+(* Constructions with pr_uni ************************************************)
+
+(*** isfin_uni *)
+lemma pr_isf_uni (n): 𝐅❪𝐮❨n❩❫.
+/3 width=2 by ex_intro/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi.ma
new file mode 100644 (file)
index 0000000..ec89ac7
--- /dev/null
@@ -0,0 +1,54 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/predicate_i_1.ma".
+include "ground/relocation/pr_map.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(*** isid *)
+coinductive pr_isi: predicate pr_map ≝
+(*** isid_push *)
+| pr_isi_push (f) (g):
+  pr_isi f → ⫯f = g → pr_isi g
+.
+
+interpretation
+  "identity condition (partial relocation maps)"
+  'PredicateI f = (pr_isi f).
+
+(* Basic inversions *********************************************************)
+
+(*** isid_inv_gen *)
+lemma pr_isi_inv_gen (g): 𝐈❪g❫ → ∃∃f. 𝐈❪f❫ & ⫯f = g.
+#g * -g
+#f #g #Hf /2 width=3 by ex2_intro/
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** isid_inv_push *)
+lemma pr_isi_inv_push (g): 𝐈❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫.
+#g #H
+elim (pr_isi_inv_gen … H) -H #f #Hf
+* -g #g #H
+>(eq_inv_pr_push_bi … H) -H //
+qed-.
+
+(*** isid_inv_next *)
+lemma pr_isi_inv_next (g): 𝐈❪g❫ → ∀f. ↑f = g → ⊥.
+#g #H
+elim (pr_isi_inv_gen … H) -H #f #Hf
+* -g #g #H elim (eq_inv_pr_next_push … H)
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_eq.ma
new file mode 100644 (file)
index 0000000..b532153
--- /dev/null
@@ -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/relocation/pr_tl_eq_eq.ma".
+include "ground/relocation/pr_isi.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** isid_eq_repl_back *)
+corec lemma pr_isi_eq_repl_back:
+            pr_eq_repl_back … pr_isi.
+#f1 #H
+cases (pr_isi_inv_gen … H) -H #g1 #Hg1 #H1 #f2 #Hf
+cases (pr_eq_inv_push_sn … Hf … H1) -f1
+/3 width=3 by pr_isi_push/
+qed-.
+
+(*** isid_eq_repl_fwd *)
+lemma pr_isi_eq_repl_fwd:
+      pr_eq_repl_fwd … pr_isi.
+/3 width=3 by pr_isi_eq_repl_back, pr_eq_repl_sym/ qed-.
+
+(* Main inversions with pr_eq ***********************************************)
+
+(*** isid_inv_eq_repl *)
+corec theorem pr_isi_inv_eq_repl (g1) (g2): 𝐈❪g1❫ → 𝐈❪g2❫ → g1 ≡ g2.
+#H1 #H2
+cases (pr_isi_inv_gen … H1) -H1
+cases (pr_isi_inv_gen … H2) -H2
+/3 width=5 by pr_eq_push/
+qed-.
+
+(* Alternative definition with pr_eq ****************************************)
+
+(*** eq_push_isid *)
+corec lemma pr_eq_push_isi (f): ⫯f ≡ f → 𝐈❪f❫.
+#H cases (pr_eq_inv_push_sn … H) -H
+/4 width=3 by pr_isi_push, pr_eq_trans/
+qed.
+
+(*** eq_push_inv_isid *)
+corec lemma pr_isi_inv_eq_push (g): 𝐈❪g❫ → ⫯g ≡ g.
+* -g #f #g #Hf *
+/3 width=5 by pr_eq_push/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_id.ma
new file mode 100644 (file)
index 0000000..8b672e8
--- /dev/null
@@ -0,0 +1,34 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_id.ma".
+include "ground/relocation/pr_isi_eq.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Constructions with pr_id *************************************************)
+
+(*** id_isid *)
+lemma pr_isi_id: 𝐈❪𝐢❫.
+/2 width=1 by pr_eq_push_isi/ qed.
+
+(* Alternative definition with pr_id and pr_eq ******************************)
+
+(*** eq_id_isid *)
+lemma pr_eq_id_isi (f): 𝐢 ≡ f → 𝐈❪f❫.
+/2 width=3 by pr_isi_eq_repl_back/ qed.
+
+(*** eq_id_inv_isid *)
+lemma pr_isi_inv_eq_id (f): 𝐈❪f❫ → 𝐢 ≡ f.
+/2 width=1 by pr_isi_inv_eq_repl/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_pat.ma
new file mode 100644 (file)
index 0000000..7ee376e
--- /dev/null
@@ -0,0 +1,39 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi_id.ma".
+include "ground/relocation/pr_pat_pat_id.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Advanced constructions with pr_isi ***************************************)
+
+(*** isid_at *)
+lemma pr_isi_pat (f): (∀i. @❪i,f❫ ≘ i) → 𝐈❪f❫.
+/3 width=1 by pr_eq_id_isi, pr_pat_inv_id/
+qed.
+
+(* Inversions with pr_pat ***************************************************)
+
+(*** isid_inv_at *)
+lemma pr_isi_inv_pat (f) (i): 𝐈❪f❫ → @❪i,f❫ ≘ i.
+/3 width=3 by pr_isi_inv_eq_id, pr_pat_id, pr_pat_eq_repl_back/
+qed-.
+
+(* Destructions with pr_pat *************************************************)
+
+(*** isid_inv_at_mono *)
+lemma pr_isi_pat_des (f) (i1) (i2): 𝐈❪f❫ → @❪i1,f❫ ≘ i2 → i1 = i2.
+/4 width=3 by pr_isi_inv_eq_id, pr_pat_id_des, pr_pat_eq_repl_fwd/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_pushs.ma
new file mode 100644 (file)
index 0000000..10b815f
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_pushs.ma".
+include "ground/relocation/pr_isi.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Constructions with pr_pushs **********************************************)
+
+(*** isid_pushs *)
+lemma pr_isi_pushs (n) (f): 𝐈❪f❫ → 𝐈❪⫯*[n]f❫.
+#n @(nat_ind_succ … n) -n /3 width=3 by pr_isi_push/
+qed.
+
+(* Inversions with pr_pushs *************************************************)
+
+(*** isid_inv_pushs *)
+lemma pr_isi_inv_pushs (n) (g): 𝐈❪⫯*[n]g❫ → 𝐈❪g❫.
+#n @(nat_ind_succ … n) -n /3 width=3 by pr_isi_inv_push/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_tl.ma
new file mode 100644 (file)
index 0000000..466c165
--- /dev/null
@@ -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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl.ma".
+include "ground/relocation/pr_isi.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Constructions with pr_tl *************************************************)
+
+(*** isid_tl *)
+lemma pr_isi_tl (f): 𝐈❪f❫ → 𝐈❪⫰f❫.
+#f cases (pr_map_split_tl f) * #H
+[ /2 width=3 by pr_isi_inv_push/
+| elim (pr_isi_inv_next … H) -H //
+]
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_tls.ma
new file mode 100644 (file)
index 0000000..9bc8fea
--- /dev/null
@@ -0,0 +1,25 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_isi_tl.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Constructions with pr_tls ************************************************)
+
+(*** isid_tls *)
+lemma pr_isi_tls (n) (f): 𝐈❪f❫ → 𝐈❪⫰*[n]f❫.
+#n @(nat_ind_succ … n) -n /3 width=1 by pr_isi_tl/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isi_uni.ma
new file mode 100644 (file)
index 0000000..122b843
--- /dev/null
@@ -0,0 +1,30 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_uni.ma".
+include "ground/relocation/pr_isi_id.ma".
+
+(* IDENTITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Constructions with pr_isi ************************************************)
+
+(*** uni_inv_isid uni_isi *)
+lemma pr_uni_isi (f): 𝐮❨𝟎❩ ≡ f → 𝐈❪f❫.
+/2 width=1 by pr_eq_id_isi/ qed.
+
+(* Inversions with pr_isi ***************************************************)
+
+(*** uni_isid isi_inv_uni *)
+lemma pr_isi_inv_uni (f): 𝐈❪f❫ → 𝐮❨𝟎❩ ≡ f.
+/2 width=1 by pr_isi_inv_eq_id/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist.ma
new file mode 100644 (file)
index 0000000..c1ab343
--- /dev/null
@@ -0,0 +1,48 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/relations/predicate_t_1.ma".
+include "ground/relocation/pr_pat.ma".
+
+(* TOTALITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(*** istot *)
+definition pr_ist: predicate pr_map ≝
+           λf. ∀i. ∃j. @❪i,f❫ ≘ j.
+
+interpretation
+  "totality condition (partial relocation maps)"
+  'PredicateT f = (pr_ist f).
+
+(* Basic inversions *********************************************************)
+
+(*** istot_inv_push *)
+lemma pr_ist_inv_push (g): 𝐓❪g❫ → ∀f. ⫯f = g → 𝐓❪f❫.
+#g #Hg #f #H #i elim (Hg (↑i)) -Hg
+#j #Hg elim (pr_pat_inv_succ_push … Hg … H) -Hg -H /2 width=3 by ex_intro/
+qed-.
+
+(*** istot_inv_next *)
+lemma pr_ist_inv_next (g): 𝐓❪g❫ → ∀f. ↑f = g → 𝐓❪f❫.
+#g #Hg #f #H #i elim (Hg i) -Hg
+#j #Hg elim (pr_pat_inv_next … Hg … H) -Hg -H /2 width=2 by ex_intro/
+qed-.
+
+(* Constructions with pr_tl *************************************************)
+
+(*** istot_tl *)
+lemma pr_ist_tl (f): 𝐓❪f❫ → 𝐓❪⫰f❫.
+#f cases (pr_map_split_tl f) *
+/2 width=3 by pr_ist_inv_next, pr_ist_inv_push/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_isi.ma
new file mode 100644 (file)
index 0000000..ce24651
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi_pat.ma".
+include "ground/relocation/pr_ist.ma".
+
+(* TOTALITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Advanced constructions with pr_isi ***************************************)
+
+(*** isid_at_total *)
+lemma pr_isi_pat_total: ∀f. 𝐓❪f❫ → (∀i1,i2. @❪i1,f❫ ≘ i2 → i1 = i2) → 𝐈❪f❫.
+#f #H1f #H2f @pr_isi_pat
+#i lapply (H1f i) -H1f *
+#j #Hf >(H2f … Hf) in ⊢ (???%); -H2f //
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_ist.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_ist.ma
new file mode 100644 (file)
index 0000000..1d76991
--- /dev/null
@@ -0,0 +1,68 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_eq.ma".
+include "ground/relocation/pr_pat_lt.ma".
+include "ground/relocation/pr_pat_pat.ma".
+include "ground/relocation/pr_ist.ma".
+
+(* TOTALITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Advanced constructions with pr_pat ***************************************)
+
+(*** at_dec *)
+lemma pr_pat_dec (f) (i1) (i2): 𝐓❪f❫ → Decidable (@❪i1,f❫ ≘ i2).
+#f #i1 #i2 #Hf lapply (Hf i1) -Hf *
+#j2 #Hf elim (eq_pnat_dec i2 j2)
+[ #H destruct /2 width=1 by or_introl/
+| /4 width=6 by pr_pat_mono, or_intror/
+]
+qed-.
+
+(*** is_at_dec *)
+lemma is_pr_pat_dec (f) (i2): 𝐓❪f❫ → Decidable (∃i1. @❪i1,f❫ ≘ i2).
+#f #i2 #Hf
+lapply (dec_plt (λi1.@❪i1,f❫ ≘ i2) … (↑i2)) [| * ]
+[ /2 width=1 by pr_pat_dec/
+| * /3 width=2 by ex_intro, or_introl/
+| #H @or_intror * #i1 #Hi12
+  /5 width=3 by pr_pat_increasing, plt_succ_dx, ex2_intro/
+]
+qed-.
+
+(* Main destructions with pr_pat ********************************************)
+
+(*** at_ext *)
+corec theorem pr_eq_ext_pat (f1) (f2): 𝐓❪f1❫ → 𝐓❪f2❫ →
+              (∀i,i1,i2. @❪i,f1❫ ≘ i1 → @❪i,f2❫ ≘ i2 → i1 = i2) →
+              f1 ≡ f2.
+cases (pr_map_split_tl f1) #H1
+cases (pr_map_split_tl f2) #H2
+#Hf1 #Hf2 #Hi
+[ @(pr_eq_push … H1 H2) @pr_eq_ext_pat -pr_eq_ext_pat
+  [3:|*: /2 width=3 by pr_ist_inv_push/ ] -Hf1 -Hf2 #i #i1 #i2 #Hg1 #Hg2
+  lapply (Hi (↑i) (↑i1) (↑i2) ??) /2 width=7 by pr_pat_push/
+| cases (Hf2 (𝟏)) -Hf1 -Hf2 -pr_eq_ext_pat
+  #j2 #Hf2 cases (pr_pat_increasing_strict … Hf2 … H2) -H2
+  lapply (Hi (𝟏) (𝟏) j2 … Hf2) /2 width=2 by pr_pat_refl/ -Hi -Hf2 -H1
+  #H2 #H cases (plt_ge_false … H) -H //
+| cases (Hf1 (𝟏)) -Hf1 -Hf2 -pr_eq_ext_pat
+  #j1 #Hf1 cases (pr_pat_increasing_strict … Hf1 … H1) -H1
+  lapply (Hi (𝟏) j1 (𝟏) Hf1 ?) /2 width=2 by pr_pat_refl/ -Hi -Hf1 -H2
+  #H1 #H cases (plt_ge_false … H) -H //
+| @(pr_eq_next … H1 H2) @pr_eq_ext_pat -pr_eq_ext_pat
+  [3:|*: /2 width=3 by pr_ist_inv_next/ ] -Hf1 -Hf2 #i #i1 #i2 #Hg1 #Hg2
+  lapply (Hi i (↑i1) (↑i2) ??) /2 width=5 by pr_pat_next/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_ist_tls.ma
new file mode 100644 (file)
index 0000000..7a75563
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_ist.ma".
+
+(* TOTALITY CONDITION FOR PARTIAL RELOCATION MAPS ***************************)
+
+(* Constructions with pr_tls ************************************************)
+
+(*** istot_tls *)
+lemma pr_ist_tls (n) (f): 𝐓❪f❫ → 𝐓❪⫰*[n]f❫.
+#n @(nat_ind_succ … n) -n //
+#n #IH #f #Hf <pr_tls_succ
+/3 width=1 by pr_ist_tl/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isu.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isu.ma
new file mode 100644 (file)
index 0000000..5fdee71
--- /dev/null
@@ -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/predicate_u_1.ma".
+include "ground/relocation/pr_isi.ma".
+
+(* UNIFORMITY CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(*** isuni *)
+inductive pr_isu: predicate pr_map ≝
+(*** isuni_isid *)
+| pr_isu_isi (f): 𝐈❪f❫ → pr_isu f
+(*** isuni_next *)
+| pr_isu_next (f): pr_isu f → ∀g. ↑f = g → pr_isu g
+.
+
+interpretation
+  "uniformity condition (partial relocation maps)"
+  'PredicateU f = (pr_isu f).
+
+(* Basic inversions *********************************************************)
+
+(*** isuni_inv_push *)
+lemma pr_isu_inv_push (g): 𝐔❪g❫ → ∀f. ⫯f = g → 𝐈❪f❫.
+#g * -g
+[ /2 width=3 by pr_isi_inv_push/
+| #f #_ #g #H #x #Hx destruct
+  elim (eq_inv_pr_push_next … Hx)
+]
+qed-.
+
+(*** isuni_inv_next *)
+lemma pr_isu_inv_next (g): 𝐔❪g❫ → ∀f. ↑f = g → 𝐔❪f❫.
+#g * -g #f #Hf
+[ #x #Hx elim (pr_isi_inv_next … Hf … Hx)
+| #g #H #x #Hx destruct
+  >(eq_inv_pr_next_bi … Hx) -x //
+]
+qed-.
+
+(* Basic destructions *******************************************************)
+
+(*** isuni_fwd_push *)
+lemma pr_isu_fwd_push (g): 𝐔❪g❫ → ∀f. ⫯f = g → 𝐔❪f❫.
+/3 width=3 by pr_isu_inv_push, pr_isu_isi/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isu_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isu_tl.ma
new file mode 100644 (file)
index 0000000..80bff5a
--- /dev/null
@@ -0,0 +1,35 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl.ma".
+include "ground/relocation/pr_isu.ma".
+
+(* UNIFORMITY CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_tl *************************************************)
+
+lemma pr_isu_tl (f): 𝐔❪f❫ → 𝐔❪⫰f❫.
+#f cases (pr_map_split_tl f) * #H
+[ /3 width=3 by pr_isu_inv_push, pr_isu_isi/
+| /2 width=3 by pr_isu_inv_next/
+]
+qed.
+
+(* Advanced inversions ******************************************************)
+
+(*** isuni_split *)
+lemma pr_isu_split (g): 𝐔❪g❫ → ∨∨ (∃∃f. 𝐈❪f❫ & ⫯f = g) | (∃∃f.𝐔❪f❫ & ↑f = g).
+#g elim (pr_map_split_tl g) * #H
+/4 width=3 by pr_isu_inv_next, pr_isu_inv_push, or_introl, or_intror, ex2_intro/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_isu_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_isu_uni.ma
new file mode 100644 (file)
index 0000000..7ff9c2e
--- /dev/null
@@ -0,0 +1,51 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi_uni.ma".
+include "ground/relocation/pr_isu.ma".
+
+(* UNIFORMITY CONDITION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_uni ************************************************)
+
+(*** isuni_uni *)
+lemma pr_isu_uni (n): 𝐔❪𝐮❨n❩❫.
+#n @(nat_ind_succ … n) -n
+/3 width=3 by pr_isu_isi, pr_isu_next/
+qed.
+
+(*** uni_inv_isuni *)
+lemma pr_isu_eq_repl_back:
+      pr_eq_repl_back … pr_isu.
+#f1 #H elim H -f1
+[ /3 width=3 by pr_isu_isi, pr_isi_eq_repl_back/
+| #f1 #_ #g1 * #IH #f2 #H -g1
+  elim (pr_eq_inv_next_sn … H) -H
+  /3 width=3 by pr_isu_next/
+]
+qed-.
+
+lemma pr_isu_eq_repl_fwd:
+      pr_eq_repl_fwd … pr_isu.
+/3 width=3 by pr_isu_eq_repl_back, pr_eq_repl_sym/ qed-.
+
+(* Inversions with pr_uni ***************************************************)
+
+(*** uni_isuni *)
+lemma pr_isu_inv_uni (f): 𝐔❪f❫ → ∃n. 𝐮❨n❩ ≡ f.
+#f #H elim H -f
+[ /3 width=2 by pr_isi_inv_uni, ex_intro/
+| #f #_ #g #H * /3 width=6 by pr_eq_next, ex_intro/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_map.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_map.ma
new file mode 100644 (file)
index 0000000..40589cc
--- /dev/null
@@ -0,0 +1,69 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/upspoon_1.ma".
+include "ground/notation/functions/uparrow_1.ma".
+include "ground/lib/stream.ma".
+include "ground/lib/bool.ma".
+
+(* PARTIAL RELOCATION MAPS **************************************************)
+
+(*** rtmap *)
+definition pr_map: Type[0] ≝ stream bool.
+
+(*** push *)
+definition pr_push (f): pr_map ≝ Ⓕ⨮f.
+
+interpretation
+  "push (partial relocation maps)"
+  'UpSpoon f = (pr_push f).
+
+(*** next *)
+definition pr_next (f): pr_map ≝ Ⓣ⨮f.
+
+interpretation
+  "next (partial relocation maps)"
+  'UpArrow f = (pr_next f).
+
+(* Basic constructions (specific) *******************************************)
+
+(*** push_rew *)
+lemma pr_push_unfold (f): Ⓕ⨮f = ⫯f.
+// qed.
+
+(*** next_rew *)
+lemma pr_next_unfold (f): Ⓣ⨮f = ↑f.
+// qed.
+
+(* Basic inversions *********************************************************)
+
+(*** injective_push *)
+lemma eq_inv_pr_push_bi: injective ? ? pr_push.
+#f1 #f2 <pr_push_unfold <pr_push_unfold #H destruct //
+qed-.
+
+(*** discr_push_next *)
+lemma eq_inv_pr_push_next (f1) (f2): ⫯f1 = ↑f2 → ⊥.
+#f1 #f2 <pr_push_unfold <pr_next_unfold #H destruct
+qed-.
+
+(*** discr_next_push *)
+lemma eq_inv_pr_next_push (f1) (f2): ↑f1 = ⫯f2 → ⊥.
+#f1 #f2 <pr_next_unfold <pr_push_unfold #H destruct
+qed-.
+
+(*** injective_next *)
+lemma eq_inv_pr_next_bi: injective ? ? pr_next.
+#f1 #f2 <pr_next_unfold <pr_next_unfold #H destruct //
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat.ma
new file mode 100644 (file)
index 0000000..78b99c6
--- /dev/null
@@ -0,0 +1,209 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/ratsucc_3.ma".
+include "ground/arith/nat_pred_succ.ma".
+include "ground/relocation/pr_pat.ma".
+
+(* NON-NEGATIVE APPLICATION FOR PARTIAL RELOCATION MAPS *********************)
+
+definition pr_nat: relation3 pr_map nat nat ≝
+           λf,l1,l2. @❪↑l1,f❫ ≘ ↑l2.
+
+interpretation
+  "relational non-negative application (partial relocation maps)"
+  'RAtSucc l1 f l2 = (pr_nat f l1 l2).
+
+(* Basic constructions ******************************************************)
+
+lemma pr_nat_refl (f) (g) (k1) (k2):
+      (⫯f) = g → 𝟎 = k1 → 𝟎 = k2 → @↑❪k1,g❫ ≘ k2.
+#f #g #k1 #k2 #H1 #H2 #H3 destruct
+/2 width=2 by pr_pat_refl/
+qed.
+
+lemma pr_nat_push (f) (l1) (l2) (g) (k1) (k2):
+      @↑❪l1,f❫ ≘ l2 → ⫯f = g → ↑l1 = k1 → ↑l2 = k2 → @↑❪k1,g❫ ≘ k2.
+#f #l1 #l2 #g #k1 #k2 #Hf #H1 #H2 #H3 destruct
+/2 width=7 by pr_pat_push/
+qed.
+
+lemma pr_nat_next (f) (l1) (l2) (g) (k2):
+      @↑❪l1,f❫ ≘ l2 → ↑f = g → ↑l2 = k2 → @↑❪l1,g❫ ≘ k2.
+#f #l1 #l2 #g #k2 #Hf #H1 #H2 destruct
+/2 width=5 by pr_pat_next/
+qed.
+
+lemma pr_nat_pred_bi (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → @↑❪↓i1,f❫ ≘ ↓i2.
+#f #i1 #i2
+>(npsucc_pred i1) in ⊢ (%→?); >(npsucc_pred i2) in ⊢ (%→?);
+//
+qed.
+
+(* Basic inversions *********************************************************)
+
+(*** pr_nat_inv_ppx *)
+lemma pr_nat_inv_zero_push (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g. 𝟎 = l1 → ⫯g = f → 𝟎 = l2.
+#f #l1 #l2 #H #g #H1 #H2 destruct
+lapply (pr_pat_inv_unit_push … H ???) -H
+/2 width=2 by eq_inv_npsucc_bi/
+qed-.
+
+(*** pr_nat_inv_npx *)
+lemma pr_nat_inv_succ_push (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g,k1. ↑k1 = l1 → ⫯g = f →
+      ∃∃k2. @↑❪k1,g❫ ≘ k2 & ↑k2 = l2.
+#f #l1 #l2 #H #g #k1 #H1 #H2 destruct
+elim (pr_pat_inv_succ_push … H) -H [|*: // ] #k2 #Hg
+>(npsucc_pred (↑l2)) #H
+@(ex2_intro … (↓k2)) //
+qed-.
+
+(*** pr_nat_inv_xnx *)
+lemma pr_nat_inv_next (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g. ↑g = f →
+      ∃∃k2. @↑❪l1,g❫ ≘ k2 & ↑k2 = l2.
+#f #l1 #l2 #H #g #H1 destruct
+elim (pr_pat_inv_next … H) -H [|*: // ] #k2
+>(npsucc_pred (k2)) in ⊢ (%→?→?); #Hg #H
+@(ex2_intro … (↓k2)) //
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** pr_nat_inv_ppn *)
+lemma pr_nat_inv_zero_push_succ (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g,k2. 𝟎 = l1 → ⫯g = f → ↑k2 = l2 → ⊥.
+#f #l1 #l2 #Hf #g #k2 #H1 #H <(pr_nat_inv_zero_push … Hf … H1 H) -f -g -l1 -l2
+/2 width=3 by eq_inv_nsucc_zero/
+qed-.
+
+(*** pr_nat_inv_npp *)
+lemma pr_nat_inv_succ_push_zero (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g,k1. ↑k1 = l1 → ⫯g = f → 𝟎 = l2 → ⊥.
+#f #l1 #l2 #Hf #g #k1 #H1 #H elim (pr_nat_inv_succ_push … Hf … H1 H) -f -l1
+#x2 #Hg * -l2 /2 width=3 by eq_inv_zero_nsucc/
+qed-.
+
+(*** pr_nat_inv_npn *)
+lemma pr_nat_inv_succ_push_succ (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g,k1,k2. ↑k1 = l1 → ⫯g = f → ↑k2 = l2 → @↑❪k1,g❫ ≘ k2.
+#f #l1 #l2 #Hf #g #k1 #k2 #H1 #H elim (pr_nat_inv_succ_push … Hf … H1 H) -f -l1
+#x2 #Hg * -l2 #H >(eq_inv_nsucc_bi … H) -k2 //
+qed-.
+
+(*** pr_nat_inv_xnp *)
+lemma pr_nat_inv_next_zero (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g. ↑g = f → 𝟎 = l2 → ⊥.
+#f #l1 #l2 #Hf #g #H elim (pr_nat_inv_next … Hf … H) -f
+#x2 #Hg * -l2 /2 width=3 by eq_inv_zero_nsucc/
+qed-.
+
+(*** pr_nat_inv_xnn *)
+lemma pr_nat_inv_next_succ (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g,k2. ↑g = f → ↑k2 = l2 → @↑❪l1,g❫ ≘ k2.
+#f #l1 #l2 #Hf #g #k2 #H elim (pr_nat_inv_next … Hf … H) -f
+#x2 #Hg * -l2 #H >(eq_inv_nsucc_bi … H) -k2 //
+qed-.
+
+(*** pr_nat_inv_pxp *)
+lemma pr_nat_inv_zero_bi (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → 𝟎 = l1 → 𝟎 = l2 → ∃g. ⫯g = f.
+#f elim (pr_map_split_tl … f) /2 width=2 by ex_intro/
+#H #l1 #l2 #Hf #H1 #H2 cases (pr_nat_inv_next_zero … Hf … H H2)
+qed-.
+
+(*** pr_nat_inv_pxn *)
+lemma pr_nat_inv_zero_succ (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀k2. 𝟎 = l1 → ↑k2 = l2 →
+      ∃∃g. @↑❪l1,g❫ ≘ k2 & ↑g = f.
+#f elim (pr_map_split_tl … f)
+#H #l1 #l2 #Hf #k2 #H1 #H2
+[ elim (pr_nat_inv_zero_push_succ … Hf … H1 H H2)
+| /3 width=5 by pr_nat_inv_next_succ, ex2_intro/
+]
+qed-.
+
+(*** pr_nat_inv_nxp *)
+lemma pr_nat_inv_succ_zero (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀k1. ↑k1 = l1 → 𝟎 = l2 → ⊥.
+#f elim (pr_map_split_tl f)
+#H #l1 #l2 #Hf #k1 #H1 #H2
+[ elim (pr_nat_inv_succ_push_zero … Hf … H1 H H2)
+| elim (pr_nat_inv_next_zero … Hf … H H2)
+]
+qed-.
+
+(*** pr_nat_inv_nxn *)
+lemma pr_nat_inv_succ_bi (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀k1,k2. ↑k1 = l1 → ↑k2 = l2 →
+      ∨∨ ∃∃g. @↑❪k1,g❫ ≘ k2 & ⫯g = f
+       | ∃∃g. @↑❪l1,g❫ ≘ k2 & ↑g = f.
+#f elim (pr_map_split_tl f) *
+/4 width=7 by pr_nat_inv_next_succ, pr_nat_inv_succ_push_succ, ex2_intro, or_intror, or_introl/
+qed-.
+
+(* Note: the following inversion lemmas must be checked *)
+(*** pr_nat_inv_xpx *)
+lemma pr_nat_inv_push (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g. ⫯g = f →
+      ∨∨ ∧∧ 𝟎 = l1 & 𝟎 = l2
+       | ∃∃k1,k2. @↑❪k1,g❫ ≘ k2 & ↑k1 = l1 & ↑k2 = l2.
+#f * [2: #l1 ] #l2 #Hf #g #H
+[ elim (pr_nat_inv_succ_push … Hf … H) -f /3 width=5 by or_intror, ex3_2_intro/
+| >(pr_nat_inv_zero_push … Hf … H) -f /3 width=1 by conj, or_introl/
+]
+qed-.
+
+(*** pr_nat_inv_xpp *)
+lemma pr_nat_inv_push_zero (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g. ⫯g = f → 𝟎 = l2 → 𝟎 = l1.
+#f #l1 #l2 #Hf #g #H elim (pr_nat_inv_push … Hf … H) -f * //
+#k1 #k2 #_ #_ * -l2 #H elim (eq_inv_zero_nsucc … H)
+qed-.
+
+(*** pr_nat_inv_xpn *)
+lemma pr_nat_inv_push_succ (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → ∀g,k2. ⫯g = f → ↑k2 = l2 →
+      ∃∃k1. @↑❪k1,g❫ ≘ k2 & ↑k1 = l1.
+#f #l1 #l2 #Hf #g #k2 #H elim (pr_nat_inv_push … Hf … H) -f *
+[ #_ * -l2 #H elim (eq_inv_nsucc_zero … H)
+| #x1 #x2 #Hg #H1 * -l2 #H
+  lapply (eq_inv_nsucc_bi … H) -H #H destruct
+  /2 width=3 by ex2_intro/
+]
+qed-.
+
+(*** pr_nat_inv_xxp *)
+lemma pr_nat_inv_zero_dx (f) (l1) (l2):
+      @↑❪l1,f❫ ≘ l2 → 𝟎 = l2 → ∃∃g. 𝟎 = l1 & ⫯g = f.
+#f elim (pr_map_split_tl f)
+#H #l1 #l2 #Hf #H2
+[ /3 width=6 by pr_nat_inv_push_zero, ex2_intro/
+| elim (pr_nat_inv_next_zero … Hf … H H2)
+]
+qed-.
+
+(*** pr_nat_inv_xxn *)
+lemma pr_nat_inv_succ_dx (f) (l1) (l2): @↑❪l1,f❫ ≘ l2 → ∀k2.  ↑k2 = l2 →
+      ∨∨ ∃∃g,k1. @↑❪k1,g❫ ≘ k2 & ↑k1 = l1 & ⫯g = f
+       | ∃∃g. @↑❪l1,g❫ ≘ k2 & ↑g = f.
+#f elim (pr_map_split_tl f)
+#H #l1 #l2 #Hf #k2 #H2
+[ elim (pr_nat_inv_push_succ … Hf … H H2) -l2 /3 width=5 by or_introl, ex3_2_intro/
+| lapply (pr_nat_inv_next_succ … Hf … H H2) -l2 /3 width=3 by or_intror, ex2_intro/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_basic.ma
new file mode 100644 (file)
index 0000000..8c406f1
--- /dev/null
@@ -0,0 +1,51 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_basic.ma".
+include "ground/relocation/pr_nat_uni.ma".
+
+(* NON-NEGATIVE APPLICATION FOR PARTIAL RELOCATION MAPS *********************)
+
+(* Constructions with pr_basic **********************************************)
+
+lemma pr_nat_basic_lt (m) (n) (l):
+      l < m → @↑❪l, 𝐛❨m,n❩❫ ≘ l.
+#m @(nat_ind_succ … m) -m
+[ #n #i #H elim (nlt_inv_zero_dx … H)
+| #m #IH #n #l @(nat_ind_succ … l) -l
+  [ #_ /2 width=2 by refl, pr_pat_refl/
+  | #l #_ #H
+    lapply (nlt_inv_succ_bi … H) -H #Hlm
+    /3 width=7 by refl, pr_pat_push/
+  ]
+]
+qed.
+
+lemma pr_nat_basic_ge (m) (n) (l):
+      m ≤ l → @↑❪l, 𝐛❨m,n❩❫ ≘ l+n.
+#m @(nat_ind_succ … m) -m //
+#m #IH #n #l #H
+elim (nle_inv_succ_sn … H) -H #Hml #H >H -H
+/3 width=7 by pr_nat_push/
+qed.
+
+(* Inversions with pr_basic *************************************************)
+
+lemma pr_nat_basic_inv_lt (m) (n) (l) (k):
+      l < m → @↑❪l, 𝐛❨m,n❩❫ ≘ k → l = k.
+/3 width=4 by pr_nat_basic_lt, pr_nat_mono/ qed-.
+
+lemma pr_nat_basic_inv_ge (m) (n) (l) (k):
+      m ≤ l → @↑❪l, 𝐛❨m,n❩❫ ≘ k → l+n = k.
+/3 width=4 by pr_nat_basic_ge, pr_nat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_nat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_nat.ma
new file mode 100644 (file)
index 0000000..5f40670
--- /dev/null
@@ -0,0 +1,73 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/arith/nat_lt_pred.ma".
+include "ground/relocation/pr_nat.ma".
+
+(* NON-NEGATIVE APPLICATION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Main destructions ********************************************************)
+
+theorem pr_nat_monotonic (k2) (l2) (f):
+        @↑❪l2,f❫ ≘ k2 → ∀k1,l1. @↑❪l1,f❫ ≘ k1 → l1 < l2 → k1 < k2.
+#k2 @(nat_ind_succ … k2) -k2
+[ #l2 #f #H2f elim (pr_nat_inv_zero_dx … H2f) -H2f //
+  #g #H21 #_ #k1 #l1 #_ #Hi destruct
+  elim (nlt_inv_zero_dx … Hi)
+| #k2 #IH #l2 #f #H2f #k1 @(nat_ind_succ … k1) -k1 //
+  #k1 #_ #l1 #H1f #Hl elim (nlt_inv_gen … Hl)
+  #_ #Hl2 elim (pr_nat_inv_succ_bi … H2f (↓l2)) -H2f [1,3: * |*: // ]
+  #g #H2g #H
+  [ elim (pr_nat_inv_push_succ … H1f … H) -f
+    /4 width=8 by nlt_inv_succ_bi, nlt_succ_bi/
+  | /4 width=8 by pr_nat_inv_next_succ, nlt_succ_bi/
+  ]
+]
+qed-.
+
+theorem pr_nat_inv_monotonic (k1) (l1) (f):
+        @↑❪l1,f❫ ≘ k1 → ∀k2,l2. @↑❪l2,f❫ ≘ k2 → k1 < k2 → l1 < l2.
+#k1 @(nat_ind_succ … k1) -k1
+[ #l1 #f #H1f elim (pr_nat_inv_zero_dx … H1f) -H1f //
+  #g * -l1 #H #k2 #l2 #H2f #Hk
+  lapply (nlt_des_gen … Hk) -Hk #H22
+  elim (pr_nat_inv_push_succ … H2f … (↓k2) H) -f //
+| #k1 #IH #l1 @(nat_ind_succ … l1) -l1
+  [ #f #H1f elim (pr_nat_inv_zero_succ … H1f) -H1f [ |*: // ]
+    #g #H1g #H #k2 #l2 #H2f #Hj elim (nlt_inv_succ_sn … Hj) -Hj
+    /3 width=7 by pr_nat_inv_next_succ/
+  | #l1 #_ #f #H1f #k2 #l2 #H2f #Hj elim (nlt_inv_succ_sn … Hj) -Hj
+    #Hj #H22 elim (pr_nat_inv_succ_bi … H1f) -H1f [1,4: * |*: // ]
+    #g #Hg #H
+    [ elim (pr_nat_inv_push_succ … H2f … (↓k2) H) -f
+      /3 width=7 by nlt_succ_bi/
+    | /3 width=7 by pr_nat_inv_next_succ/
+    ]
+  ]
+]
+qed-.
+
+theorem pr_nat_mono (f) (l) (l1) (l2):
+        @↑❪l,f❫ ≘ l1 → @↑❪l,f❫ ≘ l2 → l2 = l1.
+#f #l #l1 #l2 #H1 #H2 elim (nat_split_lt_eq_gt l2 l1) //
+#Hi elim (nlt_ge_false l l)
+/2 width=6 by pr_nat_inv_monotonic/
+qed-.
+
+theorem pr_nat_inj (f) (l1) (l2) (l):
+        @↑❪l1,f❫ ≘ l → @↑❪l2,f❫ ≘ l → l1 = l2.
+#f #l1 #l2 #l #H1 #H2 elim (nat_split_lt_eq_gt l2 l1) //
+#Hi elim (nlt_ge_false l l)
+/2 width=6 by pr_nat_monotonic/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_nat_uni.ma
new file mode 100644 (file)
index 0000000..8831312
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/nat_plus_rplus.ma".
+include "ground/relocation/pr_pat_uni.ma".
+include "ground/relocation/pr_nat_nat.ma".
+
+(* NON-NEGATIVE APPLICATION FOR PARTIAL RELOCATION MAPS *********************)
+
+(* Constructions with pr_uni ************************************************)
+
+lemma pr_nat_uni (n) (l):
+      @↑❪l,𝐮❨n❩❫ ≘ l+n.
+/2 width=1 by pr_nat_pred_bi/
+qed.
+
+(* Inversions with pr_uni ***************************************************)
+
+lemma pr_nat_inv_uni (n) (l) (k):
+      @↑❪l,𝐮❨n❩❫ ≘ k → k = l+n.
+/2 width=4 by pr_nat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_nexts.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_nexts.ma
new file mode 100644 (file)
index 0000000..1588422
--- /dev/null
@@ -0,0 +1,51 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/functions/uparrowstar_2.ma".
+include "ground/arith/nat_succ_iter.ma".
+include "ground/relocation/pr_map.ma".
+
+(* ITERATED NEXT FOR PARTIAL RELOCATION MAPS ********************************)
+
+(*** nexts *)
+definition pr_nexts (f:pr_map) (n:nat) ≝
+           (pr_next^n) f.
+
+interpretation
+  "iterated next (partial relocation maps)"
+  'UpArrowStar n f = (pr_nexts f n).
+
+(* Basic constructions ******************************************************)
+
+(*** nexts_O *)
+lemma pr_nexts_zero:
+      ∀f. f = ↑*[𝟎] f.
+// qed.
+
+(*** nexts_swap *)
+lemma pr_nexts_next (n):
+      ∀f. ↑↑*[n] f = ↑*[n] ↑f.
+#f #n @(niter_appl … pr_next)
+qed.
+
+(*** nexts_S *)
+lemma pr_nexts_succ (n):
+      ∀f. ↑↑*[n] f = ↑*[↑n] f.
+#f #n @(niter_succ … pr_next)
+qed.
+
+(*** nexts_xn *)
+lemma pr_nexts_swap (n):
+      ∀f. ↑*[n] ↑f = ↑*[↑n] f.
+// qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_nexts_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_nexts_eq.ma
new file mode 100644 (file)
index 0000000..ca6a8d5
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_eq.ma".
+include "ground/relocation/pr_nexts.ma".
+
+(* ITERATED NEXT FOR PARTIAL RELOCATION MAPS ********************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** nexts_eq_repl *)
+lemma pr_nexts_eq_repl (n):
+      pr_eq_repl (λf1,f2. ↑*[n] f1 ≡ ↑*[n] f2).
+#n @(nat_ind_succ … n) -n
+/3 width=5 by pr_eq_next/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat.ma
new file mode 100644 (file)
index 0000000..263da6c
--- /dev/null
@@ -0,0 +1,202 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/xoa/ex_3_2.ma".
+include "ground/arith/pnat.ma".
+include "ground/relocation/pr_tl.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(*** at *)
+coinductive pr_pat: relation3 pr_map pnat pnat ≝
+(*** at_refl *)
+| pr_pat_refl (f) (g) (j1) (j2):
+  ⫯f = g → 𝟏 = j1 → 𝟏 = j2 → pr_pat g j1 j2
+(*** at_push *)
+| pr_pat_push (f) (i1) (i2):
+  pr_pat f i1 i2 → ∀g,j1,j2. ⫯f = g → ↑i1 = j1 → ↑i2 = j2 → pr_pat g j1 j2
+(*** at_next *)
+| pr_pat_next (f) (i1) (i2):
+  pr_pat f i1 i2 → ∀g,j2. ↑f = g → ↑i2 = j2 → pr_pat g i1 j2
+.
+
+interpretation
+  "relational positive application (partial relocation maps)"
+  'RAt i1 f i2 = (pr_pat f i1 i2).
+
+(*** H_at_div *)
+definition H_pr_pat_div: relation4 pr_map pr_map pr_map pr_map ≝
+           λf2,g2,f1,g1.
+           ∀jf,jg,j. @❪jf,f2❫ ≘ j → @❪jg,g2❫ ≘ j →
+           ∃∃j0. @❪j0,f1❫ ≘ jf & @❪j0,g1❫ ≘ jg.
+
+(* Basic inversions *********************************************************)
+
+(*** at_inv_ppx *)
+lemma pr_pat_inv_unit_push (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g. 𝟏 = i1 → ⫯g = f → 𝟏 = i2.
+#f #i1 #i2 * -f -i1 -i2 //
+[ #f #i1 #i2 #_ #g #j1 #j2 #_ * #_ #x #H destruct
+| #f #i1 #i2 #_ #g #j2 * #_ #x #_ #H elim (eq_inv_pr_push_next … H)
+]
+qed-.
+
+(*** at_inv_npx *)
+lemma pr_pat_inv_succ_push (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f →
+      ∃∃j2. @❪j1,g❫ ≘ j2 & ↑j2 = i2.
+#f #i1 #i2 * -f -i1 -i2
+[ #f #g #j1 #j2 #_ * #_ #x #x1 #H destruct
+| #f #i1 #i2 #Hi #g #j1 #j2 * * * #x #x1 #H #Hf >(eq_inv_pr_push_bi … Hf) -g destruct /2 width=3 by ex2_intro/
+| #f #i1 #i2 #_ #g #j2 * #_ #x #x1 #_ #H elim (eq_inv_pr_push_next … H)
+]
+qed-.
+
+(*** at_inv_xnx *)
+lemma pr_pat_inv_next (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 (eq_inv_pr_next_push … H)
+| #f #i1 #i2 #_ #g #j1 #j2 * #_ #_ #x #H elim (eq_inv_pr_next_push … H)
+| #f #i1 #i2 #Hi #g #j2 * * #x #H >(eq_inv_pr_next_bi … H) -g /2 width=3 by ex2_intro/
+]
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** at_inv_ppn *)
+lemma pr_pat_inv_unit_push_succ (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g,j2. 𝟏 = i1 → ⫯g = f → ↑j2 = i2 → ⊥.
+#f #i1 #i2 #Hf #g #j2 #H1 #H <(pr_pat_inv_unit_push … Hf … H1 H) -f -g -i1 -i2
+#H destruct
+qed-.
+
+(*** at_inv_npp *)
+lemma pr_pat_inv_succ_push_unit (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g,j1. ↑j1 = i1 → ⫯g = f → 𝟏 = i2 → ⊥.
+#f #i1 #i2 #Hf #g #j1 #H1 #H elim (pr_pat_inv_succ_push … Hf … H1 H) -f -i1
+#x2 #Hg * -i2 #H destruct
+qed-.
+
+(*** at_inv_npn *)
+lemma pr_pat_inv_succ_push_succ (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 (pr_pat_inv_succ_push … Hf … H1 H) -f -i1
+#x2 #Hg * -i2 #H destruct //
+qed-.
+
+(*** at_inv_xnp *)
+lemma pr_pat_inv_next_unit (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g. ↑g = f → 𝟏 = i2 → ⊥.
+#f #i1 #i2 #Hf #g #H elim (pr_pat_inv_next … Hf … H) -f
+#x2 #Hg * -i2 #H destruct
+qed-.
+
+(*** at_inv_xnn *)
+lemma pr_pat_inv_next_succ (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g,j2. ↑g = f → ↑j2 = i2 → @❪i1,g❫ ≘ j2.
+#f #i1 #i2 #Hf #g #j2 #H elim (pr_pat_inv_next … Hf … H) -f
+#x2 #Hg * -i2 #H destruct //
+qed-.
+
+(*** at_inv_pxp *)
+lemma pr_pat_inv_unit_bi (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → 𝟏 = i1 → 𝟏 = i2 → ∃g. ⫯g = f.
+#f elim (pr_map_split_tl … f) /2 width=2 by ex_intro/
+#H #i1 #i2 #Hf #H1 #H2 cases (pr_pat_inv_next_unit … Hf … H H2)
+qed-.
+
+(*** at_inv_pxn *)
+lemma pr_pat_inv_unit_succ (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀j2. 𝟏 = i1 → ↑j2 = i2 →
+      ∃∃g. @❪i1,g❫ ≘ j2 & ↑g = f.
+#f elim (pr_map_split_tl … f)
+#H #i1 #i2 #Hf #j2 #H1 #H2
+[ elim (pr_pat_inv_unit_push_succ … Hf … H1 H H2)
+| /3 width=5 by pr_pat_inv_next_succ, ex2_intro/
+]
+qed-.
+
+(*** at_inv_nxp *)
+lemma pr_pat_inv_succ_unit (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀j1. ↑j1 = i1 → 𝟏 = i2 → ⊥.
+#f elim (pr_map_split_tl f)
+#H #i1 #i2 #Hf #j1 #H1 #H2
+[ elim (pr_pat_inv_succ_push_unit … Hf … H1 H H2)
+| elim (pr_pat_inv_next_unit … Hf … H H2)
+]
+qed-.
+
+(*** at_inv_nxn *)
+lemma pr_pat_inv_succ_bi (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 (pr_map_split_tl f) *
+/4 width=7 by pr_pat_inv_next_succ, pr_pat_inv_succ_push_succ, ex2_intro, or_intror, or_introl/
+qed-.
+
+(* Note: the following inversion lemmas must be checked *)
+(*** at_inv_xpx *)
+lemma pr_pat_inv_push (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f →
+      ∨∨ ∧∧ 𝟏 = i1 & 𝟏 = i2
+       | ∃∃j1,j2. @❪j1,g❫ ≘ j2 & ↑j1 = i1 & ↑j2 = i2.
+#f * [2: #i1 ] #i2 #Hf #g #H
+[ elim (pr_pat_inv_succ_push … Hf … H) -f /3 width=5 by or_intror, ex3_2_intro/
+| >(pr_pat_inv_unit_push … Hf … H) -f /3 width=1 by conj, or_introl/
+]
+qed-.
+
+(*** at_inv_xpp *)
+lemma pr_pat_inv_push_unit (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → ∀g. ⫯g = f → 𝟏 = i2 → 𝟏 = i1.
+#f #i1 #i2 #Hf #g #H elim (pr_pat_inv_push … Hf … H) -f * //
+#j1 #j2 #_ #_ * -i2 #H destruct
+qed-.
+
+(*** at_inv_xpn *)
+lemma pr_pat_inv_push_succ (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 (pr_pat_inv_push … Hf … H) -f *
+[ #_ * -i2 #H destruct
+| #x1 #x2 #Hg #H1 * -i2 #H destruct /2 width=3 by ex2_intro/
+]
+qed-.
+
+(*** at_inv_xxp *)
+lemma pr_pat_inv_unit_dx (f) (i1) (i2):
+      @❪i1,f❫ ≘ i2 → 𝟏 = i2 →
+      ∃∃g. 𝟏 = i1 & ⫯g = f.
+#f elim (pr_map_split_tl f)
+#H #i1 #i2 #Hf #H2
+[ /3 width=6 by pr_pat_inv_push_unit, ex2_intro/
+| elim (pr_pat_inv_next_unit … Hf … H H2)
+]
+qed-.
+
+(*** at_inv_xxn *)
+lemma pr_pat_inv_succ_dx (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 (pr_map_split_tl f)
+#H #i1 #i2 #Hf #j2 #H2
+[ elim (pr_pat_inv_push_succ … Hf … H H2) -i2 /3 width=5 by or_introl, ex3_2_intro/
+| lapply (pr_pat_inv_next_succ … Hf … H H2) -i2 /3 width=3 by or_intror, ex2_intro/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_basic.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_basic.ma
new file mode 100644 (file)
index 0000000..6797543
--- /dev/null
@@ -0,0 +1,45 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_nat_basic.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_basic **********************************************)
+
+(*** at_basic_lt *)
+lemma pr_pat_basic_lt (m) (n) (i):
+      ninj i ≤ m → @❪i, 𝐛❨m,n❩❫ ≘ i.
+#m #n #i >(npsucc_pred i) #Hmi
+/2 width=1 by pr_nat_basic_lt/
+qed.
+
+(*** at_basic_ge *)
+lemma pr_pat_basic_ge (m) (n) (i):
+      m < ninj i → @❪i, 𝐛❨m,n❩❫ ≘ i+n.
+#m #n #i >(npsucc_pred i) #Hmi <nrplus_npsucc_sn
+/3 width=1 by pr_nat_basic_ge, nlt_inv_succ_dx/
+qed.
+
+(* Inversions with pr_basic *************************************************)
+
+(*** at_basic_inv_lt *)
+lemma pr_pat_basic_inv_lt (m) (n) (i) (j):
+      ninj i ≤ m → @❪i, 𝐛❨m,n❩❫ ≘ j → i = j.
+/3 width=4 by pr_pat_basic_lt, pr_pat_mono/ qed-.
+
+(*** at_basic_inv_ge *)
+lemma pr_pat_basic_inv_ge (m) (n) (i) (j):
+      m < ninj i → @❪i, 𝐛❨m,n❩❫ ≘ j → i+n = j.
+/3 width=4 by pr_pat_basic_ge, pr_pat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_eq.ma
new file mode 100644 (file)
index 0000000..8c67bfb
--- /dev/null
@@ -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/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_pat_lt.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** at_eq_repl_back *)
+corec lemma pr_pat_eq_repl_back (i1) (i2):
+            pr_eq_repl_back (λf. @❪i1,f❫ ≘ i2).
+#f1 * -f1 -i1 -i2
+[ #f1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12
+  cases (pr_eq_inv_push_sn … H12 … H) -g1 /2 width=2 by pr_pat_refl/
+| #f1 #i1 #i2 #Hf1 #g1 #j1 #j2 #H #H1 #H2 #f2 #H12
+  cases (pr_eq_inv_push_sn … H12 … H) -g1 /3 width=7 by pr_pat_push/
+| #f1 #i1 #i2 #Hf1 #g1 #j2 #H #H2 #f2 #H12
+  cases (pr_eq_inv_next_sn … H12 … H) -g1 /3 width=5 by pr_pat_next/
+]
+qed-.
+
+(*** at_eq_repl_fwd *)
+lemma pr_pat_eq_repl_fwd (i1) (i2):
+      pr_eq_repl_fwd (λf. @❪i1,f❫ ≘ i2).
+#i1 #i2 @pr_eq_repl_sym /2 width=3 by pr_pat_eq_repl_back/
+qed-.
+
+lemma pr_pat_eq (f): ⫯f ≡ f → ∀i. @❪i,f❫ ≘ i.
+#f #Hf #i elim i -i
+[ /3 width=3 by pr_pat_eq_repl_back, pr_pat_refl/
+| /3 width=7 by pr_pat_eq_repl_back, pr_pat_push/
+]
+qed.
+
+(* Inversions with pr_eq ****************************************************)
+
+corec lemma pr_pat_inv_eq (f):
+            (∀i. @❪i,f❫ ≘ i) → ⫯f ≡ f.
+#Hf
+lapply (Hf (𝟏)) #H
+lapply (pr_pat_des_id … H) -H #H
+cases H in Hf; -H #Hf
+@pr_eq_push [3:|*: // ]
+/3 width=7 by pr_pat_inv_succ_push_succ/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_id.ma
new file mode 100644 (file)
index 0000000..8c0745a
--- /dev/null
@@ -0,0 +1,32 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_id_eq.ma".
+include "ground/relocation/pr_pat_eq.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_id *************************************************)
+
+(*** id_at *)
+lemma pr_pat_id (i): @❪i,𝐢❫ ≘ i.
+/2 width=1 by pr_pat_eq, pr_eq_refl/ qed.
+
+(* Inversions with pr_id ****************************************************)
+
+(*** id_inv_at *)
+lemma pr_pat_inv_id (f):
+      (∀i. @❪i,f❫ ≘ i) → 𝐢 ≡ f.
+/3 width=1 by pr_pat_inv_eq, pr_id_eq/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_lt.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_lt.ma
new file mode 100644 (file)
index 0000000..34fec06
--- /dev/null
@@ -0,0 +1,79 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/arith/pnat_pred.ma".
+include "ground/arith/pnat_lt.ma".
+include "ground/relocation/pr_pat.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Destructions with plt and ple ********************************************)
+
+(*** at_increasing *)
+lemma pr_pat_increasing (i2) (i1) (f):
+      @❪i1,f❫ ≘ i2 → i1 ≤ i2.
+#i2 elim i2 -i2
+[ #i1 #f #Hf elim (pr_pat_inv_unit_dx … Hf) -Hf //
+| #i2 #IH * //
+  #i1 #f #Hf elim (pr_pat_inv_succ_bi … Hf) -Hf [1,4: * |*: // ]
+  /3 width=2 by ple_succ_bi, ple_succ_dx/
+]
+qed-.
+
+(*** at_increasing_strict *)
+lemma pr_pat_increasing_strict (g) (i1) (i2):
+      @❪i1,g❫ ≘ i2 → ∀f. ↑f = g →
+      ∧∧ i1 < i2 & @❪i1,f❫ ≘ ↓i2.
+#g #i1 #i2 #Hg #f #H elim (pr_pat_inv_next … Hg … H) -Hg -H
+/4 width=2 by conj, pr_pat_increasing, ple_succ_bi/
+qed-.
+
+(*** at_fwd_id_ex *)
+lemma pr_pat_des_id (f) (i): @❪i,f❫ ≘ i → ⫯⫰f = f.
+#f elim (pr_map_split_tl f) //
+#H #i #Hf elim (pr_pat_inv_next … Hf … H) -Hf -H
+#j2 #Hg #H destruct lapply (pr_pat_increasing … Hg) -Hg
+#H elim (plt_ge_false … H) -H //
+qed-.
+
+(* Constructions with ple ***************************************************)
+
+(*** at_le_ex *)
+lemma pr_pat_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 (pr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
+  #g [ #x2 ] #Hg [ #H2 ] #H0
+  [ * /3 width=3 by pr_pat_refl, ex2_intro/
+    #i1 #Hi12 destruct lapply (ple_inv_succ_bi … Hi12) -Hi12
+    #Hi12 elim (IH … Hg … Hi12) -x2 -IH
+    /3 width=7 by pr_pat_push, ex2_intro, ple_succ_bi/
+  | #i1 #Hi12 elim (IH … Hg … Hi12) -IH -i2
+    /3 width=5 by pr_pat_next, ex2_intro, ple_succ_bi/
+  ]
+| elim (pr_pat_inv_unit_dx … Hf) -Hf //
+  #g * -i2 #H2 #i1 #Hi12 <(ple_inv_unit_dx … Hi12)
+  /3 width=3 by pr_pat_refl, ex2_intro/
+]
+qed-.
+
+(*** at_id_le *)
+lemma pr_pat_id_le (i1) (i2):
+      i1 ≤ i2 → ∀f. @❪i2,f❫ ≘ i2 → @❪i1,f❫ ≘ i1.
+#i1 #i2 #H
+@(ple_ind_alt … H) -i1 -i2 [ #i2 | #i1 #i2 #_ #IH ] #f #Hf
+lapply (pr_pat_des_id … Hf) #H <H in Hf; -H
+/4 width=7 by pr_pat_inv_succ_push_succ, pr_pat_push, pr_pat_refl/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat.ma
new file mode 100644 (file)
index 0000000..06af246
--- /dev/null
@@ -0,0 +1,121 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/arith/pnat_lt_pred.ma".
+include "ground/relocation/pr_pat.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Main constructions *******************************************************)
+
+(*** at_monotonic *)
+theorem pr_pat_monotonic:
+        ∀j2,i2,f. @❪i2,f❫ ≘ j2 → ∀j1,i1. @❪i1,f❫ ≘ j1 →
+        i1 < i2 → j1 < j2.
+#j2 elim j2 -j2
+[ #i2 #f #H2f elim (pr_pat_inv_unit_dx … H2f) -H2f //
+  #g #H21 #_ #j1 #i1 #_ #Hi elim (plt_ge_false … Hi) -Hi //
+| #j2 #IH #i2 #f #H2f * //
+  #j1 #i1 #H1f #Hi elim (plt_inv_gen … Hi)
+  #_ #Hi2 elim (pr_pat_inv_succ_bi … H2f (↓i2)) -H2f [1,3: * |*: // ]
+  #g #H2g #H
+  [ elim (pr_pat_inv_push_succ … H1f … H) -f
+    /4 width=8 by plt_inv_succ_bi, plt_succ_bi/
+  | /4 width=8 by pr_pat_inv_next_succ, plt_succ_bi/
+  ]
+]
+qed-.
+
+(*** at_inv_monotonic *)
+theorem pr_pat_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 (pr_pat_inv_unit_dx … H1f) -H1f //
+  #g * -i1 #H #j2 #i2 #H2f #Hj lapply (plt_des_gen … Hj) -Hj
+  #H22 elim (pr_pat_inv_push_succ … H2f … (↓j2) H) -f //
+| #j1 #IH *
+  [ #f #H1f elim (pr_pat_inv_unit_succ … H1f) -H1f [ |*: // ]
+    #g #H1g #H #j2 #i2 #H2f #Hj elim (plt_inv_succ_sn … Hj) -Hj
+    /3 width=7 by pr_pat_inv_next_succ/
+  | #i1 #f #H1f #j2 #i2 #H2f #Hj elim (plt_inv_succ_sn … Hj) -Hj
+    #Hj #H22 elim (pr_pat_inv_succ_bi … H1f) -H1f [1,4: * |*: // ]
+    #g #Hg #H
+    [ elim (pr_pat_inv_push_succ … H2f … (↓j2) H) -f
+      /3 width=7 by plt_succ_bi/
+    | /3 width=7 by pr_pat_inv_next_succ/
+    ]
+  ]
+]
+qed-.
+
+(*** at_mono *)
+theorem pr_pat_mono (f) (i):
+        ∀i1. @❪i,f❫ ≘ i1 → ∀i2. @❪i,f❫ ≘ i2 → i2 = i1.
+#f #i #i1 #H1 #i2 #H2 elim (pnat_split_lt_eq_gt i2 i1) //
+#Hi elim (plt_ge_false i i)
+/2 width=6 by pr_pat_inv_monotonic/
+qed-.
+
+(*** at_inj *)
+theorem pr_pat_inj (f) (i):
+        ∀i1. @❪i1,f❫ ≘ i → ∀i2. @❪i2,f❫ ≘ i → i1 = i2.
+#f #i #i1 #H1 #i2 #H2 elim (pnat_split_lt_eq_gt i2 i1) //
+#Hi elim (plt_ge_false i i)
+/2 width=6 by pr_pat_monotonic/
+qed-.
+
+(*** at_div_comm *)
+theorem pr_pat_div_comm (f2) (g2) (f1) (g1):
+        H_pr_pat_div f2 g2 f1 g1 → H_pr_pat_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-.
+
+(*** at_div_pp *)
+theorem pr_pat_div_push_bi (f2) (g2) (f1) (g1):
+        H_pr_pat_div f2 g2 f1 g1 → H_pr_pat_div (⫯f2) (⫯g2) (⫯f1) (⫯g1).
+#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg
+elim (pr_pat_inv_push … Hf) -Hf [1,2: * |*: // ]
+[ #H1 #H2 destruct -IH
+  lapply (pr_pat_inv_push_unit … Hg ???) -Hg [4: |*: // ] #H destruct
+  /3 width=3 by pr_pat_refl, ex2_intro/
+| #xf #i #Hf2 #H1 #H2 destruct
+  lapply (pr_pat_inv_push_succ … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct
+  elim (IH … Hf2 Hg2) -IH -i /3 width=9 by pr_pat_push, ex2_intro/
+]
+qed-.
+
+(*** at_div_nn *)
+theorem pr_pat_div_next_bi (f2) (g2) (f1) (g1):
+        H_pr_pat_div f2 g2 f1 g1 → H_pr_pat_div (↑f2) (↑g2) (f1) (g1).
+#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg
+elim (pr_pat_inv_next … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct
+lapply (pr_pat_inv_next_succ … Hg ????) -Hg [5: |*: // ] #Hg2
+elim (IH … Hf2 Hg2) -IH -i /2 width=3 by ex2_intro/
+qed-.
+
+(*** at_div_np *)
+theorem pr_pat_div_next_push (f2) (g2) (f1) (g1):
+        H_pr_pat_div f2 g2 f1 g1 → H_pr_pat_div (↑f2) (⫯g2) (f1) (↑g1).
+#f2 #g2 #f1 #g1 #IH #jf #jg #j #Hf #Hg
+elim (pr_pat_inv_next … Hf) -Hf [ |*: // ] #i #Hf2 #H destruct
+lapply (pr_pat_inv_push_succ … Hg ????) -Hg [5: * |*: // ] #xg #Hg2 #H destruct
+elim (IH … Hf2 Hg2) -IH -i /3 width=7 by pr_pat_next, ex2_intro/
+qed-.
+
+(*** at_div_pn *)
+theorem pr_pat_div_push_next (f2) (g2) (f1) (g1):
+        H_pr_pat_div f2 g2 f1 g1 → H_pr_pat_div (⫯f2) (↑g2) (↑f1) (g1).
+/4 width=6 by pr_pat_div_next_push, pr_pat_div_comm/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat_id.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_pat_id.ma
new file mode 100644 (file)
index 0000000..f9476c8
--- /dev/null
@@ -0,0 +1,40 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_pat_id.ma".
+include "ground/relocation/pr_pat_pat.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Advanced destructions with pr_id *****************************************)
+
+(*** at_id_fwd *)
+lemma pr_pat_id_des (i1) (i2):
+      @❪i1,𝐢❫ ≘ i2 → i1 = i2.
+/2 width=4 by pr_pat_mono/ qed-.
+
+(* Main constructions with pr_id ********************************************)
+
+(*** at_div_id_dx *)
+theorem pr_pat_div_id_dx (f):
+        H_pr_pat_div f 𝐢 𝐢 f.
+#f #jf #j0 #j #Hf #H0
+lapply (pr_pat_id_des … H0) -H0 #H destruct
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** at_div_id_sn *)
+theorem pr_pat_div_id_sn (f):
+        H_pr_pat_div 𝐢 f f 𝐢.
+/3 width=6 by pr_pat_div_id_dx, pr_pat_div_comm/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_tls.ma
new file mode 100644 (file)
index 0000000..123bba9
--- /dev/null
@@ -0,0 +1,77 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/arith/pnat_plus.ma".
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_pat_eq.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_tls ************************************************)
+
+(* Note: this requires ↑ on first n *)
+(*** at_pxx_tls *)
+lemma pr_pat_unit_succ_tls (n) (f):
+      @❪𝟏,f❫ ≘ ↑n → @❪𝟏,⫰*[n]f❫ ≘ 𝟏.
+#n @(nat_ind_succ … n) -n //
+#n #IH #f #Hf
+elim (pr_pat_inv_unit_succ … Hf) -Hf [|*: // ] #g #Hg #H0 destruct
+<pr_tls_swap /2 width=1 by/
+qed.
+
+(* Note: this requires ↑ on third n2 *)
+(*** at_tls *)
+lemma pr_pat_tls (n2) (f): ⫯⫰*[↑n2]f ≡ ⫰*[n2]f → ∃i1. @❪i1,f❫ ≘ ↑n2.
+#n2 @(nat_ind_succ … n2) -n2
+[ /4 width=4 by pr_pat_eq_repl_back, pr_pat_refl, ex_intro/
+| #n2 #IH #f <pr_tls_swap <pr_tls_swap in ⊢ (??%→?); #H
+  elim (IH … H) -IH -H #i1 #Hf
+  elim (pr_map_split_tl f) #Hg destruct
+  /3 width=8 by pr_pat_push, pr_pat_next, ex_intro/
+]
+qed-.
+
+(* Inversions with pr_tls ***************************************************)
+
+(* Note: this does not require ↑ on second and third p *)
+(*** at_inv_nxx *)
+lemma pr_pat_inv_succ_sn (p) (g) (i1) (j2):
+      @❪↑i1,g❫ ≘ j2 → @❪𝟏,g❫ ≘ p →
+      ∃∃i2. @❪i1,⫰*[p]g❫ ≘ i2 & p+i2 = j2.
+#p elim p -p
+[ #g #i1 #j2 #Hg #H
+  elim (pr_pat_inv_unit_bi … H) -H [|*: // ] #f #H0
+  elim (pr_pat_inv_succ_push … Hg … H0) -Hg [|*: // ] #x2 #Hf #H2 destruct
+  /2 width=3 by ex2_intro/
+| #p #IH #g #i1 #j2 #Hg #H
+  elim (pr_pat_inv_unit_succ … H) -H [|*: // ] #f #Hf2 #H0
+  elim (pr_pat_inv_next … Hg … H0) -Hg #x2 #Hf1 #H2 destruct
+  elim (IH … Hf1 Hf2) -IH -Hf1 -Hf2 #i2 #Hf #H2 destruct
+  /2 width=3 by ex2_intro/
+]
+qed-.
+
+(* Note: this requires ↑ on first n2 *)
+(*** at_inv_tls *)
+lemma pr_pat_inv_succ_dx_tls (n2) (i1) (f):
+      @❪i1,f❫ ≘ ↑n2 → ⫯⫰*[↑n2]f ≡ ⫰*[n2]f.
+#n2 @(nat_ind_succ … n2) -n2
+[ #i1 #f #Hf elim (pr_pat_inv_unit_dx … Hf) -Hf // #g #H1 #H destruct
+  /2 width=1 by pr_eq_refl/
+| #n2 #IH #i1 #f #Hf
+  elim (pr_pat_inv_succ_dx … Hf) -Hf [1,3: * |*: // ]
+  [ #g #j1 #Hg #H1 #H2 | #g #Hg #Ho ] destruct
+  <pr_tls_swap /2 width=2 by/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pat_uni.ma
new file mode 100644 (file)
index 0000000..387430d
--- /dev/null
@@ -0,0 +1,35 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/arith/nat_rplus_succ.ma".
+include "ground/relocation/pr_uni.ma".
+include "ground/relocation/pr_pat_pat_id.ma".
+
+(* POSITIVE APPLICATION FOR PARTIAL RELOCATION MAPS *************************)
+
+(* Constructions with pr_uni ************************************************)
+
+(*** at_uni *)
+lemma pr_pat_uni (n) (i):
+      @❪i,𝐮❨n❩❫ ≘ i+n.
+#n @(nat_ind_succ … n) -n
+/2 width=5 by pr_pat_next/
+qed.
+
+(* Inversions with pr_uni ***************************************************)
+
+(*** at_inv_uni *)
+lemma pr_pat_inv_uni (n) (i) (j):
+      @❪i,𝐮❨n❩❫ ≘ j → j = i+n.
+/2 width=4 by pr_pat_mono/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pushs.ma
new file mode 100644 (file)
index 0000000..2033356
--- /dev/null
@@ -0,0 +1,51 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/functions/upspoonstar_2.ma".
+include "ground/arith/nat_succ_iter.ma".
+include "ground/relocation/pr_map.ma".
+
+(* ITERATED PUSH FOR PARTIAL RELOCATION MAPS ********************************)
+
+(*** pushs *)
+definition pr_pushs (f:pr_map) (n:nat) ≝
+           (pr_push^n) f.
+
+interpretation
+  "iterated push (partial relocation maps)"
+  'UpSpoonStar n f = (pr_pushs f n).
+
+(* Basic constructions ******************************************************)
+
+(*** pushs_O *)
+lemma pr_pushs_zero:
+      ∀f. f = ⫯*[𝟎] f.
+// qed.
+
+(*** push_swap *)
+lemma pr_pushs_push (n):
+      ∀f. ⫯⫯*[n] f = ⫯*[n] ⫯f.
+#n #f @(niter_appl … pr_push)
+qed.
+
+(*** pushs_S *)
+lemma pr_pushs_succ (n):
+      ∀f. ⫯⫯*[n] f = ⫯*[↑n] f.
+#f #n @(niter_succ … pr_push)
+qed.
+
+(*** pushs_xn *)
+lemma pr_pushs_swap (n):
+      ∀f. ⫯*[n] ⫯f = ⫯*[↑n] f.
+// qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_pushs_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_pushs_eq.ma
new file mode 100644 (file)
index 0000000..11f4036
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_eq.ma".
+include "ground/relocation/pr_pushs.ma".
+
+(* ITERATED PUSH FOR PARTIAL RELOCATION MAPS ********************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** pushs_eq_repl *)
+lemma pr_pushs_eq_repl (n):
+      pr_eq_repl (λf1,f2. ⫯*[n] f1 ≡ ⫯*[n] f2).
+#n @(nat_ind_succ … n) -n
+/3 width=5 by pr_eq_push/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sand.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sand.ma
new file mode 100644 (file)
index 0000000..c37f859
--- /dev/null
@@ -0,0 +1,115 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_tl.ma".
+
+(* RELATIONAL INTERSECTION FOR PARTIAL RELOCATION MAPS **********************)
+
+(*** sand *)
+coinductive pr_sand: relation3 pr_map pr_map pr_map ≝
+(*** sand_pp *)
+| pr_sand_push_bi (f1) (f2) (f) (g1) (g2) (g):
+  pr_sand f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → pr_sand g1 g2 g
+(*** sand_np *)
+| pr_sand_next_push (f1) (f2) (f) (g1) (g2) (g):
+  pr_sand f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ⫯f = g → pr_sand g1 g2 g
+(*** sand_pn *)
+| pr_sand_push_next (f1) (f2) (f) (g1) (g2) (g):
+  pr_sand f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ⫯f = g → pr_sand g1 g2 g
+(*** sand_nn *)
+| pr_sand_next_bi (f1) (f2) (f) (g1) (g2) (g):
+  pr_sand f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → pr_sand g1 g2 g
+.
+
+interpretation
+  "relational intersection (partial relocation maps)"
+  'RIntersection f1 f2 f = (pr_sand f1 f2 f).
+
+(* Basic constructions ******************************************************)
+
+(*** sand_refl *)
+corec lemma pr_sand_idem:
+            ∀f. f ⋒ f ≘ f.
+#f cases (pr_map_split_tl f) #H
+[ @(pr_sand_push_bi … H H H)
+| @(pr_sand_next_bi … H H H)
+] -H //
+qed.
+
+(*** sand_sym *)
+corec lemma pr_sand_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
+[ @pr_sand_push_bi
+| @pr_sand_push_next
+| @pr_sand_next_push
+| @pr_sand_next_bi
+] /2 width=7 by/
+qed-.
+
+(* Basic inversions *********************************************************)
+
+(*** sand_inv_ppx *)
+lemma pr_sand_inv_push_bi:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** sand_inv_npx *)
+lemma pr_sand_inv_next_push:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** sand_inv_pnx *)
+lemma pr_sand_inv_push_next:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** sand_inv_nnx *)
+lemma pr_sand_inv_next_bi:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sand_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sand_eq.ma
new file mode 100644 (file)
index 0000000..9210685
--- /dev/null
@@ -0,0 +1,65 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_sand.ma".
+
+(* RELATIONAL INTERSECTION FOR PARTIAL RELOCATION MAPS **********************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** sand_eq_repl_back1 *)
+corec lemma pr_sand_eq_repl_back_sn:
+            ∀f2,f. pr_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 (pr_eq_inv_push_sn … Hx … H1) try cases (pr_eq_inv_next_sn … Hx … H1) -g1
+/3 width=7 by pr_sand_push_bi, pr_sand_next_push, pr_sand_push_next, pr_sand_next_bi/
+qed-.
+
+(*** sand_eq_repl_fwd1 *)
+lemma pr_sand_eq_repl_fwd_sn:
+      ∀f2,f. pr_eq_repl_fwd … (λf1. f1 ⋒ f2 ≘ f).
+#f2 #f @pr_eq_repl_sym /2 width=3 by pr_sand_eq_repl_back_sn/
+qed-.
+
+(*** sand_eq_repl_back2 *)
+corec lemma pr_sand_eq_repl_back_dx:
+            ∀f1,f. pr_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 (pr_eq_inv_push_sn … Hx … H2) try cases (pr_eq_inv_next_sn … Hx … H2) -g2
+/3 width=7 by pr_sand_push_bi, pr_sand_next_push, pr_sand_push_next, pr_sand_next_bi/
+qed-.
+
+(*** sand_eq_repl_fwd2 *)
+lemma sand_eq_repl_fwd_dx:
+      ∀f1,f. pr_eq_repl_fwd … (λf2. f1 ⋒ f2 ≘ f).
+#f1 #f @pr_eq_repl_sym /2 width=3 by pr_sand_eq_repl_back_dx/
+qed-.
+
+(*** sand_eq_repl_back3 *)
+corec lemma pr_sand_eq_repl_back:
+            ∀f1,f2. pr_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 (pr_eq_inv_push_sn … Hx … H0) try cases (pr_eq_inv_next_sn … Hx … H0) -g
+/3 width=7 by pr_sand_push_bi, pr_sand_next_push, pr_sand_push_next, pr_sand_next_bi/
+qed-.
+
+(*** sand_eq_repl_fwd3 *)
+lemma pr_sand_eq_repl_fwd:
+      ∀f1,f2. pr_eq_repl_fwd … (λf. f1 ⋒ f2 ≘ f).
+#f1 #f2 @pr_eq_repl_sym /2 width=3 by pr_sand_eq_repl_back/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj.ma
new file mode 100644 (file)
index 0000000..e419685
--- /dev/null
@@ -0,0 +1,144 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/parallel_2.ma".
+include "ground/relocation/pr_tl.ma".
+
+(* DISJOINTNESS FOR PARTIAL RELOCATION MAPS *********************************)
+
+(*** sdj *)
+coinductive pr_sdj: relation pr_map ≝
+(*** sdj_pp *)
+| pr_sdj_push_bi (f1) (f2) (g1) (g2):
+  pr_sdj f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → pr_sdj g1 g2
+(*** sdj_np *)
+| pr_sdj_next_push (f1) (f2) (g1) (g2):
+  pr_sdj f1 f2 → ↑f1 = g1 → ⫯f2 = g2 → pr_sdj g1 g2
+(*** sdj_pn *)
+| pr_sdj_push_next (f1) (f2) (g1) (g2):
+  pr_sdj f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → pr_sdj g1 g2
+.
+
+interpretation
+  "disjointness (partial relocation maps)"
+  'Parallel f1 f2 = (pr_sdj f1 f2).
+
+(* Basic constructions ******************************************************)
+
+(*** sdj_sym *)
+corec lemma pr_sdj_sym:
+            symmetric … pr_sdj.
+#f1 #f2 * -f1 -f2
+#f1 #f2 #g1 #g2 #Hf #H1 #H2
+[ @(pr_sdj_push_bi … H2 H1)
+| @(pr_sdj_push_next … H2 H1)
+| @(pr_sdj_next_push … H2 H1)
+] -g2 -g1
+/2 width=1 by/
+qed-.
+
+(* Basic inversions *********************************************************)
+
+(*** sdj_inv_pp *)
+lemma pr_sdj_inv_push_bi:
+      ∀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 (eq_inv_pr_push_bi … Hx1) -Hx1
+  lapply (eq_inv_pr_push_bi … Hx2) -Hx2 //
+| elim (eq_inv_pr_push_next … Hx1)
+| elim (eq_inv_pr_push_next … Hx2)
+]
+qed-.
+
+(*** sdj_inv_np *)
+lemma pr_sdj_inv_next_push:
+      ∀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 (eq_inv_pr_next_push … Hx1)
+| lapply (eq_inv_pr_next_bi … Hx1) -Hx1
+  lapply (eq_inv_pr_push_bi … Hx2) -Hx2 //
+| elim (eq_inv_pr_push_next … Hx2)
+]
+qed-.
+
+(*** sdj_inv_pn *)
+lemma pr_sdj_inv_push_next:
+      ∀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 (eq_inv_pr_next_push … Hx2)
+| elim (eq_inv_pr_push_next … Hx1)
+| lapply (eq_inv_pr_push_bi … Hx1) -Hx1
+  lapply (eq_inv_pr_next_bi … Hx2) -Hx2 //
+]
+qed-.
+
+(*** sdj_inv_nn *)
+lemma pr_sdj_inv_next_bi:
+      ∀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 (eq_inv_pr_next_push … Hx1)
+| elim (eq_inv_pr_next_push … Hx2)
+| elim (eq_inv_pr_next_push … Hx1)
+]
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** sdj_inv_nx *)
+lemma pr_sdj_inv_next_sn:
+      ∀g1,g2. g1 ∥ g2 → ∀f1. ↑f1 = g1 →
+      ∃∃f2. f1 ∥ f2 & ⫯f2 = g2.
+#g1 #g2 elim (pr_map_split_tl g2) #H2 #H #f1 #H1
+[ lapply (pr_sdj_inv_next_push … H … H1 H2) -H /2 width=3 by ex2_intro/
+| elim (pr_sdj_inv_next_bi … H … H1 H2)
+]
+qed-.
+
+(*** sdj_inv_xn *)
+lemma pr_sdj_inv_next_dx:
+      ∀g1,g2. g1 ∥ g2 → ∀f2. ↑f2 = g2 →
+      ∃∃f1. f1 ∥ f2 & ⫯f1 = g1.
+#g1 #g2 elim (pr_map_split_tl g1) #H1 #H #f2 #H2
+[ lapply (pr_sdj_inv_push_next … H … H1 H2) -H /2 width=3 by ex2_intro/
+| elim (pr_sdj_inv_next_bi … H … H1 H2)
+]
+qed-.
+
+(*** sdj_inv_xp *)
+lemma pr_sdj_inv_push_dx:
+      ∀g1,g2. g1 ∥ g2 → ∀f2. ⫯f2 = g2 →
+      ∨∨ ∃∃f1. f1 ∥ f2 & ⫯f1 = g1
+       | ∃∃f1. f1 ∥ f2 & ↑f1 = g1.
+#g1 #g2 elim (pr_map_split_tl g1) #H1 #H #f2 #H2
+[ lapply (pr_sdj_inv_push_bi … H … H1 H2)
+| lapply (pr_sdj_inv_next_push … H … H1 H2)
+] -H -H2
+/3 width=3 by ex2_intro, or_introl, or_intror/
+qed-.
+
+(*** sdj_inv_px *)
+lemma pr_sdj_inv_push_sn:
+      ∀g1,g2. g1 ∥ g2 → ∀f1. ⫯f1 = g1 →
+      ∨∨ ∃∃f2. f1 ∥ f2 & ⫯f2 = g2
+       | ∃∃f2. f1 ∥ f2 & ↑f2 = g2.
+#g1 #g2 elim (pr_map_split_tl g2) #H2 #H #f1 #H1
+[ lapply (pr_sdj_inv_push_bi … H … H1 H2)
+| lapply (pr_sdj_inv_push_next … H … H1 H2)
+] -H -H1
+/3 width=3 by ex2_intro, or_introl, or_intror/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj_eq.ma
new file mode 100644 (file)
index 0000000..18bdc8f
--- /dev/null
@@ -0,0 +1,54 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_tl_eq.ma".
+include "ground/relocation/pr_sdj.ma".
+
+(* DISJOINTNESS FOR PARTIAL RELOCATION MAPS *********************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** sdj_eq_repl_back1 *)
+corec lemma pr_sdj_eq_repl_back_sn:
+            ∀f2. pr_eq_repl_back … (λf1. f1 ∥ f2).
+#f2 #f1 * -f2 -f1
+#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
+[ cases (pr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by pr_sdj_push_bi/
+| cases (pr_eq_inv_next_sn …  H0 …  H1) -g1 /3 width=5 by pr_sdj_next_push/
+| cases (pr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by pr_sdj_push_next/
+]
+qed-.
+
+(*** sdj_eq_repl_fwd1 *)
+lemma pr_sdj_eq_repl_fwd_sn:
+      ∀f2. pr_eq_repl_fwd … (λf1. f1 ∥ f2).
+#f2 @pr_eq_repl_sym /2 width=3 by pr_sdj_eq_repl_back_sn/
+qed-.
+
+(*** sdj_eq_repl_back2 *)
+corec lemma pr_sdj_eq_repl_back_dx:
+            ∀f1. pr_eq_repl_back … (λf2. f1 ∥ f2).
+#f1 #f2 * -f1 -f2
+#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
+[ cases (pr_eq_inv_push_sn …  H0 …  H2) -g2 /3 width=5 by pr_sdj_push_bi/
+| cases (pr_eq_inv_push_sn …  H0 …  H2) -g2 /3 width=5 by pr_sdj_next_push/
+| cases (pr_eq_inv_next_sn …  H0 …  H2) -g2 /3 width=5 by pr_sdj_push_next/
+]
+qed-.
+
+(*** sdj_eq_repl_fwd2 *)
+lemma pr_sdj_eq_repl_fwd_dx:
+      ∀f1. pr_eq_repl_fwd … (λf2. f1 ∥ f2).
+#f1 @pr_eq_repl_sym /2 width=3 by pr_sdj_eq_repl_back_dx/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sdj_isi.ma
new file mode 100644 (file)
index 0000000..f8a9424
--- /dev/null
@@ -0,0 +1,47 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi.ma".
+include "ground/relocation/pr_sdj.ma".
+
+(* DISJOINTNESS FOR PARTIAL RELOCATION MAPS *********************************)
+
+(* Constructions with pr_isi ************************************************)
+
+(*** sdj_isid_dx *)
+corec lemma pr_sdj_isi_dx:
+            ∀f2. 𝐈❪f2❫ → ∀f1. f1 ∥ f2.
+#f2 * -f2
+#f2 #g2 #Hf2 #H2 #f1 cases (pr_map_split_tl f1) *
+/3 width=5 by pr_sdj_next_push, pr_sdj_push_bi/
+qed.
+
+(*** sdj_isid_sn *)
+corec lemma pr_sdj_isi_sn:
+            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ∥ f2.
+#f1 * -f1
+#f1 #g1 #Hf1 #H1 #f2 cases (pr_map_split_tl f2) *
+/3 width=5 by pr_sdj_push_next, pr_sdj_push_bi/
+qed.
+
+(* Inversions with pr_isi ***************************************************)
+
+(*** sdj_inv_refl *)
+corec lemma pr_sdj_inv_refl:
+            ∀f. f ∥ f →  𝐈❪f❫.
+#f cases (pr_map_split_tl f) #Hf #H
+[ lapply (pr_sdj_inv_push_bi … H … Hf Hf) -H /3 width=3 by pr_isi_push/
+| elim (pr_sdj_inv_next_bi … H … Hf Hf)
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle.ma
new file mode 100644 (file)
index 0000000..df022a1
--- /dev/null
@@ -0,0 +1,162 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_tl.ma".
+
+(* INCLUSION FOR PARTIAL RELOCATION MAPS ************************************)
+
+(*** sle *)
+coinductive pr_sle: relation pr_map ≝
+(*** sle_push *)
+| pr_sle_push (f1) (f2) (g1) (g2):
+  pr_sle f1 f2 → ⫯f1 = g1 → ⫯f2 = g2 → pr_sle g1 g2
+(*** sle_next *)
+| pr_sle_next (f1) (f2) (g1) (g2):
+  pr_sle f1 f2 → ↑f1 = g1 → ↑f2 = g2 → pr_sle g1 g2
+(*** sle_weak *)
+| pr_sle_weak (f1) (f2) (g1) (g2):
+  pr_sle f1 f2 → ⫯f1 = g1 → ↑f2 = g2 → pr_sle g1 g2
+.
+
+interpretation
+  "inclusion (partial relocation maps)"
+  'subseteq f1 f2 = (pr_sle f1 f2).
+
+(* Basic constructions ******************************************************)
+
+(*** sle_refl *)
+corec lemma pr_sle_refl:
+            reflexive … pr_sle.
+#f cases (pr_map_split_tl f) #H
+[ @(pr_sle_push … H H) | @(pr_sle_next … H H) ] -H //
+qed.
+
+(* Basic inversions *********************************************************)
+
+(*** sle_inv_xp *)
+lemma pr_sle_inv_push_dx:
+      ∀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 (eq_inv_pr_push_bi … Hx2) -Hx2 /2 width=3 by ex2_intro/ ]
+elim (eq_inv_pr_push_next … Hx2)
+qed-.
+
+(*** sle_inv_nx *)
+lemma pr_sle_inv_next_sn:
+      ∀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 (eq_inv_pr_next_bi … Hx1) -Hx1 /2 width=3 by ex2_intro/ ]
+elim (eq_inv_pr_next_push … Hx1)
+qed-.
+
+(*** sle_inv_pn *)
+lemma pr_sle_inv_push_next:
+      ∀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 (eq_inv_pr_next_push … Hx2)
+| elim (eq_inv_pr_push_next … Hx1)
+| lapply (eq_inv_pr_push_bi … Hx1) -Hx1
+  lapply (eq_inv_pr_next_bi … Hx2) -Hx2 //
+]
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** sle_inv_pp *)
+lemma pr_sle_inv_push_bi:
+      ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ⊆ f2.
+#g1 #g2 #H #f1 #f2 #H1 #H2
+elim (pr_sle_inv_push_dx … H … H2) -g2 #x1 #H #Hx1 destruct
+lapply (eq_inv_pr_push_bi … Hx1) -Hx1 //
+qed-.
+
+(*** sle_inv_nn *)
+lemma pr_sle_inv_next_bi:
+      ∀g1,g2. g1 ⊆ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → f1 ⊆ f2.
+#g1 #g2 #H #f1 #f2 #H1 #H2
+elim (pr_sle_inv_next_sn … H … H1) -g1 #x2 #H #Hx2 destruct
+lapply (eq_inv_pr_next_bi … Hx2) -Hx2 //
+qed-.
+
+(*** sle_inv_px *)
+lemma pr_sle_inv_push_sn:
+      ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 →
+      ∨∨ ∃∃f2. f1 ⊆ f2 & ⫯f2 = g2 
+       | ∃∃f2. f1 ⊆ f2 & ↑f2 = g2.
+#g1 #g2
+elim (pr_map_split_tl g2) #H2 #H #f1 #H1
+[ lapply (pr_sle_inv_push_bi … H … H1 H2)
+| lapply (pr_sle_inv_push_next … H … H1 H2)
+] -H -H1
+/3 width=3 by ex2_intro, or_introl, or_intror/
+qed-.
+
+(*** sle_inv_xn *)
+lemma pr_sle_inv_next_dx:
+      ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 →
+      ∨∨ ∃∃f1. f1 ⊆ f2 & ⫯f1 = g1
+       | ∃∃f1. f1 ⊆ f2 & ↑f1 = g1.
+#g1 #g2
+elim (pr_map_split_tl g1) #H1 #H #f2 #H2
+[ lapply (pr_sle_inv_push_next … H … H1 H2)
+| lapply (pr_sle_inv_next_bi … H … H1 H2)
+] -H -H2
+/3 width=3 by ex2_intro, or_introl, or_intror/
+qed-.
+
+(* Constructions with pr_tl *************************************************)
+
+(*** sle_px_tl *)
+lemma pr_sle_push_sn_tl:
+      ∀g1,g2. g1 ⊆ g2 → ∀f1. ⫯f1 = g1 → f1 ⊆ ⫰g2.
+#g1 #g2 #H #f1 #H1
+elim (pr_sle_inv_push_sn … H … H1) -H -H1 * //
+qed.
+
+(*** sle_xn_tl *)
+lemma pr_sle_next_dx_tl:
+      ∀g1,g2. g1 ⊆ g2 → ∀f2. ↑f2 = g2 → ⫰g1 ⊆ f2.
+#g1 #g2 #H #f2 #H2
+elim (pr_sle_inv_next_dx … H … H2) -H -H2 * //
+qed.
+
+(*** sle_tl *)
+lemma pr_sle_tl:
+      ∀f1,f2. f1 ⊆ f2 → ⫰f1 ⊆ ⫰f2.
+#f1 elim (pr_map_split_tl f1) #H1 #f2 #H
+[ lapply (pr_sle_push_sn_tl … H … H1) -H //
+| elim (pr_sle_inv_next_sn … H … H1) -H //
+]
+qed.
+
+(* Inversions with pr_tl ****************************************************)
+
+(*** sle_inv_tl_sn *)
+lemma pr_sle_inv_tl_sn:
+      ∀f1,f2. ⫰f1 ⊆ f2 → f1 ⊆ ↑f2.
+#f1 elim (pr_map_split_tl f1) #H #f2 #Hf12
+/2 width=5 by pr_sle_next, pr_sle_weak/
+qed-.
+
+(*** sle_inv_tl_dx *)
+lemma pr_sle_inv_tl_dx:
+      ∀f1,f2. f1 ⊆ ⫰f2 → ⫯f1 ⊆ f2.
+#f1 #f2 elim (pr_map_split_tl f2) #H #Hf12
+/2 width=5 by pr_sle_push, pr_sle_weak/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_eq.ma
new file mode 100644 (file)
index 0000000..383ad12
--- /dev/null
@@ -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/relocation/pr_sle.ma".
+(* * this should go first *)
+include "ground/relocation/pr_tl_eq.ma".
+
+(* INCLUSION FOR PARTIAL RELOCATION MAPS ************************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** sle_eq_repl_back1 *)
+corec lemma pr_sle_eq_repl_back_sn:
+            ∀f2:pr_map. pr_eq_repl_back … (λf1:pr_map. f1 ⊆ f2).
+#f2 #f1 * -f2 -f1
+#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
+[ cases (pr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by pr_sle_push/
+| cases (pr_eq_inv_next_sn …  H0 …  H1) -g1 /3 width=5 by pr_sle_next/
+| cases (pr_eq_inv_push_sn …  H0 …  H1) -g1 /3 width=5 by pr_sle_weak/
+]
+qed-.
+
+(*** sle_eq_repl_fwd1 *)
+lemma pr_sle_eq_repl_fwd_sn:
+      ∀f2. pr_eq_repl_fwd … (λf1. f1 ⊆ f2).
+#f2 @pr_eq_repl_sym /2 width=3 by pr_sle_eq_repl_back_sn/
+qed-.
+
+(*** sle_eq_repl_back2 *)
+corec lemma pr_sle_eq_repl_back_dx:
+            ∀f1. pr_eq_repl_back … (λf2. f1 ⊆ f2).
+#f1 #f2 * -f1 -f2
+#f1 #f2 #g1 #g2 #Hf #H1 #H2 #g #H0
+[ cases (pr_eq_inv_push_sn …  H0 …  H2) -g2 /3 width=5 by pr_sle_push/
+| cases (pr_eq_inv_next_sn …  H0 …  H2) -g2 /3 width=5 by pr_sle_next/
+| cases (pr_eq_inv_next_sn …  H0 …  H2) -g2 /3 width=5 by pr_sle_weak/
+]
+qed-.
+
+(*** sle_eq_repl_fwd2 *)
+lemma pr_sle_eq_repl_fwd_dx:
+      ∀f1. pr_eq_repl_fwd … (λf2. f1 ⊆ f2).
+#f1 @pr_eq_repl_sym /2 width=3 by pr_sle_eq_repl_back_dx/
+qed-.
+
+(*** sle_refl_eq *)
+lemma pr_sle_refl_eq:
+      ∀f1,f2. f1 ≡ f2 → f1 ⊆ f2.
+/2 width=3 by pr_sle_eq_repl_back_dx/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_isd.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_isd.ma
new file mode 100644 (file)
index 0000000..1f92d0c
--- /dev/null
@@ -0,0 +1,40 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isd.ma".
+include "ground/relocation/pr_sle.ma".
+
+(* INCLUSION FOR PARTIAL RELOCATION MAPS ************************************)
+
+(* Constructions with pr_isd ************************************************)
+
+(*** sle_isdiv_dx *)
+corec lemma pr_sle_isd_dx:
+            ∀f2. 𝛀❪f2❫ → ∀f1. f1 ⊆ f2.
+#f2 * -f2
+#f2 #g2 #Hf2 #H2 #f1 cases (pr_map_split_tl f1) *
+/3 width=5 by pr_sle_weak, pr_sle_next/
+qed.
+
+(* Inversions with pr_isd ***************************************************)
+
+(*** sle_inv_isdiv_sn *)
+corec lemma pr_sle_inv_isd_sn:
+            ∀f1,f2. f1 ⊆ f2 → 𝛀❪f1❫ → 𝛀❪f2❫.
+#f1 #f2 * -f1 -f2
+#f1 #f2 #g1 #g2 #Hf * * #H
+[1,3: elim (pr_isd_inv_push … H) // ]
+lapply (pr_isd_inv_next … H ??) -H
+/3 width=3 by pr_isd_next/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_isi.ma
new file mode 100644 (file)
index 0000000..ffe97e6
--- /dev/null
@@ -0,0 +1,40 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_isi.ma".
+include "ground/relocation/pr_sle.ma".
+
+(* INCLUSION FOR PARTIAL RELOCATION MAPS ************************************)
+
+(* Constructions with pr_isi ************************************************)
+
+(*** sle_isid_sn *)
+corec lemma pr_sle_isi_sn:
+            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⊆ f2.
+#f1 * -f1
+#f1 #g1 #Hf1 #H1 #f2 cases (pr_map_split_tl f2) *
+/3 width=5 by pr_sle_weak, pr_sle_push/
+qed.
+
+(* Inversions with pr_isi ***************************************************)
+
+(*** sle_inv_isid_dx *)
+corec lemma pr_sle_inv_isi_dx:
+            ∀f1,f2. f1 ⊆ f2 → 𝐈❪f2❫ → 𝐈❪f1❫.
+#f1 #f2 * -f1 -f2
+#f1 #f2 #g1 #g2 #Hf * * #H
+[2,3: elim (pr_isi_inv_next … H) // ]
+lapply (pr_isi_inv_push … H ??) -H
+/3 width=3 by pr_isi_push/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_pushs.ma
new file mode 100644 (file)
index 0000000..f079997
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_pushs.ma".
+include "ground/relocation/pr_sle.ma".
+
+(* INCLUSION FOR PARTIAL RELOCATION MAPS ************************************)
+
+(* Constructions with pr_pushs **********************************************)
+
+(*** sle_pushs *)
+lemma pr_sle_pushs:
+      ∀f1,f2. f1 ⊆ f2 → ∀n. ⫯*[n] f1 ⊆ ⫯*[n] f2.
+#f1 #f2 #Hf12 #n @(nat_ind_succ … n) -n
+/2 width=5 by pr_sle_push/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_sle.ma
new file mode 100644 (file)
index 0000000..b7a7096
--- /dev/null
@@ -0,0 +1,30 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_sle.ma".
+
+(* INCLUSION FOR PARTIAL RELOCATION MAPS ************************************)
+
+(* Main constructions *******************************************************)
+
+(*** sle_trans *)
+corec theorem pr_sle_trans:
+              Transitive … pr_sle.
+#f1 #f * -f1 -f
+#f1 #f #g1 #g #Hf #H1 #H #g2 #H0
+[ cases (pr_sle_inv_push_sn … H0 … H) *
+|*: cases (pr_sle_inv_next_sn … H0 … H)
+] -g
+/3 width=5 by pr_sle_push, pr_sle_next, pr_sle_weak/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sle_tls.ma
new file mode 100644 (file)
index 0000000..3b4b42e
--- /dev/null
@@ -0,0 +1,27 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_sle.ma".
+
+(* INCLUSION FOR PARTIAL RELOCATION MAPS ************************************)
+
+(* Constructions with pr_tls ************************************************)
+
+(*** sle_tls *)
+lemma pr_sle_tls:
+      ∀f1,f2. f1 ⊆ f2 → ∀n. ⫰*[n] f1 ⊆ ⫰*[n] f2.
+#f1 #f2 #Hf12 #n @(nat_ind_succ … n) -n
+/2 width=5 by pr_sle_tl/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor.ma
new file mode 100644 (file)
index 0000000..0d9f2a8
--- /dev/null
@@ -0,0 +1,340 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/runion_3.ma".
+include "ground/xoa/or_3.ma".
+include "ground/xoa/ex_3_2.ma".
+include "ground/relocation/pr_tl.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(*** sor *)
+coinductive pr_sor: relation3 pr_map pr_map pr_map ≝
+(*** sor_pp *)
+| pr_sor_push_bi (f1) (f2) (f) (g1) (g2) (g):
+  pr_sor f1 f2 f → ⫯f1 = g1 → ⫯f2 = g2 → ⫯f = g → pr_sor g1 g2 g
+(*** sor_np *)
+| pr_sor_next_push (f1) (f2) (f) (g1) (g2) (g):
+  pr_sor f1 f2 f → ↑f1 = g1 → ⫯f2 = g2 → ↑f = g → pr_sor g1 g2 g
+(*** sor_pn *)
+| pr_sor_push_next (f1) (f2) (f) (g1) (g2) (g):
+  pr_sor f1 f2 f → ⫯f1 = g1 → ↑f2 = g2 → ↑f = g → pr_sor g1 g2 g
+(*** sor_nn *)
+| pr_sor_next_bi (f1) (f2) (f) (g1) (g2) (g):
+  pr_sor f1 f2 f → ↑f1 = g1 → ↑f2 = g2 → ↑f = g → pr_sor g1 g2 g
+.
+
+interpretation
+  "relational union (partial relocation maps)"
+  'RUnion f1 f2 f = (pr_sor f1 f2 f).
+
+(* Basic constructions ******************************************************)
+
+(*** sor_idem *)
+corec lemma pr_sor_idem:
+            ∀f. f ⋓ f ≘ f.
+#f cases (pr_map_split_tl f) #H
+[ @(pr_sor_push_bi … H H H)
+| @(pr_sor_next_bi … H H H)
+] -H //
+qed.
+
+(*** sor_comm *)
+corec lemma pr_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
+[ @pr_sor_push_bi | @pr_sor_push_next | @pr_sor_next_push | @pr_sor_next_bi ] /2 width=7 by/
+qed-.
+
+(* Basic inversions *********************************************************)
+
+(*** sor_inv_ppx *)
+lemma pr_sor_inv_push_bi:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** sor_inv_npx *)
+lemma pr_sor_inv_next_push:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** sor_inv_pnx *)
+lemma pr_sor_inv_push_next:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
+
+(*** sor_inv_nnx *)
+lemma pr_sor_inv_next_bi:
+      ∀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 (>(eq_inv_pr_push_bi … Hx1) -x1) try (>(eq_inv_pr_next_bi … Hx1) -x1)
+try elim (eq_inv_pr_push_next … Hx1) try elim (eq_inv_pr_next_push … Hx1)
+try (>(eq_inv_pr_push_bi … Hx2) -x2) try (>(eq_inv_pr_next_bi … Hx2) -x2)
+try elim (eq_inv_pr_push_next … Hx2) try elim (eq_inv_pr_next_push … Hx2)
+/2 width=3 by ex2_intro/
+qed-.
+
+(* Advanced inversions ******************************************************)
+
+(*** sor_inv_ppn *)
+lemma pr_sor_inv_push_bi_next:
+      ∀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 (pr_sor_inv_push_bi … H … H1 H2) -g1 -g2 #x #_ #H destruct
+/2 width=3 by eq_inv_pr_push_next/
+qed-.
+
+(*** sor_inv_nxp *)
+lemma pr_sor_inv_next_sn_push:
+      ∀g1,g2,g. g1 ⋓ g2 ≘ g →
+      ∀f1,f. ↑f1 = g1 → ⫯f = g → ⊥.
+#g1 #g2 #g #H #f1 #f #H1 #H0
+elim (pr_map_split_tl g2) #H2
+[ elim (pr_sor_inv_next_push … H … H1 H2)
+| elim (pr_sor_inv_next_bi … H … H1 H2)
+] -g1 #x #H
+/2 width=3 by eq_inv_pr_next_push/
+qed-.
+
+(*** sor_inv_xnp *)
+lemma pr_sor_inv_next_dx_push:
+      ∀g1,g2,g. g1 ⋓ g2 ≘ g →
+      ∀f2,f. ↑f2 = g2 → ⫯f = g → ⊥.
+#g1 #g2 #g #H #f2 #f #H2 #H0
+elim (pr_map_split_tl g1) #H1
+[ elim (pr_sor_inv_push_next … H … H1 H2)
+| elim (pr_sor_inv_next_bi … H … H1 H2)
+] -g2 #x #H
+/2 width=3 by eq_inv_pr_next_push/
+qed-.
+
+(*** sor_inv_ppp *)
+lemma pr_sor_inv_push_bi_push:
+      ∀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 (pr_sor_inv_push_bi … H … H1 H2) -g1 -g2 #x #Hx #H destruct
+<(eq_inv_pr_push_bi … H) -f //
+qed-.
+
+(*** sor_inv_npn *)
+lemma pr_sor_inv_next_push_next:
+      ∀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 (pr_sor_inv_next_push … H … H1 H2) -g1 -g2 #x #Hx #H destruct
+<(eq_inv_pr_next_bi … H) -f //
+qed-.
+
+(*** sor_inv_pnn *)
+lemma pr_sor_inv_push_next_next:
+      ∀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 (pr_sor_inv_push_next … H … H1 H2) -g1 -g2 #x #Hx #H destruct
+<(eq_inv_pr_next_bi … H) -f //
+qed-.
+
+(*** sor_inv_nnn *)
+lemma pr_sor_inv_next_bi_next:
+      ∀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 (pr_sor_inv_next_bi … H … H1 H2) -g1 -g2 #x #Hx #H destruct
+<(eq_inv_pr_next_bi … H) -f //
+qed-.
+
+(*** sor_inv_pxp *)
+lemma pr_sor_inv_push_sn_push:
+      ∀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 (pr_map_split_tl g2) #H2
+[ /3 width=7 by pr_sor_inv_push_bi_push, ex2_intro/
+| elim (pr_sor_inv_next_dx_push … H … H2 H0)
+]
+qed-.
+
+(*** sor_inv_xpp *)
+lemma pr_sor_inv_push_dx_push:
+      ∀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 (pr_map_split_tl g1) #H1
+[ /3 width=7 by pr_sor_inv_push_bi_push, ex2_intro/
+| elim (pr_sor_inv_next_sn_push … H … H1 H0)
+]
+qed-.
+
+(*** sor_inv_pxn *)
+lemma pr_sor_inv_push_sn_next:
+      ∀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 (pr_map_split_tl g2) #H2
+[ elim (pr_sor_inv_push_bi_next … H … H1 H2 H0)
+| /3 width=7 by pr_sor_inv_push_next_next, ex2_intro/
+]
+qed-.
+
+(*** sor_inv_xpn *)
+lemma pr_sor_inv_push_dx_next:
+      ∀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 (pr_map_split_tl g1) #H1
+[ elim (pr_sor_inv_push_bi_next … H … H1 H2 H0)
+| /3 width=7 by pr_sor_inv_next_push_next, ex2_intro/
+]
+qed-.
+
+(*** sor_inv_xxp *)
+lemma pr_sor_inv_push:
+      ∀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 (pr_map_split_tl g1) #H1
+[ elim (pr_sor_inv_push_sn_push … H … H1 H0) -g /2 width=5 by ex3_2_intro/
+| elim (pr_sor_inv_next_sn_push … H … H1 H0)
+]
+qed-.
+
+(*** sor_inv_nxn *)
+lemma pr_sor_inv_next_sn_next:
+      ∀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 (pr_map_split_tl g2)
+/4 width=7 by pr_sor_inv_next_push_next, pr_sor_inv_next_bi_next, ex2_intro, or_intror, or_introl/
+qed-.
+
+(*** sor_inv_xnn *)
+lemma pr_sor_inv_next_dx_next:
+      ∀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 (pr_map_split_tl g1)
+/4 width=7 by pr_sor_inv_push_next_next, pr_sor_inv_next_bi_next, ex2_intro, or_intror, or_introl/
+qed-.
+
+(*** sor_inv_xxn *)
+lemma pr_sor_inv_next:
+      ∀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 (pr_map_split_tl g1) #H1
+[ elim (pr_sor_inv_push_sn_next … H … H1 H0) -g
+  /3 width=5 by or3_intro1, ex3_2_intro/
+| elim (pr_sor_inv_next_sn_next … H … H1 H0) -g *
+  /3 width=5 by or3_intro0, or3_intro2, ex3_2_intro/
+]
+qed-.
+
+(* Constructions with pr_tl *************************************************)
+
+(*** sor_tl *)
+lemma pr_sor_tl:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ⫰f1 ⋓ ⫰f2 ≘ ⫰f.
+#f1 cases (pr_map_split_tl f1) #H1
+#f2 cases (pr_map_split_tl f2) #H2
+#f #Hf
+[ cases (pr_sor_inv_push_bi … Hf … H1 H2)
+| cases (pr_sor_inv_push_next … Hf … H1 H2)
+| cases (pr_sor_inv_next_push … Hf … H1 H2)
+| cases (pr_sor_inv_next_bi … Hf … H1 H2)
+] -Hf #g #Hg #H destruct //
+qed.
+
+(*** sor_xxn_tl *)
+lemma pr_sor_next_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 (pr_sor_inv_next … H … H0) -H -H0 *
+/3 width=5 by ex3_2_intro, or_introl, or_intror/
+qed-.
+
+(*** sor_xnx_tl *)
+lemma pr_sor_next_dx_tl:
+      ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f2. ↑f2 = g2 →
+      ∃∃f1,f. f1 ⋓ f2 ≘ f & ⫰g1 = f1 & ↑f = g.
+#g1 elim (pr_map_split_tl g1) #H1 #g2 #g #H #f2 #H2
+[ elim (pr_sor_inv_push_next … H … H1 H2)
+| elim (pr_sor_inv_next_bi … H … H1 H2)
+] -g2
+/3 width=5 by ex3_2_intro/
+qed-.
+
+(*** sor_nxx_tl *)
+lemma pr_sor_next_sn_tl:
+      ∀g1,g2,g. g1 ⋓ g2 ≘ g → ∀f1. ↑f1 = g1 →
+      ∃∃f2,f. f1 ⋓ f2 ≘ f & ⫰g2 = f2 & ↑f = g.
+#g1 #g2 elim (pr_map_split_tl g2) #H2 #g #H #f1 #H1
+[ elim (pr_sor_inv_next_push … H … H1 H2)
+| elim (pr_sor_inv_next_bi … H … H1 H2)
+] -g1
+/3 width=5 by ex3_2_intro/
+qed-.
+
+(* Inversions with pr_tl ****************************************************)
+
+(*** sor_inv_tl_sn *)
+lemma pr_sor_inv_tl_sn:
+      ∀f1,f2,f. ⫰f1 ⋓ f2 ≘ f → f1 ⋓ ↑f2 ≘ ↑f.
+#f1 #f2 #f elim (pr_map_split_tl f1)
+/2 width=7 by pr_sor_push_next, pr_sor_next_bi/
+qed-.
+
+(*** sor_inv_tl_dx *)
+lemma pr_sor_inv_tl_dx:
+      ∀f1,f2,f. f1 ⋓ ⫰f2 ≘ f → ↑f1 ⋓ f2 ≘ ↑f.
+#f1 #f2 #f elim (pr_map_split_tl f2)
+/2 width=7 by pr_sor_next_push, pr_sor_next_bi/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_coafter_ist_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_coafter_ist_isf.ma
new file mode 100644 (file)
index 0000000..f712464
--- /dev/null
@@ -0,0 +1,76 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_isf.ma".
+include "ground/relocation/pr_coafter_isi.ma".
+include "ground/relocation/pr_coafter_ist_isi.ma".
+include "ground/relocation/pr_sor_isi.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Constructions with pr_coafter and pr_ist and pr_isf **********************)
+
+(*** coafter_sor *)
+lemma pr_sor_coafter_dx_tans:
+      ∀f. 𝐅❪f❫ → ∀f2. 𝐓❪f2❫ → ∀f1. f2 ~⊚ f1 ≘ f → ∀f1a,f1b. f1a ⋓ f1b ≘ f1 →
+      ∃∃fa,fb. f2 ~⊚ f1a ≘ fa & f2 ~⊚ f1b ≘ fb & fa ⋓ fb ≘ f.
+@pr_isf_ind
+[ #f #Hf #f2 #Hf2 #f1 #Hf #f1a #f1b #Hf1
+  lapply (pr_coafter_des_ist_sn_isi … Hf ??) -Hf // #H2f1
+  elim (pr_sor_inv_isi … Hf1) -Hf1 //
+  /3 width=5 by pr_coafter_isi_dx, pr_sor_idem, ex3_2_intro/
+| #f #_ #IH #f2 #Hf2 #f1 #H1 #f1a #f1b #H2
+  elim (pr_coafter_inv_push … H1) -H1 [1,3: * |*: // ]
+  [ #g2 #g1 #Hf #Hgf2 #Hgf1
+    elim (pr_sor_inv_push … H2) -H2 [ |*: // ] #ga #gb #Hg1
+    lapply (pr_ist_inv_push … Hf2 … Hgf2) -Hf2 #Hg2
+    elim (IH … Hf … Hg1) // -f1 -g1 -IH -Hg2
+    /3 width=11 by pr_coafter_refl, pr_sor_push_bi, ex3_2_intro/
+  | #g2 #Hf #Hgf2
+    lapply (pr_ist_inv_next … Hf2 … Hgf2) -Hf2 #Hg2
+    elim (IH … Hf … H2) // -f1 -IH -Hg2
+    /3 width=11 by pr_coafter_next, pr_sor_push_bi, ex3_2_intro/
+  ]
+| #f #_ #IH #f2 #Hf2 #f1 #H1 #f1a #f1b #H2
+  elim (pr_coafter_inv_next … H1) -H1 [ |*: // ] #g2 #g1 #Hf #Hgf2 #Hgf1
+  lapply (pr_ist_inv_push … Hf2 … Hgf2) -Hf2 #Hg2
+  elim (pr_sor_inv_next … H2) -H2 [1,3,4: * |*: // ] #ga #gb #Hg1
+  elim (IH … Hf … Hg1) // -f1 -g1 -IH -Hg2
+  /3 width=11 by pr_coafter_refl, pr_coafter_push, pr_sor_next_push, pr_sor_push_next, pr_sor_next_bi, ex3_2_intro/
+]
+qed-.
+
+(*** coafter_inv_sor *)
+lemma pr_sor_coafter_div:
+      ∀f. 𝐅❪f❫ → ∀f2. 𝐓❪f2❫ → ∀f1. f2 ~⊚ f1 ≘ f → ∀fa,fb. fa ⋓ fb ≘ f →
+      ∃∃f1a,f1b. f2 ~⊚ f1a ≘ fa & f2 ~⊚ f1b ≘ fb & f1a ⋓ f1b ≘ f1.
+@pr_isf_ind
+[ #f #Hf #f2 #Hf2 #f1 #H1f #fa #fb #H2f
+  elim (pr_sor_inv_isi … H2f) -H2f //
+  lapply (pr_coafter_des_ist_sn_isi … H1f ??) -H1f //
+  /3 width=5 by ex3_2_intro, pr_coafter_isi_dx, pr_sor_isi_bi_isi/
+| #f #_ #IH #f2 #Hf2 #f1 #H1 #fa #fb #H2
+  elim (pr_sor_inv_push … H2) -H2 [ |*: // ] #ga #gb #H2f
+  elim (pr_coafter_inv_push … H1) -H1 [1,3: * |*: // ] #g2 [ #g1 ] #H1f #Hgf2
+  [ lapply (pr_ist_inv_push … Hf2 … Hgf2) | lapply (pr_ist_inv_next … Hf2 … Hgf2) ] -Hf2 #Hg2
+  elim (IH … Hg2 … H1f … H2f) -f -Hg2
+  /3 width=11 by pr_sor_push_bi, ex3_2_intro, pr_coafter_refl, pr_coafter_next/
+| #f #_ #IH #f2 #Hf2 #f1 #H1 #fa #fb #H2
+  elim (pr_coafter_inv_next … H1) -H1 [ |*: // ] #g2 #g1 #H1f #Hgf2
+  lapply (pr_ist_inv_push … Hf2 … Hgf2) -Hf2 #Hg2
+  elim (pr_sor_inv_next … H2) -H2 [1,3,4: * |*: // ] #ga #gb #H2f
+  elim (IH … Hg2 … H1f … H2f) -f -Hg2
+  /3 width=11 by pr_sor_next_push, pr_sor_push_next, pr_sor_next_bi, ex3_2_intro, pr_coafter_refl, pr_coafter_push/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_eq.ma
new file mode 100644 (file)
index 0000000..fca0452
--- /dev/null
@@ -0,0 +1,65 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_sor.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** sor_eq_repl_back1 *)
+corec lemma pr_sor_eq_repl_back_sn:
+            ∀f2,f. pr_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 (pr_eq_inv_push_sn … Hx … H1) try cases (pr_eq_inv_next_sn … Hx … H1) -g1
+/3 width=7 by pr_sor_push_bi, pr_sor_next_push, pr_sor_push_next, pr_sor_next_bi/
+qed-.
+
+(*** sor_eq_repl_fwd1 *)
+lemma pr_sor_eq_repl_fwd_sn:
+      ∀f2,f. pr_eq_repl_fwd … (λf1. f1 ⋓ f2 ≘ f).
+#f2 #f @pr_eq_repl_sym /2 width=3 by pr_sor_eq_repl_back_sn/
+qed-.
+
+(*** sor_eq_repl_back2 *)
+corec lemma pr_sor_eq_repl_back_dx:
+            ∀f1,f. pr_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 (pr_eq_inv_push_sn … Hx … H2) try cases (pr_eq_inv_next_sn … Hx … H2) -g2
+/3 width=7 by pr_sor_push_bi, pr_sor_next_push, pr_sor_push_next, pr_sor_next_bi/
+qed-.
+
+(*** sor_eq_repl_fwd2 *)
+lemma pr_sor_eq_repl_fwd_dx:
+      ∀f1,f. pr_eq_repl_fwd … (λf2. f1 ⋓ f2 ≘ f).
+#f1 #f @pr_eq_repl_sym /2 width=3 by pr_sor_eq_repl_back_dx/
+qed-.
+
+(*** sor_eq_repl_back3 *)
+corec lemma pr_sor_eq_repl_back:
+            ∀f1,f2. pr_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 (pr_eq_inv_push_sn … Hx … H0) try cases (pr_eq_inv_next_sn … Hx … H0) -g
+/3 width=7 by pr_sor_push_bi, pr_sor_next_push, pr_sor_push_next, pr_sor_next_bi/
+qed-.
+
+(*** sor_eq_repl_fwd3 *)
+lemma pr_sor_eq_repl_fwd:
+      ∀f1,f2. pr_eq_repl_fwd … (λf. f1 ⋓ f2 ≘ f).
+#f1 #f2 @pr_eq_repl_sym /2 width=3 by pr_sor_eq_repl_back/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_fcla.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_fcla.ma
new file mode 100644 (file)
index 0000000..a1275f2
--- /dev/null
@@ -0,0 +1,71 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/xoa/ex_3_1.ma".
+include "ground/xoa/ex_4_2.ma".
+include "ground/arith/nat_plus.ma".
+include "ground/arith/nat_le_max.ma".
+include "ground/relocation/pr_fcla_eq.ma".
+include "ground/relocation/pr_sor_isi.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Constructions with pr_fcla ***********************************************)
+
+(*** sor_fcla_ex *)
+lemma pr_sor_fcla_bi:
+      ∀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 pr_sor_isi_sn, ex4_2_intro/
+#f1 #n1 #Hf1 #IH #f2 #n2 * -f2 -n2 /3 width=6 by pr_fcla_push, pr_fcla_next, ex4_2_intro, pr_sor_isi_dx/
+#f2 #n2 #Hf2 elim (IH … Hf2) -IH -Hf2 -Hf1 [2,4: #f #n <nplus_succ_dx ] (* * full auto fails *)
+[ /3 width=7 by pr_fcla_next, pr_sor_push_next, nle_max_sn_succ_dx, nle_succ_bi, ex4_2_intro/
+| /4 width=7 by pr_fcla_next, pr_sor_next_bi, nle_succ_dx, nle_succ_bi, ex4_2_intro/
+| /3 width=7 by pr_fcla_push, pr_sor_push_bi, ex4_2_intro/
+| /3 width=7 by pr_fcla_next, pr_sor_next_push, nle_max_sn_succ_sn, nle_succ_bi, ex4_2_intro/
+]
+qed-.
+
+(* Destructions with pr_fcla ************************************************)
+
+(*** sor_fcla *)
+lemma pr_sor_inv_fcla_bi:
+      ∀f1,n1. 𝐂❪f1❫ ≘ n1 → ∀f2,n2. 𝐂❪f2❫ ≘ n2 → ∀f. f1 ⋓ f2 ≘ f →
+      ∃∃n. 𝐂❪f❫ ≘ n & (n1 ∨ n2) ≤ n & n ≤ n1 + n2.
+#f1 #n1 #Hf1 #f2 #n2 #Hf2 #f #Hf elim (pr_sor_fcla_bi … Hf1 … Hf2) -Hf1 -Hf2
+/4 width=6 by pr_sor_mono, pr_fcla_eq_repl_back, ex3_intro/
+qed-.
+
+(* Destructions with pr_fcla ************************************************)
+
+(*** sor_fwd_fcla_sn_ex *)
+lemma pr_sor_des_fcla_sn:
+      ∀f,n. 𝐂❪f❫ ≘ n → ∀f1,f2. f1 ⋓ f2 ≘ f →
+      ∃∃n1. 𝐂❪f1❫ ≘ n1 & n1 ≤ n.
+#f #n #H elim H -f -n
+[ /4 width=4 by pr_sor_des_isi_sn, pr_fcla_isi, ex2_intro/
+| #f #n #_ #IH #f1 #f2 #H
+  elim (pr_sor_inv_push … H) -H [ |*: // ] #g1 #g2 #Hf #H1 #H2 destruct
+  elim (IH … Hf) -f /3 width=3 by pr_fcla_push, ex2_intro/
+| #f #n #_ #IH #f1 #f2 #H
+  elim (pr_sor_inv_next … H) -H [1,3,4: * |*: // ] #g1 #g2 #Hf #H1 #H2 destruct
+  elim (IH … Hf) -f /3 width=3 by pr_fcla_push, pr_fcla_next, nle_succ_bi, nle_succ_dx, ex2_intro/
+]
+qed-.
+
+(*** sor_fwd_fcla_dx_ex *)
+lemma pr_sor_des_fcla_dx:
+      ∀f,n. 𝐂❪f❫ ≘ n → ∀f1,f2. f1 ⋓ f2 ≘ f →
+      ∃∃n2. 𝐂❪f2❫ ≘ n2 & n2 ≤ n.
+/3 width=4 by pr_sor_des_fcla_sn, pr_sor_comm/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_isf.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_isf.ma
new file mode 100644 (file)
index 0000000..032774d
--- /dev/null
@@ -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/relocation/pr_isf_eq.ma".
+include "ground/relocation/pr_sor_fcla.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Constructions with pr_isf ************************************************)
+
+(*** sor_isfin_ex *)
+lemma pr_sor_isf_bi:
+      ∀f1,f2. 𝐅❪f1❫ → 𝐅❪f2❫ → ∃∃f. f1 ⋓ f2 ≘ f & 𝐅❪f❫.
+#f1 #f2 * #n1 #H1 * #n2 #H2 elim (pr_sor_fcla_bi … H1 … H2) -H1 -H2
+/3 width=4 by ex2_intro, ex_intro/
+qed-.
+
+(* Destructions with pr_isf *************************************************)
+
+(*** sor_fwd_isfin_sn *)
+lemma pr_sor_des_isf_sn:
+      ∀f. 𝐅❪f❫ → ∀f1,f2. f1 ⋓ f2 ≘ f → 𝐅❪f1❫.
+#f * #n #Hf #f1 #f2 #H
+elim (pr_sor_des_fcla_sn … Hf … H) -f -f2 /2 width=2 by ex_intro/
+qed-.
+
+(*** sor_fwd_isfin_dx *)
+lemma pr_sor_des_isf_dx:
+      ∀f. 𝐅❪f❫ → ∀f1,f2. f1 ⋓ f2 ≘ f → 𝐅❪f2❫.
+#f * #n #Hf #f1 #f2 #H
+elim (pr_sor_des_fcla_dx … Hf … H) -f -f1 /2 width=2 by ex_intro/
+qed-.
+
+(* Inversions with pr_isf ***************************************************)
+
+(*** sor_isfin *)
+lemma pr_sor_inv_isf_bi:
+      ∀f1,f2. 𝐅❪f1❫ → 𝐅❪f2❫ → ∀f. f1 ⋓ f2 ≘ f → 𝐅❪f❫.
+#f1 #f2 #Hf1 #Hf2 #f #Hf elim (pr_sor_isf_bi … Hf1 … Hf2) -Hf1 -Hf2
+/3 width=6 by pr_sor_mono, pr_isf_eq_repl_back/
+qed-.
+
+(*** sor_inv_isfin3 *)
+lemma pr_sor_inv_isf:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐅❪f❫ →
+      ∧∧ 𝐅❪f1❫ & 𝐅❪f2❫.
+/3 width=4 by pr_sor_des_isf_dx, pr_sor_des_isf_sn, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_isi.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_isi.ma
new file mode 100644 (file)
index 0000000..8cd1873
--- /dev/null
@@ -0,0 +1,83 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_isi_eq.ma".
+include "ground/relocation/pr_sor_eq.ma".
+include "ground/relocation/pr_sor_sor.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Constructions with pr_isi ************************************************)
+
+(*** sor_isid_sn *)
+corec lemma pr_sor_isi_sn:
+            ∀f1. 𝐈❪f1❫ → ∀f2. f1 ⋓ f2 ≘ f2.
+#f1 * -f1
+#f1 #g1 #Hf1 #H1 #f2 cases (pr_map_split_tl f2)
+/3 width=7 by pr_sor_push_bi, pr_sor_push_next/
+qed.
+
+(*** sor_isid_dx *)
+corec lemma pr_sor_isi_dx:
+            ∀f2. 𝐈❪f2❫ → ∀f1. f1 ⋓ f2 ≘ f1.
+#f2 * -f2
+#f2 #g2 #Hf2 #H2 #f1 cases (pr_map_split_tl f1)
+/3 width=7 by pr_sor_push_bi, pr_sor_next_push/
+qed.
+
+(*** sor_isid *)
+lemma pr_sor_isi_bi_isi:
+      ∀f1,f2,f. 𝐈❪f1❫ → 𝐈❪f2❫ → 𝐈❪f❫ → f1 ⋓ f2 ≘ f.
+/4 width=3 by pr_sor_eq_repl_back_dx, pr_sor_eq_repl_back_sn, pr_isi_inv_eq_repl/ qed.
+
+
+(* Destructions with pr_isi *************************************************)
+
+(*** sor_fwd_isid1 *)
+corec lemma pr_sor_des_isi_sn:
+            ∀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 pr_isi_inv_push, pr_isi_push/ ]
+cases (pr_isi_inv_next … Hg … H)
+qed-.
+
+(*** sor_fwd_isid2 *)
+corec lemma pr_sor_des_isi_dx:
+            ∀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 pr_isi_inv_push, pr_isi_push/ ]
+cases (pr_isi_inv_next … Hg … H)
+qed-.
+
+(* Inversions with pr_isi ***************************************************)
+
+(*** sor_isid_inv_sn *)
+lemma pr_sor_inv_isi_sn:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f1❫ → f2 ≡ f.
+/3 width=4 by pr_sor_isi_sn, pr_sor_mono/
+qed-.
+
+(*** sor_isid_inv_dx *)
+lemma pr_sor_inv_isi_dx:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f2❫ → f1 ≡ f.
+/3 width=4 by pr_sor_isi_dx, pr_sor_mono/
+qed-.
+
+(*** sor_inv_isid3 *)
+lemma pr_sor_inv_isi:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → 𝐈❪f❫ →
+      ∧∧ 𝐈❪f1❫ & 𝐈❪f2❫.
+/3 width=4 by pr_sor_des_isi_dx, pr_sor_des_isi_sn, conj/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sle.ma
new file mode 100644 (file)
index 0000000..037d700
--- /dev/null
@@ -0,0 +1,66 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_sle_sle.ma".
+include "ground/relocation/pr_sor.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Inversions with pr_sle ***************************************************)
+
+(*** sor_inv_sle_sn *)
+corec lemma pr_sor_inv_sle_sn:
+            ∀f1,f2,f. f1 ⋓ f2 ≘ f → f1 ⊆ f.
+#f1 #f2 #f * -f1 -f2 -f
+#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0
+/3 width=5 by pr_sle_push, pr_sle_next, pr_sle_weak/
+qed-.
+
+(*** sor_inv_sle_dx *)
+corec lemma pr_sor_inv_sle_dx:
+            ∀f1,f2,f. f1 ⋓ f2 ≘ f → f2 ⊆ f.
+#f1 #f2 #f * -f1 -f2 -f
+#f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0
+/3 width=5 by pr_sle_push, pr_sle_next, pr_sle_weak/
+qed-.
+
+(*** sor_inv_sle_sn_trans *)
+lemma pr_sor_inv_sle_sn_trans:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g. g ⊆ f1 → g ⊆ f.
+/3 width=4 by pr_sor_inv_sle_sn, pr_sle_trans/ qed-.
+
+(*** sor_inv_sle_dx_trans *)
+lemma pr_sor_inv_sle_dx_trans:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g. g ⊆ f2 → g ⊆ f.
+/3 width=4 by pr_sor_inv_sle_dx, pr_sle_trans/ qed-.
+
+(*** sor_inv_sle *)
+axiom pr_sor_inv_sle_bi:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g. f1 ⊆ g → f2 ⊆ g → f ⊆ g.
+
+(* Constructions with pr_sle ************************************************)
+
+(*** sor_sle_dx *)
+corec lemma pr_sor_sle_dx:
+            ∀f1,f2. f1 ⊆ f2 → f1 ⋓ f2 ≘ f2.
+#f1 #f2 * -f1 -f2
+/3 width=7 by pr_sor_push_bi, pr_sor_next_bi, pr_sor_push_next/
+qed.
+
+(*** sor_sle_sn *)
+corec lemma pr_sor_sle_sn:
+            ∀f1,f2. f1 ⊆ f2 → f2 ⋓ f1 ≘ f2.
+#f1 #f2 * -f1 -f2
+/3 width=7 by pr_sor_push_bi, pr_sor_next_bi, pr_sor_next_push/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sor.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sor.ma
new file mode 100644 (file)
index 0000000..ef667fd
--- /dev/null
@@ -0,0 +1,129 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_eq.ma".
+include "ground/relocation/pr_sor.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Main inversions **********************************************************)
+
+(*** sor_mono *)
+corec theorem pr_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 (pr_sor_inv_push_bi … H … H1 H2)
+| cases (pr_sor_inv_next_push … H … H1 H2)
+| cases (pr_sor_inv_push_next … H … H1 H2)
+| cases (pr_sor_inv_next_bi … H … H1 H2)
+] -g1 -g2
+/3 width=5 by pr_eq_push, pr_eq_next/
+qed-.
+
+(* Main constructions *******************************************************)
+
+(*** sor_assoc_dx *)
+axiom pr_sor_assoc_dx:
+      ∀f0,f3,f4. f0 ⋓ f3 ≘ f4 →
+      ∀f1,f2. f1 ⋓ f2 ≘ f0 →
+      ∀f. f2 ⋓ f3 ≘ f → f1 ⋓ f ≘ f4.
+
+(*** sor_assoc_sn *)
+axiom pr_sor_assoc_sn:
+      ∀f1,f0,f4. f1 ⋓ f0 ≘ f4 →
+      ∀f2, f3. f2 ⋓ f3 ≘ f0 →
+      ∀f. f1 ⋓ f2 ≘ f → f ⋓ f3 ≘ f4.
+
+(*** sor_comm_23 *)
+lemma pr_sor_comm_23:
+      ∀f0,f1,f2,f3,f4,f.
+      f0⋓f4 ≘ f1 → f1⋓f2 ≘ f → f0⋓f2 ≘ f3 → f3⋓f4 ≘ f.
+/4 width=6 by pr_sor_comm, pr_sor_assoc_dx/ qed-.
+
+(*** sor_comm_23_idem *)
+corec theorem pr_sor_comm_23_idem:
+              ∀f0,f1,f2. f0 ⋓ f1 ≘ f2 →
+              ∀f. f1 ⋓ f2 ≘ f → f1 ⋓ f0 ≘ f.
+#f0 #f1 #f2 * -f0 -f1 -f2
+#f0 #f1 #f2 #g0 #g1 #g2 #Hf2 #H0 #H1 #H2 #g #Hg
+[ cases (pr_sor_inv_push_bi … Hg … H1 H2)
+| cases (pr_sor_inv_push_next … Hg … H1 H2)
+| cases (pr_sor_inv_next_bi … Hg … H1 H2)
+| cases (pr_sor_inv_next_bi … Hg … H1 H2)
+] -g2 #f #Hf #H
+/3 width=7 by pr_sor_next_bi, pr_sor_next_push, pr_sor_push_next, pr_sor_push_bi/
+qed-.
+
+(*** sor_coll_dx *)
+corec theorem pr_sor_coll_dx:
+              ∀f1,f2,f. f1 ⋓ f2 ≘ f → ∀g1,g2,g. g1 ⋓ g2 ≘ g →
+              ∀g0. g1 ⋓ g0 ≘ f1 → g2 ⋓ g0 ≘ f2 → g ⋓ g0 ≘ f.
+#f1 #f2 #f cases (pr_map_split_tl f) #H1 #Hf #g1 #g2 #g #Hg #g0 #Hf1 #Hf2
+[ cases (pr_sor_inv_push … Hf … H1) -Hf #x1 #x2 #Hf #Hx1 #Hx2
+  cases (pr_sor_inv_push … Hf1 … Hx1) -f1 #y1 #y0 #Hf1 #Hy1 #Hy0
+  cases (pr_sor_inv_push_dx_push … Hf2 … Hy0 … Hx2) -f2 #y2 #Hf2 #Hy2
+  cases (pr_sor_inv_push_bi … Hg … Hy1 Hy2) -g1 -g2 #y #Hg #Hy
+  @(pr_sor_push_bi … Hy Hy0 H1) -g -g0 /2 width=8 by/
+| cases (pr_map_split_tl g) #H2
+  [ cases (pr_sor_inv_push … Hg … H2) -Hg #y1 #y2 #Hg #Hy1 #Hy2
+    cases (pr_sor_next_tl … Hf … H1) * #x1 #x2 #_ #Hx1 #Hx2
+    [ cases (pr_sor_inv_push_sn_next … Hf1 … Hy1 Hx1) -g1 #y0 #Hf1 #Hy0
+      cases (pr_sor_inv_push_next … Hf2 … Hy2 Hy0) -g2 -x2 #x2 #Hf2 #Hx2
+    | cases (pr_sor_inv_push_sn_next … Hf2 … Hy2 Hx2) -g2 #y0 #Hf2 #Hy0
+      cases (pr_sor_inv_push_next … Hf1 … Hy1 Hy0) -g1 -x1 #x1 #Hf1 #Hx1
+    ]
+    lapply (pr_sor_inv_next_bi_next … Hf … Hx1 Hx2 H1) -f1 -f2 #Hf
+    @(pr_sor_push_next … H2 Hy0 H1) -g0 /2 width=8 by/
+  | lapply (pr_sor_tl … Hf) -Hf #Hf
+    lapply (pr_sor_tl … Hg) -Hg #Hg
+    lapply (pr_sor_tl … Hf1) -Hf1 #Hf1
+    lapply (pr_sor_tl … Hf2) -Hf2 #Hf2
+    cases (pr_map_split_tl g0) #H0
+    [ @(pr_sor_next_push … H2 H0 H1) /2 width=8 by/
+    | @(pr_sor_next_bi … H2 H0 H1) /2 width=8 by/
+    ]
+  ]
+]
+qed-.
+
+(*** sor_distr_dx *)
+corec theorem pr_sor_distr_dx:
+              ∀g0,g1,g2,g. g1 ⋓ g2 ≘ g →
+              ∀f1,f2,f. g1 ⋓ g0 ≘ f1 → g2 ⋓ g0 ≘ f2 → g ⋓ g0 ≘ f →
+              f1 ⋓ f2 ≘ f.
+#g0 cases (pr_map_split_tl g0) #H0 #g1 #g2 #g
+[ * -g1 -g2 -g #y1 #y2 #y #g1 #g2 #g #Hy #Hy1 #Hy2 #Hy #f1 #f2 #f #Hf1 #Hf2 #Hf
+  [ cases (pr_sor_inv_push_bi … Hf1 … Hy1 H0) -g1
+    cases (pr_sor_inv_push_bi … Hf2 … Hy2 H0) -g2
+    cases (pr_sor_inv_push_bi … Hf … Hy H0) -g
+  | cases (pr_sor_inv_next_push … Hf1 … Hy1 H0) -g1
+    cases (pr_sor_inv_push_bi … Hf2 … Hy2 H0) -g2
+    cases (pr_sor_inv_next_push … Hf … Hy H0) -g
+  | cases (pr_sor_inv_push_bi … Hf1 … Hy1 H0) -g1
+    cases (pr_sor_inv_next_push … Hf2 … Hy2 H0) -g2
+    cases (pr_sor_inv_next_push … Hf … Hy H0) -g
+  | cases (pr_sor_inv_next_push … Hf1 … Hy1 H0) -g1
+    cases (pr_sor_inv_next_push … Hf2 … Hy2 H0) -g2
+    cases (pr_sor_inv_next_push … Hf … Hy H0) -g
+  ] #y #Hy #H #y2 #Hy2 #H2 #y1 #Hy1 #H1
+  /3 width=8 by pr_sor_next_bi, pr_sor_next_push, pr_sor_push_next, pr_sor_push_bi/
+| #H #f1 #f2 #f #Hf1 #Hf2 #Hf
+  cases (pr_sor_next_dx_tl … Hf1 … H0) -Hf1
+  cases (pr_sor_next_dx_tl … Hf2 … H0) -Hf2
+  cases (pr_sor_next_dx_tl … Hf … H0) -Hf
+  #y #x #Hx #Hy #H #y2 #x2 #Hx2 #Hy2 #H2 #y1 #x1 #Hx1 #Hy1 #H1
+  /4 width=8 by pr_sor_tl, pr_sor_next_bi/
+]
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sor_sle.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_sor_sle.ma
new file mode 100644 (file)
index 0000000..127b91c
--- /dev/null
@@ -0,0 +1,25 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_sle.ma".
+include "ground/relocation/pr_sor.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Main inversions with pr_sle **********************************************)
+
+(*** monotonic_sle_sor *)
+axiom pr_sor_monotonic_sle:
+      ∀f1,g1. f1 ⊆ g1 → ∀f2,g2. f2 ⊆ g2 →
+      ∀f. f1 ⋓ f2 ≘ f → ∀g. g1 ⋓ g2 ≘ g → f ⊆ g.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_sor_tls.ma
new file mode 100644 (file)
index 0000000..cf3d315
--- /dev/null
@@ -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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tls.ma".
+include "ground/relocation/pr_sor.ma".
+
+(* RELATIONAL UNION FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Constructions with pr_tls ************************************************)
+
+(*** sor_tls *)
+lemma pr_sor_tls:
+      ∀f1,f2,f. f1 ⋓ f2 ≘ f →
+      ∀n. ⫰*[n]f1 ⋓ ⫰*[n]f2 ≘ ⫰*[n]f.
+#f1 #f2 #f #Hf #n @(nat_ind_succ … n) -n
+/2 width=1 by pr_sor_tl/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tl.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tl.ma
new file mode 100644 (file)
index 0000000..7e82ce9
--- /dev/null
@@ -0,0 +1,43 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/downspoon_1.ma".
+include "ground/lib/stream_hdtl.ma".
+include "ground/relocation/pr_map.ma".
+
+(* TAIL FOR PARTIAL RELOCATION MAPS *****************************************)
+
+(*** tl *)
+definition pr_tl (f): pr_map ≝ ⇂f.
+
+interpretation
+  "tail (partial relocation maps)"
+  'DownSpoon f = (pr_tl f).
+
+(* Basic constructions ******************************************************)
+
+(*** tl_push_rew *)
+lemma pr_tl_push (f): f = ⫰⫯f.
+// qed.
+
+(*** tl_next_rew *)
+lemma pr_tl_next (f): f = ⫰↑f.
+// qed.
+
+(* Basic eliminations *******************************************************)
+
+(*** pn_split pr_map_split *)
+lemma pr_map_split_tl (f): ∨∨ ⫯⫰f = f | ↑⫰f = f.
+* * /2 width=1 by or_introl, or_intror/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tl_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tl_eq.ma
new file mode 100644 (file)
index 0000000..03c413e
--- /dev/null
@@ -0,0 +1,121 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_eq.ma".
+include "ground/relocation/pr_tl.ma".
+
+(* TAIL FOR PARTIAL RELOCATION MAPS *****************************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** eq_refl *)
+corec lemma pr_eq_refl: reflexive … pr_eq.
+#f cases (pr_map_split_tl f) #Hf
+[ @(pr_eq_push … Hf Hf) | @(pr_eq_next … Hf Hf) ] -Hf //
+qed.
+
+(*** tl_eq_repl *)
+lemma pr_tl_eq_repl:
+      pr_eq_repl … (λf1,f2. ⫰f1 ≡ ⫰f2).
+#f1 #f2 * -f1 -f2 //
+qed.
+
+(* Inversions with pr_eq ****************************************************)
+
+(*** eq_inv_gen *)
+lemma pr_eq_inv_gen (g1) (g2):
+      g1 ≡ g2 →
+      ∨∨ ∧∧ ⫰g1 ≡ ⫰g2 & ⫯⫰g1 = g1 & ⫯⫰g2 = g2
+       | ∧∧ ⫰g1 ≡ ⫰g2 & ↑⫰g1 = g1 & ↑⫰g2 = g2.
+#g1 #g2 * -g1 -g2 #f1 #f2 #g1 #g2 #f * *
+/3 width=1 by and3_intro, or_introl, or_intror/
+qed-.
+
+(* Advanced inversions with pr_eq *******************************************)
+
+(*** pr_eq_inv_px *)
+lemma pr_eq_inv_push_sn (g1) (g2):
+      g1 ≡ g2 → ∀f1. ⫯f1 = g1 →
+      ∧∧ f1 ≡ ⫰g2 & ⫯⫰g2 = g2.
+#g1 #g2 #H #f1 #Hf1
+elim (pr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
+[ /2 width=1 by conj/
+| elim (eq_inv_pr_next_push … Hg1)
+]
+qed-.
+
+(*** pr_eq_inv_nx *)
+lemma pr_eq_inv_next_sn (g1) (g2):
+      g1 ≡ g2 → ∀f1. ↑f1 = g1 →
+      ∧∧ f1 ≡ ⫰g2 & ↑⫰g2 = g2.
+#g1 #g2 #H #f1 #Hf1
+elim (pr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
+[ elim (eq_inv_pr_push_next … Hg1)
+| /2 width=1 by conj/
+]
+qed-.
+
+(*** pr_eq_inv_xp *)
+lemma pr_eq_inv_push_dx (g1) (g2):
+      g1 ≡ g2 → ∀f2. ⫯f2 = g2 →
+      ∧∧ ⫰g1 ≡ f2 & ⫯⫰g1 = g1.
+#g1 #g2 #H #f2 #Hf2
+elim (pr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
+[ /2 width=1 by conj/
+| elim (eq_inv_pr_next_push … Hg2)
+]
+qed-.
+
+(*** pr_eq_inv_xn *)
+lemma pr_eq_inv_next_dx (g1) (g2):
+      g1 ≡ g2 → ∀f2. ↑f2 = g2 →
+      ∧∧ ⫰g1 ≡ f2 & ↑⫰g1 = g1.
+#g1 #g2 #H #f2 #Hf2
+elim (pr_eq_inv_gen … H) -H * #Hg #Hg1 #Hg2 destruct
+[ elim (eq_inv_pr_push_next … Hg2)
+| /2 width=1 by conj/
+]
+qed-.
+
+(*** pr_eq_inv_pp *)
+lemma pr_eq_inv_push_bi (g1) (g2):
+      g1 ≡ g2 → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → f1 ≡ f2.
+#g1 #g2 #H #f1 #f2 #H1
+elim (pr_eq_inv_push_sn … H … H1) -g1 #Hx2 * #H
+lapply (eq_inv_pr_push_bi … H) -H //
+qed-.
+
+(*** pr_eq_inv_nn *)
+lemma pr_eq_inv_next_bi (g1) (g2):
+      g1 ≡ g2 → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → f1 ≡ f2.
+#g1 #g2 #H #f1 #f2 #H1
+elim (pr_eq_inv_next_sn … H … H1) -g1 #Hx2 * #H
+lapply (eq_inv_pr_next_bi … H) -H //
+qed-.
+
+(*** pr_eq_inv_pn *)
+lemma pr_eq_inv_push_next (g1) (g2):
+      g1 ≡ g2 → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → ⊥.
+#g1 #g2 #H #f1 #f2 #H1
+elim (pr_eq_inv_push_sn … H … H1) -g1 #Hx2 * #H
+elim (eq_inv_pr_next_push … H)
+qed-.
+
+(*** pr_eq_inv_np *)
+lemma pr_eq_inv_next_push (g1) (g2):
+      g1 ≡ g2 → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → ⊥.
+#g1 #g2 #H #f1 #f2 #H1
+elim (pr_eq_inv_next_sn … H … H1) -g1 #Hx2 * #H
+elim (eq_inv_pr_push_next … H)
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tl_eq_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tl_eq_eq.ma
new file mode 100644 (file)
index 0000000..94592fd
--- /dev/null
@@ -0,0 +1,37 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The 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/pr_tl_eq.ma".
+
+(* TAIL FOR PARTIAL RELOCATION MAPS *****************************************)
+
+(* Main constructions with pr_eq ********************************************)
+
+(*** eq_trans *)
+corec theorem pr_eq_trans: Transitive … pr_eq.
+#f1 #f * -f1 -f
+#f1 #f #g1 #g #Hf1 #H1 #H #f2 #Hf2
+[ cases (pr_eq_inv_push_sn … Hf2 … H)
+| cases (pr_eq_inv_next_sn … Hf2 … H)
+] -g
+/3 width=5 by pr_eq_push, pr_eq_next/
+qed-.
+
+(*** eq_canc_sn *)
+theorem pr_eq_canc_sn (f2): pr_eq_repl_back (λf. f ≡ f2).
+/3 width=3 by pr_eq_trans, pr_eq_sym/ qed-.
+
+(*** eq_canc_dx *)
+theorem pr_eq_canc_dx (f1): pr_eq_repl_fwd (λf. f1 ≡ f).
+/3 width=5 by pr_eq_canc_sn, pr_eq_repl_sym/ qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls.ma
new file mode 100644 (file)
index 0000000..f074962
--- /dev/null
@@ -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/notation/functions/downspoonstar_2.ma".
+include "ground/lib/stream_tls.ma".
+include "ground/relocation/pr_tl.ma".
+
+(* ITERATED TAIL FOR PARTIAL RELOCATION MAPS ********************************)
+
+(*** tls *)
+definition pr_tls (n) (f:pr_map) ≝ ⇂*[n]f.
+
+interpretation
+  "iterated tail (partial relocation maps)"
+  'DownSpoonStar n f = (pr_tls n f).
+
+(* Basic constructions (specific) *******************************************)
+
+(*** tls_O *)
+lemma pr_tls_zero (f): f = ⫰*[𝟎] f.
+// qed.
+
+(*** tls_swap *)
+lemma pr_tls_tl (n) (f): ⫰⫰*[n] f = ⫰*[n] ⫰f.
+/2 width=1 by stream_tls_tl/ qed.
+
+(*** tls_S *)
+lemma pr_tls_succ (n) (f): ⫰⫰*[n] f = ⫰*[↑n] f.
+/2 width=1 by stream_tls_succ/ qed.
+
+(*** tls_xn *)
+lemma pr_tls_swap (n) (f): ⫰*[n] ⫰f = ⫰*[↑n] f.
+// qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_eq.ma
new file mode 100644 (file)
index 0000000..f3b5bc7
--- /dev/null
@@ -0,0 +1,26 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_tls.ma".
+
+(* ITERATED TAIL FOR PARTIAL RELOCATION MAPS ********************************)
+
+(* Constructions with pr_eq *************************************************)
+
+(*** tls_eq_repl *)
+lemma pr_tls_eq_repl (n):
+      pr_eq_repl (λf1,f2. ⫰*[n] f1 ≡ ⫰*[n] f2).
+#n @(nat_ind_succ … n) -n /3 width=1 by pr_tl_eq_repl/
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_nexts_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_nexts_eq.ma
new file mode 100644 (file)
index 0000000..004b20f
--- /dev/null
@@ -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/relocation/pr_nexts.ma".
+include "ground/relocation/pr_tls_eq.ma".
+
+(* ITERATED TAIL FOR PARTIAL RELOCATION MAPS ********************************)
+
+(* Inversions with pr_nexts and pr_eq ***************************************)
+
+(*** eq_inv_nexts_sn *)
+lemma pr_eq_inv_nexts_sn (n):
+      ∀f1,g2. ↑*[n] f1 ≡ g2 →
+      ∧∧ f1 ≡ ⫰*[n]g2 & ↑*[n]⫰*[n]g2 = g2.
+#n @(nat_ind_succ … n) -n /2 width=1 by conj/
+#n #IH #f1 #g2 #H
+elim (pr_eq_inv_next_sn … H) -H [|*: // ] #Hf10 *
+elim (IH … Hf10) -IH -Hf10 #Hf12 #H2
+<pr_tls_succ /2 width=1 by conj/
+qed-.
+
+(*** eq_inv_nexts_dx *)
+lemma pr_eq_inv_nexts_dx (n):
+      ∀f2,g1. g1 ≡ ↑*[n] f2 →
+      ∧∧ ⫰*[n]g1 ≡ f2 & ↑*[n]⫰*[n]g1 = g1.
+#n @(nat_ind_succ … n) -n /2 width=1 by conj/
+#n #IH #f2 #g1 #H
+elim (pr_eq_inv_next_dx … H) -H [|*: // ] #Hf02 *
+elim (IH … Hf02) -IH -Hf02 #Hf12 #H2
+<pr_tls_succ /2 width=1 by conj/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_pushs.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_pushs.ma
new file mode 100644 (file)
index 0000000..de2d341
--- /dev/null
@@ -0,0 +1,26 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/relocation/pr_pushs.ma".
+include "ground/relocation/pr_tls.ma".
+
+(* ITERATED TAIL FOR PARTIAL RELOCATION MAPS ********************************)
+
+(* Constructions with pr_pushs **********************************************)
+
+(*** tls_pushs *)
+lemma pr_tls_pushs (n) (f): f = ⫰*[n] ⫯*[n] f.
+#n @(nat_ind_succ … n) -n //
+#n #IH #f <pr_tls_swap <pr_pushs_succ <pr_tl_push //
+qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_pushs_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_tls_pushs_eq.ma
new file mode 100644 (file)
index 0000000..afbabb9
--- /dev/null
@@ -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/relocation/pr_tls_eq.ma".
+include "ground/relocation/pr_pushs.ma".
+
+(* ITERATED TAIL FOR PARTIAL RELOCATION MAPS ********************************)
+
+(* Inversions with pr_pushs and pr_eq ***************************************)
+
+(*** eq_inv_pushs_sn *)
+lemma pr_eq_inv_pushs_sn (n):
+      ∀f1,g2. ⫯*[n] f1 ≡ g2 →
+      ∧∧ f1 ≡ ⫰*[n]g2 & ⫯*[n]⫰*[n]g2 = g2.
+#n @(nat_ind_succ … n) -n /2 width=1 by conj/
+#n #IH #f1 #g2 #H
+elim (pr_eq_inv_push_sn … H) -H [|*: // ] #Hf10 *
+elim (IH … Hf10) -IH -Hf10 #Hf12 #H1
+/2 width=1 by conj/
+qed-.
+
+(*** eq_inv_pushs_dx *)
+lemma pr_eq_inv_pushs_dx (n):
+      ∀f2,g1. g1 ≡ ⫯*[n] f2 →
+      ∧∧ ⫰*[n]g1 ≡ f2 & ⫯*[n]⫰*[n]g1 = g1.
+#n @(nat_ind_succ … n) -n /2 width=1 by conj/
+#n #IH #f2 #g1 #H
+elim (pr_eq_inv_push_dx … H) -H [|*: // ] #Hf02 *
+elim (IH … Hf02) -IH -Hf02 #Hf12 #H2
+/2 width=1 by conj/
+qed-.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_uni.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_uni.ma
new file mode 100644 (file)
index 0000000..18bd6d0
--- /dev/null
@@ -0,0 +1,36 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+include "ground/notation/functions/element_u_1.ma".
+include "ground/relocation/pr_nexts.ma".
+include "ground/relocation/pr_id.ma".
+
+(* UNIFORM ELEMENTS FOR PARTIAL RELOCATION MAPS *****************************)
+
+(*** uni *)
+definition pr_uni (n) ≝ ↑*[n] 𝐢.
+
+interpretation
+  "uniform elements (partial relocation maps)"
+  'ElementU n = (pr_uni n).
+
+(* Basic constructions ******************************************************)
+
+(*** uni_zero *)
+lemma pr_uni_zero: 𝐢 = 𝐮❨𝟎❩.
+// qed.
+
+(*** uni_succ *)
+lemma pr_uni_succ (n): ↑𝐮❨n❩ = 𝐮❨↑n❩.
+/2 width=1 by pr_nexts_succ/ qed.
diff --git a/matita/matita/contribs/lambdadelta/ground/relocation/pr_uni_eq.ma b/matita/matita/contribs/lambdadelta/ground/relocation/pr_uni_eq.ma
new file mode 100644 (file)
index 0000000..44e9891
--- /dev/null
@@ -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/arith/nat_pred_succ.ma".
+include "ground/relocation/pr_tl_eq.ma".
+include "ground/relocation/pr_uni.ma".
+
+(* UNIFORM ELEMENTS FOR PARTIAL RELOCATION MAPS *****************************)
+
+(* Inversions with pr_eq ****************************************************)
+
+(*** uni_inv_push_dx *)
+lemma pr_eq_inv_uni_push (n) (g):  𝐮❨n❩ ≡ ⫯g → ∧∧ 𝟎 = n & 𝐢 ≡ g.
+#n @(nat_ind_succ … n) -n 
+[ /3 width=5 by pr_eq_inv_push_bi, conj/
+| #n #_ #f <pr_uni_succ #H elim (pr_eq_inv_next_push … H) -H //
+]
+qed-.
+
+(*** uni_inv_push_sn *)
+lemma pr_eq_inv_push_uni (n) (g): ⫯g ≡ 𝐮❨n❩ → ∧∧ 𝟎 = n & 𝐢 ≡ g.
+/3 width=1 by pr_eq_inv_uni_push, pr_eq_sym/ qed-.
+
+(*** uni_inv_next_dx *)
+lemma pr_eq_inv_uni_next (n) (g): 𝐮❨n❩ ≡ ↑g → ∧∧ 𝐮❨↓n❩ ≡ g & ↑↓n = n.
+#n @(nat_ind_succ … n) -n
+[ #g <pr_uni_zero <pr_id_unfold #H elim (pr_eq_inv_push_next … H) -H //
+| #n #_ #g <pr_uni_succ /3 width=5 by pr_eq_inv_next_bi, conj/
+]
+qed-.
+
+(*** uni_inv_next_sn *)
+lemma pr_eq_inv_next_uni (n) (g): ↑g ≡ 𝐮❨n❩ → ∧∧ 𝐮❨↓n❩ ≡ g & ↑↓n = n.
+/3 width=1 by pr_eq_inv_uni_next, pr_eq_sym/ qed-.
+
+(* Inversions with pr_id and pr_eq ******************************************)
+
+(*** uni_inv_id_dx *)
+lemma pr_eq_inv_uni_id (n): 𝐮❨n❩ ≡ 𝐢 → 𝟎 = n.
+#n <pr_id_unfold #H elim (pr_eq_inv_uni_push … H) -H //
+qed-.
+
+(*** uni_inv_id_sn *)
+lemma pr_eq_inv_id_uni (n):  𝐢 ≡ 𝐮❨n❩ → 𝟎 = n.
+/3 width=1 by pr_eq_inv_uni_id, pr_eq_sym/ qed-.
index d710f3addfc4e14d645fb88ffbbb5abbb06597ba..638b1441c7f5a0d9919ac2eeadf4b0cbc77e7b52 100644 (file)
@@ -29,30 +29,30 @@ table {
           [ "fr2_map ( ◊ ) ( ❨?,?❩;? )" * ]
         }
       ]
           [ "fr2_map ( ◊ ) ( ❨?,?❩;? )" * ]
         }
       ]
-      [ { "generic relocation" * } {
-          [ "gr_sor ( ? ⋓ ? ≘ ? )" "gr_sor_eq" "gr_sor_tls" "gr_sor_isi" "gr_sor_fcla" "gr_sor_isf" "gr_sor_coafter_ist_isf" "gr_sor_sle" "gr_sor_sor" "gr_sor_sor_sle" * ]
-          [ "gr_sand ( ? ⋒ ? ≘ ? )" "gr_sand_eq" * ]
-          [ "gr_sdj ( ? ∥ ? )" "gr_sdj_eq" "gr_sdj_isi" * ]
-          [ "gr_sle ( ? ⊆ ? )" "gr_sle_eq" "gr_sle_pushs" "gr_sle_tls" "gr_sle_isi" "gr_sle_isd" "gr_sle_sle" * ]
-          [ "gr_coafter ( ? ~⊚ ? ≘ ? )" "gr_coafter_eq" "gr_coafter_uni_pushs" "gr_coafter_pat_tls" "gr_coafter_nat_tls" "gr_coafter_nat_tls_pushs" "gr_coafter_isi" "gr_coafter_isu" "gr_coafter_ist_isi" "gr_coafter_ist_isf" "gr_coafter_coafter" "gr_coafter_coafter_ist" * ]
-          [ "gr_after ( ? ⊚ ? ≘ ? )" "gr_after_eq" "gr_after_uni" "gr_after_basic" "gr_after_pat" "gr_after_pat_tls" "gr_after_pat_uni_tls" "gr_after_nat_uni_tls" "gr_after_isi" "gr_after_isu" "gr_after_ist" "gr_after_ist_isi" "gr_after_after" "gr_after_after_ist" * ]
-          [ "gr_isd ( 𝛀❪?❫ )" "gr_isd_eq" "gr_isd_tl" "gr_isd_nexts" "gr_isd_tls" * ]
-          [ "gr_ist ( 𝐓❪?❫ )" "gr_ist_tls" "gr_ist_isi" "gr_ist_ist" * ]
-          [ "gr_isf ( 𝐅❪?❫ )" "gr_isf_eq" "gr_isf_tl" "gr_isf_pushs" "fr_isf_tls" "gr_ifs_uni" "gr_isf_isu" * ]
-          [ "gr_fcla ( 𝐂❪?❫ ≘ ? )" "gr_fcla_eq" "fcla_uni" "gr_fcla_fcla" * ]
-          [ "gr_isu ( 𝐔❪?❫ )" "gr_isu_tl" "gr_isu_uni" * ]
-          [ "gr_isi ( 𝐈❪?❫ )" "gr_isi_eq" "gr_isi_tl" "gr_isi_pushs" "gr_isi_tls" "gr_isi_id" "gr_isi_uni" "gr_isi_pat" * ]
-          [ "gr_nat ( @↑❪?,?❫ ≘ ? )" "gr_nat_uni" "gr_nat_basic" "gr_nat_nat" * ]
-          [ "gr_pat ( @❪?,?❫ ≘ ? )" "gr_pat_lt" "gr_pat_eq" "gr_pat_tls" "gr_pat_id" "gr_pat_uni" "gr_pat_basic" "gr_pat_pat" "gr_pat_pat_id" * ]
-          [ "gr_basic ( 𝐛❨?,?❩ )" * ]
-          [ "gr_uni ( 𝐮❨?❩ )" "gr_uni_eq" * ]
-          [ "gr_id ( 𝐢 ) " "gr_id_eq" * ]
-          [ "gr_tls ( ⫰*[?]? )" "gr_tls_eq" "gr_tls_pushs" "gr_tls_pushs_eq" "gr_tls_nexts_eq" * ]
-          [ "gr_nexts ( ↑*[?]? )" "gr_nexts_eq" * ]
-          [ "gr_pushs ( ⫯*[?]? )" "gr_pushs_eq" * ]
-          [ "gr_tl ( ⫰? )" "gr_tl_eq" "gr_tl_eq_eq" * ]
-          [ "gr_eq ( ? ≡ ? )" * ]
-          [ "gr_map ( ⫯? ) ( ↑? )" * ]
+      [ { "partial relocation" * } {
+          [ "pr_sor ( ? ⋓ ? ≘ ? )" "pr_sor_eq" "pr_sor_tls" "pr_sor_isi" "pr_sor_fcla" "pr_sor_isf" "pr_sor_coafter_ist_isf" "pr_sor_sle" "pr_sor_sor" "pr_sor_sor_sle" * ]
+          [ "pr_sand ( ? ⋒ ? ≘ ? )" "pr_sand_eq" * ]
+          [ "pr_sdj ( ? ∥ ? )" "pr_sdj_eq" "pr_sdj_isi" * ]
+          [ "pr_sle ( ? ⊆ ? )" "pr_sle_eq" "pr_sle_pushs" "pr_sle_tls" "pr_sle_isi" "pr_sle_isd" "pr_sle_sle" * ]
+          [ "pr_coafter ( ? ~⊚ ? ≘ ? )" "pr_coafter_eq" "pr_coafter_uni_pushs" "pr_coafter_pat_tls" "pr_coafter_nat_tls" "pr_coafter_nat_tls_pushs" "pr_coafter_isi" "pr_coafter_isu" "pr_coafter_ist_isi" "pr_coafter_ist_isf" "pr_coafter_coafter" "pr_coafter_coafter_ist" * ]
+          [ "pr_after ( ? ⊚ ? ≘ ? )" "pr_after_eq" "pr_after_uni" "pr_after_basic" "pr_after_pat" "pr_after_pat_tls" "pr_after_pat_uni_tls" "pr_after_nat_uni_tls" "pr_after_isi" "pr_after_isu" "pr_after_ist" "pr_after_ist_isi" "pr_after_after" "pr_after_after_ist" * ]
+          [ "pr_isd ( 𝛀❪?❫ )" "pr_isd_eq" "pr_isd_tl" "pr_isd_nexts" "pr_isd_tls" * ]
+          [ "pr_ist ( 𝐓❪?❫ )" "pr_ist_tls" "pr_ist_isi" "pr_ist_ist" * ]
+          [ "pr_isf ( 𝐅❪?❫ )" "pr_isf_eq" "pr_isf_tl" "pr_isf_pushs" "fr_isf_tls" "pr_ifs_uni" "pr_isf_isu" * ]
+          [ "pr_fcla ( 𝐂❪?❫ ≘ ? )" "pr_fcla_eq" "fcla_uni" "pr_fcla_fcla" * ]
+          [ "pr_isu ( 𝐔❪?❫ )" "pr_isu_tl" "pr_isu_uni" * ]
+          [ "pr_isi ( 𝐈❪?❫ )" "pr_isi_eq" "pr_isi_tl" "pr_isi_pushs" "pr_isi_tls" "pr_isi_id" "pr_isi_uni" "pr_isi_pat" * ]
+          [ "pr_nat ( @↑❪?,?❫ ≘ ? )" "pr_nat_uni" "pr_nat_basic" "pr_nat_nat" * ]
+          [ "pr_pat ( @❪?,?❫ ≘ ? )" "pr_pat_lt" "pr_pat_eq" "pr_pat_tls" "pr_pat_id" "pr_pat_uni" "pr_pat_basic" "pr_pat_pat" "pr_pat_pat_id" * ]
+          [ "pr_basic ( 𝐛❨?,?❩ )" * ]
+          [ "pr_uni ( 𝐮❨?❩ )" "pr_uni_eq" * ]
+          [ "pr_id ( 𝐢 ) " "pr_id_eq" * ]
+          [ "pr_tls ( ⫰*[?]? )" "pr_tls_eq" "pr_tls_pushs" "pr_tls_pushs_eq" "pr_tls_nexts_eq" * ]
+          [ "pr_nexts ( ↑*[?]? )" "pr_nexts_eq" * ]
+          [ "pr_pushs ( ⫯*[?]? )" "pr_pushs_eq" * ]
+          [ "pr_tl ( ⫰? )" "pr_tl_eq" "pr_tl_eq_eq" * ]
+          [ "pr_eq ( ? ≡ ? )" * ]
+          [ "pr_map ( ⫯? ) ( ↑? )" * ]
         }
       ]
 (*
         }
       ]
 (*