Constraints restrict the motion of a system to fewer than three independent coordinates. Holonomic constraints can be expressed as mathematical equations involving the coordinates and time, while non-holonomic constraints cannot. Constraints introduce difficulties by making coordinates dependent and introducing constraint forces. For holonomic constraints, generalized coordinates can be used to eliminate dependent coordinates and reduce the number of degrees of freedom. D'Alembert's principle states that the sum of the work done by actual and constraint forces during virtual displacements is zero, and can be used to derive the Lagrangian equations of motion for constrained systems.