Revision 8a57f3b03992351f46c4537fd0d9351592278d2b (click the page title to view the current version)

OCL Benchmark B1

abstract Person
name : string
civstat : string
gender : string
alive ?
husband -> Person ?
[ parent in this.wife ]
wife -> Person ?
[ parent in this.husband ]
[ civstat = "single" || civstat = "married" || civstat = "divorced" || civstat = "widowed" ]
[ gender = "female" || gender = "male" ]
[ all p : Person | this != p => this.name.ref != p.name.ref ]
[ one p : Person | p.name.ref = this.name.ref ]
ada : Person
[ name = "Ada" ][ civstat = "widowed" ][ gender = "female" ][ alive ][ no husband ][ no wife ]
cyd : Person
[ name = "Cyd" ][ civstat = "married" ][ gender = "male" ][ no alive ][ no husband ][ no wife ]
eve : Person
[ name = "Eve" ][ civstat = "married" ][ gender = "female" ][ alive ][ husband = dan ][ no wife ]
bob : Person
[ name = "Bob" ][ civstat = "divorced" ][ gender = "male" ][ alive ][ no husband ][ no wife ]
dan : Person
[ name = "Dan" ][ civstat = "married" ][ gender = "male" ][ alive ][ no husband ][ wife = eve ]
adaBobCyd -> Person *
[ this.name in stringSet1 ]
[ all p : Person | p.name in stringSet1 => p in adaBobCyd ]
personWithUndefinedHusband1 -> Person *
personWithUndefinedHusband2 -> Person *
personWithNoWife -> Person *
[ no this.wife ]
[ all p : Person | no p.wife => p in personWithNoWife ]
emptyPersonSet1 -> Person *
emptyPersonSet2 -> Person *
[ 1 > 2 ]
personPair *
first -> Person
second -> Person
possiblePairs -> personPair *
[ this.first.gender = "female" && this.first.alive && this.first.civstat != "married" ][ this.second.gender = "male" && this.second.alive && this.second.civstat != "married" ]
[ all p; q : Person | p.gender = "female" && p.alive && p.civstat != "married" && q.gender = "male" && q.alive && q.civstat != "married" => one pair : personPair | pair.first = p && pair.second = q && pair in possiblePairs ]
stringSet1 -> string 3
[ this = "Ada" || this = "Bob" || this = "Cyd" ]
stringSet2 -> string 4
[ this = "Ada" || this = "Bob" || this = "Cyd" || this = "Dan" ]
var gwr=document.getElementById('graphWithRefs0'); gwr.style.display='block'; gwr.scrollLeft=this.scrollLeft; this.style.display='none'; var gwr=document.getElementById('graphWithRefs0'); gwr.style.display='block'; gwr.scrollLeft=this.scrollLeft; this.style.display='none'; -4,4 -4,-103.45 1710.51,-103.45 1710.51,4 -4,4 c0_Person abstract Person 11.00 c0_Person->c0_Person husband transparent c0_Person->c0_Person wife transparent c0_ada ada : Person 11.00 c0_ada->c0_Person 139.4,-84.36 149.99,-84.13 141.57,-77.71 139.4,-84.36 c0_cyd cyd : Person 11.00 c0_cyd->c0_Person 150.25,-81.36 160.54,-83.89 154.07,-75.5 150.25,-81.36 c0_eve eve : Person 11.00 c0_eve->c0_Person 168.32,-73.15 171.82,-83.15 175.32,-73.15 168.32,-73.15 c0_bob bob : Person 11.00 c0_bob->c0_Person 189.56,-75.5 183.09,-83.89 193.38,-81.36 189.56,-75.5 c0_dan dan : Person 11.00 c0_dan->c0_Person 202.22,-77.73 193.78,-84.14 204.37,-84.39 202.22,-77.73 c0_adaBobCyd adaBobCyd -> Person * 11.00 c0_adaBobCyd->c0_Person 207.13,-84.51 212.51,-80.73 209.48,-84.06 213.02,-83.38 213.02,-83.38 213.02,-83.38 209.48,-84.06 213.53,-86.03 207.13,-84.51 c0_personWithUndefinedHusband1 personWithUndefinedHusband1 -> Person * 11.00 c0_personWithUndefinedHusband1->c0_Person 211.84,-86.82 217.5,-83.47 214.21,-86.55 217.8,-86.15 217.8,-86.15 217.8,-86.15 214.21,-86.55 218.1,-88.84 211.84,-86.82 c0_personWithUndefinedHusband2 personWithUndefinedHusband2 -> Person * 11.00 c0_personWithUndefinedHusband2->c0_Person 211.81,-88.37 217.6,-85.24 214.19,-88.19 217.79,-87.93 217.79,-87.93 217.79,-87.93 214.19,-88.19 217.98,-90.63 211.81,-88.37 c0_personWithNoWife personWithNoWife -> Person * 11.00 c0_personWithNoWife->c0_Person 211.51,-89.48 217.39,-86.51 213.9,-89.37 217.51,-89.21 217.51,-89.21 217.51,-89.21 213.9,-89.37 217.63,-91.91 211.51,-89.48 c0_emptyPersonSet1 emptyPersonSet1 -> Person * 11.00 c0_emptyPersonSet1->c0_Person 211.58,-90.13 217.5,-87.26 213.97,-90.06 217.58,-89.96 217.58,-89.96 217.58,-89.96 213.97,-90.06 217.66,-92.65 211.58,-90.13 c0_emptyPersonSet2 emptyPersonSet2 -> Person * 11.00 c0_emptyPersonSet2->c0_Person 211.74,-90.56 217.69,-87.74 214.13,-90.51 217.74,-90.44 217.74,-90.44 217.74,-90.44 214.13,-90.51 217.79,-93.14 211.74,-90.56 c0_personPair personPair * 11.00 c0_personPair->c0_Person first transparent c0_personPair->c0_Person second transparent c0_possiblePairs possiblePairs -> personPair * 11.00 c0_possiblePairs->c0_personPair 1414.82,-36.54 1412.12,-30.54 1414.82,-34.15 1414.82,-30.54 1414.82,-30.54 1414.82,-30.54 1414.82,-34.15 1417.52,-30.54 1414.82,-36.54 c0_stringSet1 stringSet1 -> string 3 11.00 c0_stringSet2 stringSet2 -> string 4
Module Statistics: | All clafers: 24 | Abstract: 1 | Concrete: 23 | Reference: 16 | Constraints: 29 | Goals: 0 | Global scope: 4..* | Can skip name resolver: no |

Module Downloads: | [.cfr] | [.html] |