Hi Ahmed,
The bounds mechanism is described at
https://lmfit.github.io/lmfit-py/bounds.html which includes some
references, say the MINUIT documentation. The theory is to map
unbounded values to bounded values in a way that is reversible and
smooth.
Constraints in lmfit are done by setting one parameter's value to be
an algebraic expression of the other parameter values and maybe a set
of known constants and functions. A reference for that is either
"algebra" or the lmfit documentation/code.
Cheers,
--Matt