fact: Record projective_system: Type := ProjectiveSystem { psE : Set; psI : Set; psr : Set; psf : Set; ps_preorder_r: preorder psr; ps_substrate_r: substrate psr = psI; ps_fgraph_E: fgraph psE; ps_domain_E: domain psE = psI; ps_fgraph_f: fgraph psf; ps_domain_f: domain psf = psr; ps_function_f: forall i, inc i psr -> function_prop (Vg psf i) (Vg psE (Q i)) (Vg psE (P i)); ps_compose_f: forall i j k, gle psr i j -> gle psr j k -> Vg psf (J i j) \co Vg psf (J j k) = Vg psf (J i k); ps_identity_f: forall i, inc i psI -> Vg psf (J i i) = identity (Vg psE i) }.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat)