Applying design patterns is considered a helpful technique for designing software systems.
Patterns description, however, results not sufficiently precise providing a weak understanding and making it difficult to be certain when a pattern is being used correctly. We have formally specified properties of patterns and a formal basis for object-oriented design. In the present work, our formal basis is used as a support to an automatic tool for verifying proper applications of patterns. The usage of this tool is mainly focused on the learning process about patterns applications. Through a better understanding of patterns, the designer may certify when and how a pattern is being appropriately applied to solve a specific design problem. Furthermore, the whole design process could be improved by using a precise technique supported by an automatic tool for verification.