I agree, but I wanted only to make a (extremely dangerous and controversial, I admit) example that nonetheless is still compliant with the design by contract inheritance rule that says "precondition can be weaker". If we assume that clients do not violate the contract, and they shouldn't, nothing changes even using new subclasses, as a substitutes, with weaker precondition built around design by contract rules. But we may just argue that being compliant to design by contract is not a sufficient condition to respect the lsp principle - for example if we legittimately consider the behavior related to the use of values that break the contrat, as negtives in this case. After all I would say that the clients code usually is not build around assumptions of "never violate the contract", in term of this constraint (from wikipedia http://en.wikipedia.org/wik... "If a precondition is violated, the effect of the section of code becomes undefined and thus may or may not carry out its intended work." Many thanks for the post and the answer again.