--- /dev/null
+(**************************************************************************)
+(* ___ *)
+(* ||M|| *)
+(* ||A|| A project by Andrea Asperti *)
+(* ||T|| *)
+(* ||I|| Developers: *)
+(* ||T|| The HELM team. *)
+(* ||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 eliminators ********************************************************)
+
+(*** 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 inversion lemmas ***************************************************)
+
+(*** 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 properties *********************************************************)
+
+(*** 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.