Abstract
This paper presents and fine-tunes the P-UML design language which is a UML profile that better represents the design patterns and guides their instantiation. Then, it focuses on the definition of the formal semantics of this language in Z. The formal semantics allows a designer to prove the syntactic well-formedness of a P-UML design. In addition, it allows the verification of a design pattern's instantiation thanks to the theorem prover Z/EVES.