Section Conv.
Variable R : BSRS.
Variable D : Type.
Hypothesis HD : listable D.
Variable I : interp D.
Notation sub x y :=
((FullTarski.i_P (P := existT _ 2 less)) (Vector.cons x (Vector.cons y Vector.nil))).
Notation dum :=
((FullTarski.i_f (f := existT _ 0 dum)) Vector.nil).
Hypothesis HP : forall x y, i_P x y -> x <> dum /\ y <> dum.
Hypothesis HS1 : forall x, ~ sub x x.
Hypothesis HS2 : forall x y z, sub x y -> sub y z -> sub x z.
Hypothesis HF1 : forall b x, i_f b x <> i_e.
Hypothesis HF2 : forall b1 b2 x y, i_f b1 x <> dum -> i_f b1 x = i_f b2 y -> x = y /\ b1 = b2.
Hypothesis HF3 : forall b x, i_f b x <> dum -> x <> dum.
Hypothesis HI :
forall x y, i_P x y -> (exists s t, s/t el R /\ x = ienc s /\ y = ienc t)
\/ (exists s t u v, s/t el R /\ x = iprep s u /\ y = iprep t v /\ i_P u v /\
((sub u x /\ v = y) \/ (sub v y /\ u = x) \/ (sub u x /\ sub v y))).
(* Any solution of R that holds in a model satisfying the axioms gives rise to an actual solution. *)
Definition sub' L x y :=
sub x y /\ x el L.
Inductive psub : (D * D) -> (D * D) -> Prop :=
| psub1 x u : sub u x -> forall y, psub (u,y) (x,y)
| psub2 y u : sub u y -> forall x, psub (x,u) (x,y)
| psub3 x y u v : sub u x -> sub v y -> psub (u,v) (x,y).

Lemma ienc_iprep s t :
iprep s (ienc t) = ienc (s ++ t).