abstract ClaferMooVisualizer deployedAtURL -> string xor state `init `loadingAndProcessing `error `ready views `graph `table `analysis viz1 : ClaferMooVisualizer [ deployedAtURL = "wiselab.uwaterloo.ca:8092" ] [ init ] abstract mux init claferFileURL -> string ? claferFileUpload -> string ? viz2 : ClaferMooVisualizer [ deployedAtURL = "wiselab.uwaterloo.ca:8092" ] [ init ] [ no claferFileURL ] [ no claferFileUpload ] viz3 : ClaferMooVisualizer [ deployedAtURL = "wiselab.uwaterloo.ca:8092" ] [ claferFileURL = "server/model.cfr" ] viz4 : ClaferMooVisualizer [ deployedAtURL = "wiselab.uwaterloo.ca:8092" ] [ claferFileUpload = "model.cfr" ] abstract loadingAndProcessing abstract xor error xor loading invalidClaferFileURL -> string parseError -> string compileError -> string missingGoals xor processing optimizationError -> string timeout outOfMemory abstract Dimension abstract Goal dimension -> Dimension xor kind minimizee maximizee performance : Dimension energy : Dimension security : Dimension mass : Dimension maxPerformance : Goal [ dimension = performance ] [ maximizee ] minEnergy : Goal [ dimension = energy ] [ minimizee ] maxSecurity : Goal [ dimension = security ] [ maximizee ] minMass : Goal [ dimension = mass ] [ minimizee ] abstract ready goals -> Goal + r1 : ready [ goals = maxPerformance, minEnergy, maxSecurity, minMass ] abstract Product abstract Bubble x -> integer y -> integer opacity -> integer size -> integer product -> Product [ all disj b1; b2 : Bubble | b1.product != b2.product ] // disjoint [ # Bubble = # Product ] // cover products : Product 28 bubbles : Bubble 28 abstract graph xAxis -> Dimension yAxis -> Dimension opacity -> Dimension size -> Dimension [ xAxis != yAxis && xAxis != opacity && xAxis != size ] [ yAxis != opacity && yAxis != size ] [ opacity != size ] bubble -> Bubble * g1 : graph [ xAxis = performance ] [ yAxis = energy ] [ opacity = security ] [ size = mass ] [ bubble = bubbles ] abstract table abstract analysis