\begin{tipo}{Competencia} \observador{categoria}{c: Competencia}{(Deporte, Sexo)} \observador{participantes}{c: Competencia}{[Atleta]} \observador{finalizada}{c: Competencia}{\bool} \observador{ranking}{c: Competencia}{[Atleta]} \requiere{finalizada(c)} \observador{lesTocoControlAntiDoping}{c: Competencia}{[Atleta]} \requiere{finalizada(c)} \observador{leDioPositivo}{c: Competencia, a: Atleta}{\bool} \requiere{finalizada(c) \land a \in lesTocoControlAntiDoping(c)} \medskip \invariante[participaUnaSolaVez]{sinRepetidos(ciaNumbers(participantes(c)))} \invariante[participantesPertenecenACat]{\\(\forall p \selec participantes(c)) prm(categoria(c)) \in deportes(p) \land sgd(categoria(c))==sexo(p)} \invariante[elRankingEsDeParticipantesYNoHayRepetidos]{\\finalizada(c) \Rightarrow incluida(ranking(c), participantes(c))} \invariante[seControlanParticipantesYNoHayRepetidos]{\\finalizada(c) \Rightarrow incluida(lesTocoControlAntiDoping(c), participantes(c))} \end{tipo}