Set Printing Implicit.
Inductive nat := O | S (_ : nat).
Class ZLikeOps (e : nat)
:= { LargeT : Type ; SmallT : Type ; CarryAdd : forall (_ _ : LargeT), LargeT
}.
Class BarrettParameters :=
{ b : nat ; k : nat ; ops : ZLikeOps (f b k) }.

Axiom barrett_reduce_function_bundled : forall {params : BarrettParameters}
(_ : @LargeT _ (@ops params)),
@SmallT _ (@ops params).