Section Lemmas.
Open Scope nat.
Inductive finite_intersections_len {X : Type} (F : Family X) : IndexedFamily nat (Ensemble X) :=
| intro_fi_len_full : In (finite_intersections_len F 0) Full_set
| intro_fi_len_S : forall U : Ensemble X, In F U -> In (finite_intersections_len F 1) U
| intro_fi_len_intersection : forall (U V : Ensemble X) (m k : nat),
In (finite_intersections_len F m) U ->
In (finite_intersections_len F k) V ->
In (finite_intersections_len F (m + k)) (Intersection U V).

Lemma finite_intersections_len_SS_intersection
{X : Type}
{F : Family X}
{U : Ensemble X}
(n : nat) :
In (finite_intersections_len F (S (S n))) U ->
exists m k V W,
In (finite_intersections_len F (S m)) V /\
In (finite_intersections_len F (S k)) W /\
U = Intersection V W /\
n = m + k.