Section Fip.
Variables (X: eqType) (sigma: list X -> X -> bool) (R: list X).
Inductive fip : X -> Prop :=
| fip_intro A x : (forall x, x el A -> fip x) -> sigma A x -> x el R -> fip x.
Definition fip_monotone := forall A B x, A <<= B -> sigma A x -> sigma B x.
Definition fip_closed A := forall x, x el R -> sigma A x -> x el A.
Fixpoint fip_it n A : list X :=
match n, find (fun x => Dec (~ x el A /\ sigma A x)) R with
| S n', Some x => fip_it n' (x::A)
| _, _ =>  A
end.

Lemma fip_it_sound n A :
inclp A fip -> inclp (fip_it n A) fip.