if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S (Replaced by subtype) without altering any of the desirable properties of that program, such as correctness
Violations of LSP are often a sign of design issues, such as prematurely generalizing a concept and creating a superclass where none is needed
Example
Square class is a subclass of a Rectangle class. However, if a method expects a Rectangle object and is given a Square object instead, it may lead to incorrect behavior because squares have additional constraints (all sides are equal) that rectangles do not have