A Language-Theoretic View on Guidelines and Consistency Rules of UML