(**************************************************************************)
include "ground_2/notation/relations/isuniform_1.ma".
-include "ground_2/relocation/rtmap_isid.ma".
+include "ground_2/relocation/rtmap_isfin.ma".
(* RELOCATION MAP ***********************************************************)
inductive isuni: predicate rtmap ≝
-| isuni_isid: â\88\80f. ð\9d\90\88â¦\83fâ¦\84 → isuni f
-| isuni_next: â\88\80f. isuni f â\86\92 â\88\80g. ⫯f = g → isuni g
+| isuni_isid: â\88\80f. ð\9d\90\88â\9dªfâ\9d« → isuni f
+| isuni_next: â\88\80f. isuni f â\86\92 â\88\80g. â\86\91f = g → isuni g
.
interpretation "test for uniformity (rtmap)"
(* Basic inversion lemmas ***************************************************)
-lemma isuni_inv_push: â\88\80g. ð\9d\90\94â¦\83gâ¦\84 â\86\92 â\88\80f. â\86\91f = g â\86\92 ð\9d\90\88â¦\83fâ¦\84.
+lemma isuni_inv_push: â\88\80g. ð\9d\90\94â\9dªgâ\9d« â\86\92 â\88\80f. ⫯f = g â\86\92 ð\9d\90\88â\9dªfâ\9d«.
#g * -g /2 width=3 by isid_inv_push/
#f #_ #g #H #x #Hx destruct elim (discr_push_next … Hx)
qed-.
-lemma isuni_inv_next: â\88\80g. ð\9d\90\94â¦\83gâ¦\84 â\86\92 â\88\80f. ⫯f = g â\86\92 ð\9d\90\94â¦\83fâ¦\84.
+lemma isuni_inv_next: â\88\80g. ð\9d\90\94â\9dªgâ\9d« â\86\92 â\88\80f. â\86\91f = g â\86\92 ð\9d\90\94â\9dªfâ\9d«.
#g * -g #f #Hf
[ #x #Hx elim (isid_inv_next … Hf … Hx)
| #g #H #x #Hx destruct /2 width=1 by injective_push/
]
qed-.
+lemma isuni_split: ∀g. 𝐔❪g❫ → (∃∃f. 𝐈❪f❫ & ⫯f = g) ∨ (∃∃f.𝐔❪f❫ & ↑f = g).
+#g #H elim (pn_split g) * #f #Hf
+/4 width=3 by isuni_inv_next, isuni_inv_push, or_introl, or_intror, ex2_intro/
+qed-.
+
(* basic forward lemmas *****************************************************)
-lemma isuni_fwd_push: â\88\80g. ð\9d\90\94â¦\83gâ¦\84 â\86\92 â\88\80f. â\86\91f = g â\86\92 ð\9d\90\94â¦\83fâ¦\84.
+lemma isuni_fwd_push: â\88\80g. ð\9d\90\94â\9dªgâ\9d« â\86\92 â\88\80f. ⫯f = g â\86\92 ð\9d\90\94â\9dªfâ\9d«.
/3 width=3 by isuni_inv_push, isuni_isid/ qed-.
+
+(* Forward lemmas with test for finite colength *****************************)
+
+lemma isuni_fwd_isfin: ∀f. 𝐔❪f❫ → 𝐅❪f❫.
+#f #H elim H -f /3 width=1 by isfin_next, isfin_isid/
+qed-.