Entity: ATLModule 192 51 null * name String 3 false true false Entity: Property 284 166 null * name String 3 false false false Entity: ModuleElement 608 10 null * abstract name String 3 false true false Entity: Rule 647 91 ModuleElement * abstract Entity: Statement 882 85 null * abstract Entity: MatchedRule 626 156 Rule * isLazy boolean 3 false false false isUnique boolean 3 false false false Entity: OutPattern 437 106 null * Operation: toExpression OutPattern Expression query elements.size > 0 result = elements.first.toExpression(elements.tail) Entity: InPattern 635 264 null * Operation: toExpression InPattern Expression query true result = Expression.conjoinAll(elements->collect( e | e.toExpression() )) Entity: OutPatternElement 409 229 null * Operation: toExpression OutPatternElement Expression remels Sequence(OutPatternElement) query true ( remels.size > 1 => BinaryExpression->exists( ex | ex.operator = "->exists" & ex.iteratorVariable = variable & ex.left = Expression.makeBasicExpression(variable.type) & BinaryExpression->exists( re | re.operator = "&" & re.left = Expression.conjoinAll(bindings->collect(toExpression(Expression.makeBasicExpression(variable)))) & re.right = remels.first.toExpression(remels.tail) & re.type = Type.makePrimitiveType("boolean") & ex.right = re & ex.type = Type.makePrimitiveType("boolean") & result = ex ) ) ) & ( remels.size = 0 => BinaryExpression->exists( ex | ex.operator = "->exists" & ex.iteratorVariable = variable & ex.left = Expression.makeBasicExpression(variable.type) & ex.right = Expression.conjoinAll(bindings->collect(toExpression(Expression.makeBasicExpression(variable)))) & ex.type = Type.makePrimitiveType("boolean") & result = ex ) ) Entity: InPatternElement 637 343 null * Operation: toExpression InPatternElement Expression query true BinaryExpression->exists( cond | cond.operator = "&" & cond.right = condition & cond.type = Type.makePrimitiveType("boolean") & BinaryExpression->exists( inexp | inexp.operator = ":" & inexp.left = Expression.makeBasicExpression(variable) & inexp.right = Expression.makeBasicExpression(variable.type) & inexp.type = Type.makePrimitiveType("boolean") & cond.left = inexp & result = cond ) ) Entity: Binding 342 314 null * propertyName String 3 false false false Operation: toExpression Binding Expression vexp Expression query true BinaryExpression->exists( eq | eq.operator = "=" & eq.right = expression & eq.type = Type.makePrimitiveType("boolean") & BasicExpression->exists( l | l.data = propertyName & vexp : l.objectRef & eq.left = l & l.type = expression.type & result = eq ) ) Entity: Expression 554 413 null * abstract Operation: makeBasicExpression Expression BasicExpression t Type query static true BasicExpression->exists( r | r.data = t.name & r.type = t & result = r ) Operation: makeBasicExpression Expression BasicExpression p Property query static true BasicExpression->exists( r | r.data = p.name & r.type = p.type & result = r ) Operation: conjoinAll Expression Expression s Sequence(Expression) query static true ( s.size = 0 => BasicExpression->exists( e | e.data = "true" & e.type = Type.makePrimitiveType("boolean") & result = e ) ) & ( s.size = 1 => result = s.first ) & ( s.size > 1 => BinaryExpression->exists( r | r.operator = "&" & r.type = Type.makePrimitiveType("boolean") & r.left = s.first & r.right = Expression.conjoinAll(s.tail) & result = r ) ) Entity: CalledRule 951 167 Rule * Entity: BehaviouralFeature 0 112 null * name String 3 false true false Entity: BasicExpression 403 596 Expression * data String 3 false false false Entity: Constraint 707 640 null * id String 3 false true false Entity: NamedElement 1133 724 null * abstract name String 3 false true false Entity: Type 962 750 NamedElement * abstract Operation: makePrimitiveType Type PrimitiveType n String query static true PrimitiveType->exists( p | p.name = n & result = p ) Entity: PrimitiveType 768 767 Type * Entity: BinaryExpression 505 744 Expression * operator String 3 false false false Association: BinaryExpression Property -1 497 739 323 205 1 iteratorVariable null Entity: UseCase 1055 482 NamedElement * Association: ATLModule Property -1 345 96 347 160 0 attributes null ordered Association: ATLModule ModuleElement -1 442 87 608 32 0 elements null ordered Association: Rule Statement -1 698 94 878 105 1 actionBlock null Association: MatchedRule InPattern -1 686 217 687 264 1 inPattern null Association: Rule OutPattern -1 630 108 533 110 1 outPattern null Association: OutPattern OutPatternElement -1 519 139 553 222 0 elements null ordered Association: OutPatternElement Property -1 397 239 323 205 1 variable null Association: OutPatternElement Binding -1 416 257 417 313 0 bindings null ordered Association: InPattern InPatternElement -1 715 286 764 337 0 elements null ordered Association: InPatternElement Expression -1 637 370 585 423 1 condition null Association: Binding Expression -1 529 362 548 440 1 expression null Association: InPatternElement Property -1 769 373 279 181 1 variable null 767 535 199 535 199 181 Association: CalledRule Property 1 970 189 296 189 0 parameters null 965 556 180 554 179 280 ordered Association: ATLModule BehaviouralFeature 0 195 55 82 110 0 helpers null Association: BehaviouralFeature Property 1 156 133 287 169 0 parameters null Association: Expression Type 0 778 486 1000 752 1 type null 986 607 Association: BinaryExpression Expression 0 591 746 576 483 1 left null Association: BinaryExpression Expression 0 636 747 625 480 1 right null Association: UseCase Constraint 0 1059 504 819 643 0 orderedPostconditions null ordered Association: Constraint Expression 0 796 643 724 483 1 antecedent null Association: Constraint Expression 0 710 645 676 480 1 succedent null Association: UseCase BehaviouralFeature 0 1058 491 14 149 0 ownedOperation null 70 511 Association: BehaviouralFeature Expression 0 65 146 549 448 1 precondition null Association: BehaviouralFeature Expression 0 30 147 547 462 1 postcondition null Association: Property Type 0 300 203 966 753 1 type null 323 678 Association: BasicExpression Expression 0 425 599 548 480 -1 objectRef null 421 494 Generalisation: ModuleElement Rule 675 91 676 49 Generalisation: Rule MatchedRule 679 158 678 115 Generalisation: Rule CalledRule 954 171 694 113 Generalisation: Expression BasicExpression 526 598 552 467 Generalisation: NamedElement Type 1009 757 1135 750 Generalisation: Type PrimitiveType 885 774 964 760 Generalisation: Expression BinaryExpression 606 748 596 482 Generalisation: NamedElement UseCase 1124 504 1230 725 Association: UseCase Property 1 1061 484 288 203 0 ownedAttribute null 259 405 GeneralUseCase: atl2umlrsds false Constraint: null true UseCase->exists( uc | uc.name = name & uc.ownedAttribute = attributes & uc.ownedOperation = helpers ) ATLModule atl2umlrsds false Constraint: uc = UseCase[name] r : MatchedRule & r : elements & r.isLazy = false Constraint->exists( c | c.id = r.name & c : uc.orderedPostconditions ) ATLModule atl2umlrsds false Constraint: isLazy = false c = Constraint[name] c.antecedent = inPattern.toExpression() & c.succedent = outPattern.toExpression() MatchedRule atl2umlrsds false Constraint: uc = UseCase[name] r : MatchedRule & r : elements & r.isLazy = true BehaviouralFeature->exists( bf | bf.name = r.name & bf.parameters = r.inPattern.elements.variable & bf : uc.ownedOperation ) ATLModule atl2umlrsds false Constraint: uc = UseCase[name] r : CalledRule & r : elements BehaviouralFeature->exists( bf | bf.name = r.name & bf.parameters = r.parameters & bf : uc.ownedOperation ) ATLModule atl2umlrsds false Constraint: isLazy = true bf = BehaviouralFeature[name] bf.precondition = inPattern.toExpression() & bf.postcondition = outPattern.toExpression() MatchedRule atl2umlrsds false Constraint: bf = BehaviouralFeature[name] null bf.postcondition = outPattern.toExpression() CalledRule atl2umlrsds false