Section Factorization_for_Realizer.
Variable A : Set.
Variable BASE : BT.
Let b := base BASE.
Let Num := num BASE.
Let Val_bound := val_bound BASE.
Let Digit := digit BASE.
Let Tl := tl Digit.
Variable FR : forall n : nat, A -> inf n -> inf n -> A.
Let R (n : nat) (a : A) (x y : inf n) (a' : A) : Prop := a' = FR n a x y.
Notation Factorizable := (factorizable _) (only parsing).
Notation Proper := (proper _) (only parsing).
Fixpoint Impl (n : nat) : A -> Num n -> Num n -> A :=
fun a : A =>
match n return (Num n -> Num n -> A) with
| O => fun X Y : Num 0 => a
| S p =>
fun X Y : Num (S p) =>
Impl p (FR b a (Hd Digit p X) (Hd Digit p Y))
(Tl (S p) X) (Tl (S p) Y)
end.

Theorem factorization_for_realizer :
factorizable _ R ->
proper _ BASE R ->
forall (n : nat) (a : A) (X Y : Num n),
{a' : A | R (exp b n) a (Val_bound n X) (Val_bound n Y) a'}.