default->notEmpty() implies default->isCompatibleWith(parameteredElement) OCL allowSubstitutable implies constrainingClassifier->notEmpty() OCL result = ownedTemplateSignature->notEmpty() OCL result = allOwnedElements->select(oclIsKindOf(ParameterableElement)) OCL result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type) OCL templatedElement.ownedElement->includesAll(parameter.parameteredElement - parameter.ownedParameteredElement) OCL operand->forAll (op | op.oclIsKindOf (LiteralString)) OCL if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty() OCL result = if subExpression->notEmpty() then subExpression->iterate(se; stringValue = ‘| stringValue.concat(se.stringValue())) else operand->iterate()(op; stringValue = ‘ | stringValue.concat(op.value)) OCL parameterSubstitution->forAll(b | template.parameter->includes(b.formal)) OCL template.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() <= 1) OCL (isAttribute(self) and (templateParameterSubstitution->notEmpty()) implies (templateParameterSubstitution->forAll(ts | isAttribute(ts.formal))) OCL result = p->oclIsKindOf(self.oclType) and self.type.conformsTo(p.oclAsType(TypedElement).type) OCL result = oclAsType(TemplatableElement).isTemplate() or general->exists(g | g.isTemplate()) OCL if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif OCL true OCL redefinee.isRedefinitionContextValid(self) OCL result = redefinee.oclIsKindOf(RedefineableTemplateSignature) OCL result = p->oclIsKindOf(self.oclType) OCL result = templateParameter->notEmpty() OCL actual->forAll(a | a.isCompatibleWith(formal.parameteredElement)) OCL self.generalization->isEmpty() and self.feature->isEmpty() OCL isAbstract OCL (self.represented->select(p | p->oclIsKindOf(InformationItem))->forAll(p | p.informationFlow.source->forAll(q | self.informationFlow.source->include(q)) and p.informationFlow.target->forAll(q | self.informationFlow.target->include(q)))) and (self.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface) or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))) OCL self.conveyed.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface) or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)) OCL true OCL (self.informationSource->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification))) and (self.informationTarget->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification))) OCL self.classifierBehavior->notEmpty() implies self.classifierBehavior.specification->isEmpty() OCL self.ownedParameters-> select(p | p.direction=#out or p.direction=#inout or p.direction=#return)->size() >= 1 OCL def: hasAllDataTypeAttributes(d : DataType) : Boolean = d.ownedAttribute->forAll(a | a.type.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(a.type)) self.ownedParameters->forAll(p | p.type.notEmpty() and p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p)) OCL self.behavior.notEmpty() implies self.behavior.ownedParameters->select(p | p.direction<>#return)->isEmpty() OCL self.behavior.notEmpty() implies self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1 OCL true OCL true OCL true OCL true OCL true OCL true OCL not self.isActive implies self.ownedReception.isEmpty() OCL not self.isQuery OCL if (event->size() = 2) then (firstEvent->size() = 2) else (firstEvent->size() = 0) OCL true OCL if (constrainedElement->size() =2) then (firstEvent->size() = 2) else (firstEvent->size() = 0) OCL (not self.class->isEmpty()) implies self.packagedElement->isEmpty() OCL true OCL result = if end->exists( role.oclIsKindOf(Port) and partWithPort->isEmpty() and not role.oclAsType(Port).isBehavior) then ConnectorKind::delegation else ConnectorKind::assembly endif OCL true OCL self.nestedClassifier->isEmpty() OCL result = let realizedInterfaces : Set(Interface) = RealizedInterfaces(self) , realizingClassifiers : Set(Classifier) = Set{self.realizingClassifier}->union(self.allParents().realizingClassifier), allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents()) , realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(RealizedInterfaces(c))) , ports : Set(Port) = self.ownedPort->union(allParents.oclAsType(Set(EncapsulatedClassifier)).ownedPort) , providedByPorts : Set(Interface) = ports.provided in realizedInterfaces->union(realizingClassifierInterfaces) ->union(providedByPorts)->asSet() OCL result = (classifier.clientDependency-> select(dependency|dependency.oclIsKindOf(Realization) and dependency.supplier.oclIsKindOf(Interface)))-> collect(dependency|dependency.client) OCL result = let usedInterfaces : Set(Interface) = UsedInterfaces(self), realizingClassifiers : Set(Classifier) = Set{self.realizingClassifier}->union(self.allParents().realizingClassifier), allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents()), realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(UsedInterfaces(c))), ports : Set(Port) = self.ownedPort->union(allParents.oclAsType(Set(EncapsulatedClassifier)).ownedPort), usedByPorts : Set(Interface) = ports.required in usedInterfaces->union(realizingClassifierInterfaces) ->union(usedByPorts)->asSet() OCL result = (classifier.supplierDependency-> select(dependency|dependency.oclIsKindOf(Usage) and dependency.supplier.oclIsKindOf(interface)))-> collect(dependency|dependency.supplier) OCL self.variable.isAccessibleBy(self) OCL self.result.type =self.variable.type and self.result.ordering = self.variable.ordering OCL self.variable.multiplicity.compatibleWith(self.result.multiplicity) OCL self.value -> notEmpty() implies self.value.type = self.variable.type OCL self.value.multiplicity.is(1,1) OCL if not self.variable.isOrdered or self.variable.isUnique or isRemoveDuplicates then self.removeAt -> isEmpty() and self.value -> notEmpty() else self.value -> isEmpty() and self.removeAt -> notEmpty() and self.removeAt.type = UnlimitedNatural and self.removeAt.lower() = 1 and self.removeAt.upper() = 1 endif OCL true OCL true OCL true OCL let insertAtPins : Collection = self.insertAt in if self.variable.ordering = #unordered then insertAtPins->size() = 0 else let insertAtPin : InputPin = insertAt->asSequence()->first() in insertAtPins->size() = 1 and insertAtPin.type = UnlimitedNatural and insertAtPin.multiplicity.is(1,1)) endif OCL self.value -> notEmpty() OCL true OCL trigger.event.oclIsKindOf(CallEvent) OCL isUnmarshall = true OCL replyToCallEvent.oclIsKindOf(CallEvent) OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL self.result.type = self.end.type OCL self.end.Association.oclIsKindOf(AssociationClass) OCL self.object.type = self.end.association OCL self.end.association.memberEnd->forall(e | not e.isStatic) OCL self.result.multiplicity.is(1,1) OCL self.end.association.notEmpty() OCL self.object.multiplicity.is(1,1) OCL self.value.multiplicity.is(1,1) OCL self.value.type = self.qualifier.type OCL self.LinkEndData.end->collect(qualifier)->includes(self.qualifier) OCL self.result.multiplicity.is(0,#null) OCL true OCL self.object.type = self.qualifier.associationEnd.association OCL self.result.multiplicity.is(1,1) OCL self.qualifier.multiplicity.is(1,1) OCL self.object.multiplicity.is(1,1) OCL self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass) OCL self.qualifier.associationEnd->size() = 1 OCL self.result.type = self.qualifier.type OCL self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic) OCL self.value->excludesAll(self.qualifier.value) OCL self.qualifier->collect(qualifier) = self.end.qualifier OCL self.argument.multiplicity.is(1,1) OCL not self.newClassifier->exists(isAbstract = true) OCL self.argument.type->size() = 0 OCL self.object.multiplicity.is(1,1) OCL self.result.multiplicity.is(1,1) OCL self.object.type->isEmpty() OCL self.result.type = Boolean OCL self.result.type = self.association() OCL self.association().oclIsKindOf(Class) OCL self.result.multiplicity.is(1,1) OCL true OCL true OCL true OCL result = Integer.allInstances()->forAll(i : Integer | self.includesCardinality(i) implies other.includesCardinality(i)) OCL result = (lowerbound = self.lowerbound and upperbound = self.upperbound) OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL self.object.multiplicity.is(1,1) OCL self.association->exists(end.type = self.object.type) OCL true OCL true OCL self.structuralFeature.multiplicity.compatibleWith(self.result.multiplicity) OCL self.result.type = self.structuralFeature.type and self.result.ordering = self.structuralFeature.ordering OCL result->notEmpty() implies self.result.multiplicity.is(1,1) OCL result->notEmpty() implies self.result.type = self.object.type OCL let host : Classifier = self.context in self.structuralFeature.visibility = #public or host = self.structuralFeature.featuringClassifier.type or (self.structuralFeature.visibility = #protected and host.allSupertypes ->includes(self.structuralFeature.featuringClassifier.type))) OCL self.structuralFeature.isStatic = #false OCL self.object.lowerBound()=1 and self.object.upperBound()=1 OCL self.structuralFeature.featuringClassifier.oclAsType(Type)->includes(self.object.type) or self.structuralFeature.oclAsType(Property).opposite.type = self.object.type OCL self.structuralFeature.featuringClassifier->size() = 1 OCL true OCL self.first.type->size() = 0 and self.second.type->size() = 0 OCL self.first.multiplicity.is(1,1) and self.second.multiplicity.is(1,1) OCL true OCL true OCL self.input->asSet() = let ledpins : Set = self.endData->collect(value) in if self.oclIsKindOf(LinkEndCreationData) then ledpins->union(self.endData.oclAsType(LinkEndCreationData).insertAt) else ledpins OCL self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false OCL self.endData->collect(end) = self.association()->collect(connection)) OCL result = self.endData->asSequence().first().end.association OCL if not self.structuralFeature.isOrdered or self.structuralFeature.isUnique or isRemoveDuplicates then self.removeAt -> isEmpty() and self.value -> notEmpty() else self.value -> isEmpty() and self.removeAt -> notEmpty() and self.removeAt.type = UnlimitedNatural and self.removeAt.lower = 1 and self.removeAt.upper = 1 endif OCL self.result.multiplicity.is(1,1) OCL true OCL self.result.type = self.context OCL self.context->size() = 1 OCL let insertAtPins : Collection = self.insertAt in if self.structuralFeature.isOrdered = #false then insertAtPins->size() = 0 else let insertAtPin : InputPin= insertAt->asSequence()->first() in insertAtPins->size() = 1 and insertAtPin.type = UnlimitedNatural and insertAtPin.multiplicity.is(1,1)) endif OCL self.value -> notEmpty() OCL self.association().isAbstract = #false OCL self.value.multiplicity.is(1,1) OCL self.end.association->size() = 1 OCL self.value.type = self.end.type OCL self.LinkAction.oclIsKindOf(CreateLinkAction) OCL let insertAtPins : Collection = self.insertAt in if self.end.ordering = #unordered then insertAtPins->size() = 0 else let insertAtPin : InputPin = insertAts->asSequence()->first() in insertAtPins->size() = 1 and insertAtPin.type = UnlimitedNatural and insertAtPin.multiplicity.is(1,1)) endif OCL true OCL true OCL let openend : Property = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in self.result.type = openend.type and self.result.ordering = openend.ordering OCL let openend : Property = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in openend.multiplicity.compatibleWith(self.result.multiplicity) OCL let host : Classifier = self.context in let openend : Property = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in openend.visibility = #public or self.endData->exists(oed | not oed.end = openend and (host = oed.end.participant or (openend.visibility = #protected and host.allSupertypes->includes(oed.end.participant)))) OCL let openend : Property = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in openend.isNavigable() OCL self.endData->select(ed | ed.value->size() = 0)->size() = 1 OCL true OCL self.target.type->size() = 0 OCL self.target.multiplicity.is(1,1) OCL self.result.type = self.classifier OCL not self.classifier.oclIsKindOf(AssociationClass) OCL self.result.multiplicity.is(1,1) OCL not (self.classifier.isAbstract = #true) OCL self.value->notEmpty() implies self.value.type = self.structuralFeature.type OCL result->notEmpty() implies self.result.type = self.object.type OCL self.value.multiplicity.is(1,1) OCL result->notEmpty() implies self.result.multiplicity.is(1,1) OCL true OCL self.end.notEmpty() implies self.collaboration.notEmpty() OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL result = ConnectorEnd.allInstances()->select(e | e.role=self) OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Psuedostate) implies ((v.kind <> #deepHistory) and (v.kind <> #shallowHistory))))) OCL region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition))) OCL (not context->isEmpty( )) and specification->isEmpty() OCL true OCL region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies (v.entry->isEmpty() and v.exit->isEmpty() and v.doActivity->isEmpty()))) OCL container.belongsToPSM() OCL true OCL effect->isEmpty() OCL true OCL result = if not stateMachine->isEmpty() then oclIsTypeOf(ProtocolStateMachine) else if not state->isEmpty() then state.container.belongsToPSM () else false OCL conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint) OCL context->notEmpty() implies not context.oclIsKindOf(Interface) OCL specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context)) OCL specification->notEmpty() implies connectionPoint->isEmpty() OCL true OCL result = if (s2 = s1) then true else if (s2.container->isEmpty() or not s2.container.owner.oclIsKindOf(State)) then false else ancestor(s1, s2.container.owner.oclAsType(State)) endif endif OCL result = true OCL result = true OCL (self.kind = #fork) implies self.outgoing->forAll (t1, t2 | t1<>t2 implies (self.stateMachine.LCA(t1.target, t2.target).container.isOrthogonal)) OCL (self.kind = #initial) implies (self.outgoing.guard->isEmpty() and self.outgoing.trigger->isEmpty()) OCL (self.kind = #join) implies self.incoming->forAll (t1, t2 | t1<>t2 implies (self.stateMachine.LCA(t1.source, t2.source).container.isOrthogonal)) OCL (self.kind = #initial) implies (self.outgoing->size <= 1) OCL ((self.kind = #deepHistory) or (self.kind = #shallowHistory)) implies (self.outgoing->size <= 1) OCL (self.kind = #fork) implies ((self.incoming->size = 1) and (self.outgoing->size >= 2)) OCL (self.kind = #choice) implies ((self.incoming->size >= 1) and (self.outgoing->size >= 1)) OCL (self.kind = #junction) implies ((self.incoming->size >= 1) and (self.outgoing->size >= 1)) OCL (self.kind = #join) implies ((self.outgoing->size = 1) and (self.incoming->size >= 2)) OCL true OCL self.doActivity->isEmpty() OCL self.outgoing->size() = 0 OCL self.submachine->isEmpty() OCL self.region->size() = 0 OCL self.exit->isEmpty() OCL self.entry->isEmpty() OCL isComposite implies not isSubmachineState OCL connectionPoint->forAll(cp|cp.kind = #entry or cp.kind = #exit) OCL connectionPoint->notEmpty() implies isComoposite OCL isSubmachineState implies connection->notEmpty ( ) OCL self.isSubmachineState implies (self.connection->forAll (cp | cp.entry->forAll (p | p.statemachine = self.submachine) and cp.exit->forAll (p | p.statemachine = self.submachine))) OCL result = container.containingStateMachine() OCL result = region.notEmpty() OCL result = true OCL result = (region->size () > 1) OCL result = true OCL result = region.isEmpty() OCL result = submachine.notEmpty() OCL result = let sm = containingStateMachine() in if sm.context->isEmpty() or sm.general->notEmpty() then sm else sm.context endif OCL (kind = TransitionKind::internal) implies (source.oclIsKindOf (State) and source = target) OCL (kind = TransitionKind::external) implies not (source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint) OCL source.oclIsKindOf(Pseudostate) and (source.kind <> #initial)) implies trigger->isEmpty() OCL (target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (source.oclIsKindOf(State)) OCL (kind = TransitionKind::local) implies ((source.oclIsKindOf (State) and source.oclAsType(State).isComposite) or (source.oclIsKindOf (Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint)) OCL self.source.oclIsKindOf(Pseudostate) implies (self.source.oclAsType(Pseudostate).kind = #initial) implies (self.source.container = self.stateMachine.top) implies ((self.trigger->isEmpty) or (self.trigger.stereotype.name = 'create')) OCL (source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (target.oclIsKindOf(State)) OCL (source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (guard->isEmpty() and trigger->isEmpty()) OCL true OCL (target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (guard->isEmpty() and trigger->isEmpty()) OCL result = container.containingStateMachine() OCL result = (redefinee.oclIsKindOf(Transition) and let trans: Transition = redefinee.oclAsType(Transition) in (source() = trans.source() and trigger() = tran.trigger()) OCL redefinee.isRedefinitionContextValid(self) OCL result = let sm = containingStateMachine() in if sm.context->isEmpty() or sm.general->notEmpty() then sm else sm.context endif OCL entry->notEmpty() implies entry->forAll(e | e.kind = #entryPoint) OCL exit->notEmpty() implies exit->forAll(e | e.kind = #exitPoint) OCL (stateMachine->notEmpty() implies state->isEmpty()) and (state->notEmpty() implies stateMachine->isEmpty()) OCL self.subvertex->select (v | v.oclIsKindOf(Pseudostate))-> select(p : Pseudostate | p.kind = #initial)->size() <= 1 OCL self.subvertex->select(v | v.oclIsKindOf(Pseudostate))-> select(p : Pseudostate | p.kind = #shallowHistory)->size() <= 1 OCL self.subvertex->select (v | v.oclIsKindOf(Pseudostate))-> select(p : Pseudostate | p.kind = #deepHistory)->size() <= 1 OCL result = if stateMachine->isEmpty() then state.containingStateMachine() else stateMachine endif OCL result = true OCL result = true OCL result = let sm = containingStateMachine() in if sm.context->isEmpty() or sm.general->notEmpty() then sm else sm.context endif OCL result = if not container->isEmpty() then -- the container is a region container.containingStateMachine() else if (oclIsKindOf(Pseudostate)) then -- entry or exit point? if (kind = #entryPoint) or (kind = #exitPoint) then stateMachine else if (oclIsKindOf(ConnectionPointReference)) then state.containingStateMachine() -- no other valid cases possible endif OCL result = Transition.allInstances()->select(t | t.target=self) OCL result = Transition.allInstances()->select(t | t.source=self) OCL true OCL generalization->collect(g | g.general)->asSet()->size() <= 1 OCL true OCL true OCL true OCL true OCL not constrainedElement->includes(self) OCL not self.allOwnedElements()->includes(self) OCL self.mustBeOwned() implies owner->notEmpty() OCL result = ownedElement->union(ownedElement->collect(e | e.allOwnedElements())) OCL result = true OCL result = Set{} OCL result = Set{} OCL result = false OCL result = false OCL result = Set{} OCL result = Set{} OCL true OCL isDerivedUnion implies isReadOnly OCL self.subsettedProperty->notEmpty() implies (self.subsettingContext()->notEmpty() and self.subsettingContext()->forAll (sc | self.subsettedProperty->forAll(sp | sp.subsettingContext()->exists(c | sc.conformsTo(c))))) OCL isDerivedUnion implies isDerived OCL isComposite implies (upperBound()->isEmpty() or upperBound() <= 1) OCL self.subsettedProperty->forAll(sp | self.type.conformsTo(sp.type) and ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies self.upperBound()<=sp.upperBound() )) OCL if (redefinedProperty->notEmpty()) then (redefinitionContext->notEmpty() and redefinedProperty->forAll(rp| ((redefinitionContext->collect(fc| fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp)) OCL true OCL result = Classifier.allInstances->exists(c | c.attribute->includes(p)) OCL result = (self.aggregation = #composite) OCL redefinee.isRedefinitionContextValid(self) OCL result = redefinee.oclIsKindOf(Property) and let prop : Property = redefinee.oclAsType(Property) in (prop.type.conformsTo(self.type) and ((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and ((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() <= self.lowerBound()) and (self.isComposite implies prop.isComposite)) OCL result = not classifier->isEmpty() or association.owningAssociation.navigableOwnedEnd->includes(self) OCL result = if owningAssociation->isEmpty() and association.memberEnd->size() = 2 then let otherEnd = (association.memberEnd - self)->any() in if otherEnd.owningAssociation->isEmpty() then otherEnd else Set{} endif else Set {} endif OCL result = if association->notEmpty() then association.endType-type else if classifier->notEmpty() then Set{classifier} else Set{} endif endif OCL slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature))) OCL classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() <= 1))) OCL membersAreDistinguishable() OCL result = imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self))) OCL result = if self.ownedMember ->includes(element) then Set{}->include(element.name) else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in if elementImports->notEmpty() then elementImports->collect(el | el.getName()) else self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))-> collect(pi | pi.importedPackage.getNamesOfMember(element)) endif endif OCL result = self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self))) OCL result = self.importMembers(self.elementImport.importedElement.asSet()- >union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))) OCL result = self.member->forAll( memb | self.member->excluding(memb)->forAll(other | memb.isDistinguishableFrom(other, self))) OCL true OCL (upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound() OCL lowerBound()->notEmpty() implies lowerBound() >= 0 OCL true OCL result = (lowerBound() <= C) and (upperBound() >= C) OCL upperBound()->notEmpty() and lowerBound()->notEmpty() OCL self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty() OCL result = (self.lowerBound() <= M.lowerBound()) and (self.upperBound() >= M.upperBound()) OCL upperBound()->notEmpty() OCL result = upperBound() > 1 OCL result = lowerBound() OCL result = if lowerValue->isEmpty() then 1 else lowerValue.integerValue() endif OCL result = upperBound() OCL result = if upperValue->isEmpty() then 1 else upperValue.unlimitedValue() endif OCL result = false OCL self.ownedParameter->select(par | par.direction = #return)->size() <= 1 OCL bodyCondition->notEmpty() implies isQuery OCL redefinee.isRedefinitionContextValid(self) OCL result = redefinee.oclIsKindOf(Operation) and let op : Operation = redefinee.oclAsType(Operation) in self.ownedParameter->size() = op.ownedParameter->size() and Sequence{1..self.ownedParameter->size()}-> forAll(i |op.ownedParameter->at(1).type.conformsTo(self.ownedParameter->at(i).type)) OCL result = if returnResult()->notEmpty() then returnResult()->any().isOrdered else false endif OCL result = if returnResult()->notEmpty() then returnResult()->any().isUnique else true endif OCL result = if returnResult()->notEmpty() then returnResult()->any().lower else Set{} endif OCL result = ownedParameter->select (par | par.direction = #return) OCL result = if returnResult()->notEmpty() then returnResult()->any().type else Set{} endif OCL result = if returnResult()->notEmpty() then returnResult()->any().upper else Set{} endif OCL not self.allParents()->includes(self) OCL self.parents()->forAll(not isFinalSpecialization) OCL self.parents()->forAll(c | self.maySpecializeType(c)) OCL result = member->select(oclIsKindOf(Feature)) OCL result = self.parents()->union(self.parents()->collect(p | p.allParents()) OCL result = (self=other) or (self.allParents()->includes(other)) OCL result = self.parents() OCL self.allParents()->including(self)->collect(c | c.member)->includes(n) OCL result = (n.visibility <> VisibilityKind::private) OCL result = inhs OCL c.allParents()->includes(self) OCL result = member->select(m | c.hasVisibilityOf(m)) OCL result = self.inherit(self.parents()->collect(p|p.inheritableMembers(self))->asSet()) OCL result = self.oclIsKindOf(c.oclType) OCL result = generalization.general OCL result = true OCL result = value OCL namespace->isEmpty() implies visibility->isEmpty() OCL (self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()) implies self.qualifiedName->isEmpty() OCL (self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result)) OCL result = if self.namespace->isEmpty() then Sequence{} else self.namespace.allNamespaces()->prepend(self.namespace) endif OCL result = if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType) then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty() else true endif OCL result = if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty() then self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result)) else Set{} endif OCL result = '::' OCL self.visibility = #public or self.visibility = #private OCL result = true OCL result = value OCL classifier = enumeration OCL true OCL result = true OCL result = true OCL self.visibility = #public or self.visibility = #private OCL self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public OCL result = if self.alias->notEmpty() then self.alias else self.importedElement.name endif OCL result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh))) OCL result = if n.oclIsKindOf(BehavioralFeature) then if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty() then Set{}->including(self)->including(n)->isUnique(bf | bf.ownedParameter->collect(type)) else true endif else true endif OCL self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private) OCL self.member->includes(el) OCL result = (ownedMember->includes(el)) or (elementImport->select(ei|ei.importedElement = #public)->collect(ei|ei.importedElement)->includes(el)) or (packageImport->select(pi|pi.visibility = #public)->collect(pi|pi.importedPackage.member->includes(el))->notEmpty()) OCL result = false OCL true OCL true OCL result = member->select( m | self.makesVisible(m)) OCL true OCL Sequence{1..self.memberEnd->size()}-> forAll(i | self.general->select(oclIsKindOf(Association)).oclAsType(Association)-> forAll(ga |self.memberEnd->at(i).type.conformsTo(ga.memberEnd->at(i).type))) OCL parents()->select(oclIsKindOf(Association)).oclAsType(Association)->forAll(p | p.memberEnd->size() = self.memberEnd->size()) OCL self.memberEnd->exists(aggregation <> Aggregation::none) implies self.memberEnd->size() = 2 OCL if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd) OCL result = self.memberEnd->collect(e | e.type) OCL result = value OCL result = true OCL result = value OCL result = true OCL result = true OCL result = value OCL self.redefinedElement->forAll(not isLeaf) OCL self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e)) OCL self.redefinedElement->forAll(re | re.isConsistentWith(self)) OCL result = false OCL redefinee.isRedefinitionContextValid(self) OCL result = redefinitionContext->exists(c | c.allParents()->includes(redefined.redefinitionContext))) OCL language->notEmpty() implies (body->size() = language->size()) OCL result = false OCL self.isIntegral() OCL result = false OCL self.isIntegral() OCL result = false OCL self.isIntegral() OCL true OCL result = inhs->excluding(inh | ownedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh))) OCL true OCL self.feature->forAll(f | f.visibility = #public) OCL true OCL true OCL self.endType->excludes(self) and self.endType>collect(et|et.allparents()->excludes(self)) OCL ownedAttribute->intersection(ownedEnd)->isEmpty() OCL true OCL true OCL true OCL true OCL ((interactionOperator = #consider) or (interactionOperator = #ignore)) implies oclsisTypeOf(CombineIgnoreFragment) OCL true OCL true OCL true OCL true OCL (interactionOperator = #consider) or (interactionOperator = #ignore) OCL message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Reception) or m.oclIsKindOf(Signal)) OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL start.lifeline = finish.lifeline OCL (self.selector->isEmpty() implies not self.represents.isMultivalued()) or (not self.selector->isEmpty() implies self.represents.isMultivalued()) OCL true OCL if (represents->notEmpty()) then (if selector->notEmpty() then represents.isMultivalued() else not represents.isMultivalued()) OCL start.lifeline = finish.lifeline OCL name->notEmpty() OCL self.ownedAttribute->forAll ( a | (a.association->notEmpty()) implies ((a.association.memberEnd.size() = 2) and (a.opposite.class.oclIsKindOf(UseCase) or (a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior)))) OCL self.name->notEmpty () OCL true OCL not self.allIncludedUseCases()->includes(self) OCL self.name -> notEmpty () OCL true OCL result = self.include->union(self.include->collect(in | in.allIncludedUseCases())) OCL extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp)) OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL isControl implies isControlType OCL (self.incoming.select(e | e.isTypeOf(ObjectFlow)->notEmpty() implies self.outgoing.isTypeOf(ObjectFlow)) and (self.incoming.select(e | e.isTypeOf(ObjectFlow)->empty() implies self.outgoing.isTypeOf(ControlFlow)) OCL self.outgoing->size() = 1 OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL true OCL result = true OCL true OCL true OCL true OCL true OCL true OCL true OCL self.deployment->forAll (d | d.location.oclIsKindOf(ExecutionEnvironment)) OCL self.deployment->forAll (d | d.location.deployedElements->forAll (de | de.oclIsKindOf(Component))) OCL self.endType->forAll (t | t.oclIsKindOf(DeploymentTarget)) OCL true OCL true OCL true OCL true OCL result = ((self.deployment->collect(deployedArtifact))->collect(manifestation))->collect(utilizedElement) OCL STYLE_MODEL_ELEMENT_DEFAULTS STYLE_USER_PROPERTIES PROJECT_GENERAL_PROPERTIES _16_8_ff3038a_1290380192458_17389_11058 MODULES_DIRS MODULES_DIRS_DESCRIPTION <project.dir> FILE_TYPE_ANY <install.root>/profiles FILE_TYPE_ANY <install.root>/modelLibraries FILE_TYPE_ANY SHOW_DOT_NOTATION_FOR_ASSOCIATIONS SHOW_DOT_NOTATION_FOR_ASSOCIATIONS_DESCRIPTION CHANGE_OWNERSHIP_FOR_NAVIGABILITY CHANGE_OWNERSHIP_FOR_NAVIGABILITY_DESCRIPTION QNAME_DISPLAY_STYLE QNAME_DISPLAY_STYLE_DESCRIPTION QNAME_DISPLAY_STYLE_RELATIVE AUTO_SYNCHRONIZE_PARAMETERS_AND_ARGUMENTS AUTO_SYNCHRONIZE_PARAMETERS_AND_ARGUMENTS_DESCRIPTION ACTIVE_VALIDATION_SCOPE ACTIVE_VALIDATION eee_1045467100313_135436_1 IGNORED_ACTIVE_VALIDATION_SUITES ACTIVE_VALIDATION ACTIVE_VALIDATION_EXCLUDE_ELEMENTS_FROM_READONLY_MODULES ACTIVE_VALIDATION CHECK_FOR_CYCLIC_DEPENDENCIES DEPENDENCY_CHECKER_GROUP CHECK_FOR_CYCLIC_DEPENDENCIES_DESCRIPTION DEPENDENCY_SEVERITY_LEVEL DEPENDENCY_CHECKER_GROUP DEPENDENCY_SEVERITY_LEVEL_DESCRIPTION INFO IGNORE_STANDARD_PROFILES DEPENDENCY_CHECKER_GROUP IGNORE_STANDARD_PROFILES_DESCRIPTION ACTIVE_VALIDATION_SEVERITY ACTIVE_VALIDATION ACTIVE_VALIDATION_MARK_IN_MODEL ACTIVE_VALIDATION EMF_UML2_OUTPUT_LOCATION General EMF_UML2_OUTPUT_LOCATION_DESCRIPTION FILE_TYPE_ANY PROPAGATE_SYSML_VALUES SysML PROPAGATE_SYSML_VALUES_DESCRIPTION ENABLE_SYSML_AUTO_REQUIREMENT_ID SysML ENABLE_SYSML_AUTO_REQUIREMENT_ID_DESCRIPTION PROJECT_INVISIBLE_PROPERTIES _16_8_ff3038a_1290380192458_763888_11059 TOOL_TIP_STYLE TOOL_TIP_STYLE_DESCRIPTION LAST_INTERFACE_STYLE LAST_INTERFACE_STYLE_DESCRIPTION IS_BROWSER_VISIBLE IS_BROWSER_VISIBLE_DESCRIPTION BROWSER_ITEM_TYPES BROWSER_ITEM_TYPES_DESCRIPTION BROWSER_DIVIDER_LOCATION BROWSER_DIVIDER_LOCATION_DESCRIPTION BROWSER_BOUNDS BROWSER_BOUNDS_DESCRIPTION IS_DOCS_TAB_VISIBLE IS_DOCS_TAB_VISIBLE_DESCRIPTION BROWSER_LAYOUT BROWSER_LAYOUT_DESCRIPTION LAYOUT_BEFORE_FULL_SCREEN LAYOUT_BEFORE_FULL_SCREEN_DESCRIPTION LAYOUT_BEFORE_EXIT_FULL_SCREEN LAYOUT_BEFORE_EXIT_FULL_SCREEN_DESCRIPTION DIAGRAMS_LAYOUT DIAGRAMS_LAYOUT_DESCRIPTION MT_LAST_SELECTED_TRANSFORMATION MT_LAST_SELECTED_TRANSFORMATION_DESCRIPTION MT_TRANSFORMATION_IN_PLACE MT_TRANSFORMATION_IN_PLACE_DESCRIPTION MT_DESTINATION_PACKAGE MT_LAST_SELECTED_TYPE_MAP_PROFILE MT_LAST_SELECTED_TYPE_MAP_PROFILE_DESCRIPTION MT_LAST_SELECTED_TYPE_MAP_PROFILE_DIRECTION MT_LAST_SELECTED_TYPE_MAP_PROFILE_DIRECTION_DESCRIPTION INDEX_MODE INDEX_MODE_DESCRIPTION INDEX_SCOPE_ALL INDEX_SCOPE_ALL_DESCRIPTION INDEX_SCOPE INDEX_TYPES LAST_SELECTED_MODULE_PATH LAST_SELECTED_MODULE_PATH_DESCRIPTION DIAGRAM_INFO_CUSTOM_MODE DIAGRAM_INFO_CUSTOM_MODE_DESCRIPTION DIAGRAM_INFO_SELECTED_KEYWORDS DIAGRAM_INFO_SELECTED_KEYWORDS_DESCRIPTION Diagram name Author Creation date Modification date Last modified by DIAGRAM_INFO_CUSTOM_HTML DIAGRAM_INFO_CUSTOM_HTML_DESCRIPTION INFO_PROPERTY INFO_PROPERTY_DESCRIPTION c 39 2b 1a 36 34 7e 45 2a d 7 7e 37 dc f6 c1 fe b 1e 88 9d 57 5a 3c 5a 4b b1 c1 70 93 dc 61 a1 21 68 c6 e6 f1 a9 3d ADDITIONAL_CONTAINMENT_TREES ADDITIONAL_CONTAINMENT_TREES_DESCRIPTION LAST_DIRECTORY LAST_DIRECTORY_DESCRIPTION OutputTypeSelectionPanel.value OutputTypeSelectionPanel.value_DESCRIPTION PROJECT_VERSIONCHANGED PROJECT_VERSIONCHANGED_DESCRIPTION IGNORED_CONSTRAINT_PROPERTY ACTIVE_VALIDATION_IGNORED_OPTION ACTIVE_VALIDATION ACTIVE_VALIDATION_IGNORED_OPTION_DESCRIPTION SPELL_IGNORE_LIST SPELL_IGNORE_LIST_DESCRIPTION MagicDrawUML IGNORED_DUPLICATED_MODULES IGNORED_DUPLICATED_MODULES_DESCRIPTION STRUCTURE_BROWSER_ITEM_TYPES STRUCTURE_BROWSER_ITEM_TYPES_DESCRIPTION REQUIREMENT_BROWSER_ITEM_TYPES REQUIREMENT_BROWSER_ITEM_TYPES_DESCRIPTION Superstructure.mdxml Default Abstraction _16_8_ff3038a_1290380114378_181111_10922 _16_8_ff3038a_1290380114378_466681_10923 STEREOTYPE_COLOR STEREOTYPE_COLOR_DESCRIPTION STEREOTYPE_FONT STEREOTYPE_FONT_DESCRIPTION Arial