aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbinbin1705 -> 1701 bytes
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbinbin2535 -> 2526 bytes
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF20
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/META-INF/MANIFEST.MF44
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend2
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.classpath10
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.gitignore6
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.project34
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/Inputs/.gitignore4
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF18
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/build.properties4
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.xtend5
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.xtend72
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend124
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend47
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.xtend106
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.xtend61
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend107
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend77
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.xtend37
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend81
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend79
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.xtend8
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.xtend9
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.xtend80
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.xtend49
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.xtend49
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/.gitignore10
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/input/.gitignore3
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/MPC.pngbin0 -> 29675 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Node Activity.pngbin0 -> 32871 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Out Degree.pngbin0 -> 87131 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/MPC.pngbin0 -> 127107 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Node Activity.pngbin0 -> 118735 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Out Degree.pngbin0 -> 116864 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/MPC.pngbin0 -> 85397 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Node Activity.pngbin0 -> 87774 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Out Degree.pngbin0 -> 95122 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/MPC.pngbin0 -> 171018 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Node Activity.pngbin0 -> 114184 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Out Degree.pngbin0 -> 139638 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/MPC.pngbin0 -> 97403 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Node Activity.pngbin0 -> 88084 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Out Degree.pngbin0 -> 87391 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py98
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore3
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpgbin0 -> 491184 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpgbin0 -> 478870 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpgbin0 -> 403591 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpgbin0 -> 393999 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpgbin0 -> 373785 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpgbin0 -> 271040 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpgbin0 -> 209185 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpgbin0 -> 159590 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpgbin0 -> 200160 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpgbin0 -> 513832 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpgbin0 -> 513922 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpgbin0 -> 506046 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpgbin0 -> 581498 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpgbin0 -> 566190 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpgbin0 -> 534577 bytes
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb481
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb955
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb336
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py29
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/utils/constants.py25
-rw-r--r--Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py169
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.classpath8
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.gitignore1
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.project34
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/META-INF/MANIFEST.MF34
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/build.properties10
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/IRREALISTIC1NEIGHBOURHOOD.gml440
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/REALISTIC1NEIGHBOURHOOD.gml520
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleMODEL.gml752
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleNEIGHBOURHOOD.gml210
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModel.gml1891
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelMODEL.gml1562
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelNEIGHBOURHOOD.gml724
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLMODEL.gml696
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLNEIGHBOURHOOD.gml336
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic0NEIGHBOURHOOD.gml304
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic1NEIGHBOURHOOD.gml374
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic2NEIGHBOURHOOD.gml560
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic3NEIGHBOURHOOD.gml639
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealisticMODEL.gml698
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic0NEIGHBOURHOOD.gml314
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic1NEIGHBOURHOOD.gml621
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic2NEIGHBOURHOOD.gml559
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic3NEIGHBOURHOOD.gml599
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealisticMODEL.gml736
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/unnames.gml90
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.properties4
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.xml25
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/cycle.xmi21
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.aird201
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.ecore15
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.genmodel18
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/realisticModel.xmi48
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleLL.xmi19
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCIrrealistic.xmi14
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCRealistic.xmi14
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.aird231
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.ecore16
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.genmodel20
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.gml121
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.graphml69
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend80
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Element.java77
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListFactory.java60
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListPackage.java312
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/List.java50
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Object.java19
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ElementImpl.java241
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListFactoryImpl.java120
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListPackageImpl.java239
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ListImpl.java176
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ObjectImpl.java36
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListAdapterFactory.java158
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListSwitch.java154
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Entry.java50
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartFactory.java60
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartPackage.java340
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/State.java42
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Statechart.java69
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/EntryImpl.java157
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartFactoryImpl.java117
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartPackageImpl.java252
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StateImpl.java133
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StatechartImpl.java221
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartAdapterFactory.java156
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartSwitch.java152
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbinbin0 -> 7750 bytes
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore1
-rw-r--r--Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.java109
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF32
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ScopePropagator.xtend9
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Neighbourhood2Gml.xtend337
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF3
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend13
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java46
143 files changed, 20761 insertions, 64 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
index ca156c38..d888605f 100644
--- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
+++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeModule.xtendbin
Binary files differ
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
index 51888916..093b7865 100644
--- a/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
+++ b/Application/hu.bme.mit.inf.dslreasoner.application.ide/xtend-gen/hu/bme/mit/inf/dslreasoner/application/ide/.ApplicationConfigurationIdeSetup.xtendbin
Binary files differ
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF
index f15381b2..f2fd2ff3 100644
--- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/META-INF/MANIFEST.MF
@@ -6,17 +6,15 @@ Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: . 6Bundle-ClassPath: .
7Bundle-Vendor: %providerName 7Bundle-Vendor: %providerName
8Bundle-Localization: plugin 8Bundle-Localization: plugin
9Export-Package: hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm, 9Export-Package: hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm,
10 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl, 10 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl,
11 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.util, 11 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.util,
12 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu, 12 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu,
13 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated, 13 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated
14 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.mutated.util, 14Require-Bundle: org.eclipse.viatra.query.runtime,
15 hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.util 15 org.eclipse.core.runtime,
16Require-Bundle: org.eclipse.viatra.query.runtime, 16 org.eclipse.emf.ecore;visibility:=reexport,
17 org.eclipse.core.runtime, 17 com.google.guava;bundle-version="15.0.0"
18 org.eclipse.emf.ecore;visibility:=reexport,
19 com.google.guava;bundle-version="15.0.0"
20Bundle-RequiredExecutionEnvironment: JavaSE-1.8 18Bundle-RequiredExecutionEnvironment: JavaSE-1.8
21Bundle-ActivationPolicy: lazy 19Bundle-ActivationPolicy: lazy
22Import-Package: org.apache.log4j 20Import-Package: org.apache.log4j
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/META-INF/MANIFEST.MF b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/META-INF/MANIFEST.MF
index 338e8c09..8e1bba03 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/META-INF/MANIFEST.MF
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/META-INF/MANIFEST.MF
@@ -7,29 +7,29 @@ Bundle-ClassPath: .
7Bundle-Vendor: %providerName 7Bundle-Vendor: %providerName
8Bundle-Localization: plugin 8Bundle-Localization: plugin
9Export-Package: hu.bme.mit.inf.dslreasoner.logic.model.builder, 9Export-Package: hu.bme.mit.inf.dslreasoner.logic.model.builder,
10 hu.bme.mit.inf.dslreasoner.logic.model.builder.consistencychecker, 10 hu.bme.mit.inf.dslreasoner.logic.model.builder.consistencychecker,
11 hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage, 11 hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage,
12 hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl, 12 hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl,
13 hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.util, 13 hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.util,
14 hu.bme.mit.inf.dslreasoner.logic.model.logicproblem, 14 hu.bme.mit.inf.dslreasoner.logic.model.logicproblem,
15 hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.impl, 15 hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.impl,
16 hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.util, 16 hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.util,
17 hu.bme.mit.inf.dslreasoner.logic.model.logicresult, 17 hu.bme.mit.inf.dslreasoner.logic.model.logicresult,
18 hu.bme.mit.inf.dslreasoner.logic.model.logicresult.impl, 18 hu.bme.mit.inf.dslreasoner.logic.model.logicresult.impl,
19 hu.bme.mit.inf.dslreasoner.logic.model.logicresult.util, 19 hu.bme.mit.inf.dslreasoner.logic.model.logicresult.util,
20 hu.bme.mit.inf.dslreasoner.logic.model.patterns, 20 hu.bme.mit.inf.dslreasoner.logic.model.patterns,
21 hu.bme.mit.inf.dslreasoner.logic.model.statistics, 21 hu.bme.mit.inf.dslreasoner.logic.model.statistics,
22 hu.bme.mit.inf.dslreasoner.util, 22 hu.bme.mit.inf.dslreasoner.util,
23 hu.bme.mit.inf.dslreasoner.workspace 23 hu.bme.mit.inf.dslreasoner.workspace
24Require-Bundle: org.eclipse.core.runtime, 24Require-Bundle: org.eclipse.core.runtime,
25 org.eclipse.emf.ecore;visibility:=reexport, 25 org.eclipse.emf.ecore;visibility:=reexport,
26 com.google.guava, 26 com.google.guava,
27 org.eclipse.xtend.lib, 27 org.eclipse.xtend.lib,
28 org.eclipse.xtext.xbase.lib, 28 org.eclipse.xtext.xbase.lib,
29 org.eclipse.core.resources;bundle-version="3.8.101", 29 org.eclipse.core.resources;bundle-version="3.8.101",
30 org.eclipse.viatra.query.runtime;bundle-version="1.3.0", 30 org.eclipse.viatra.query.runtime;bundle-version="1.3.0",
31 org.apache.commons.lang;bundle-version="2.6.0", 31 org.apache.commons.lang;bundle-version="2.6.0",
32 org.eclipse.emf.ecore.xmi;bundle-version="2.13.0" 32 org.eclipse.emf.ecore.xmi;bundle-version="2.13.0"
33Import-Package: org.apache.log4j 33Import-Package: org.apache.log4j
34Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.logic.model 34Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.logic.model
35Bundle-ActivationPolicy: lazy 35Bundle-ActivationPolicy: lazy
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
index f1d410d8..b4d9a8fa 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
@@ -65,7 +65,7 @@ public enum DocumentationLevel {
65 /** 65 /**
66 * The solver writes only temporary files. 66 * The solver writes only temporary files.
67 */ 67 */
68 NONE, 68 NONE,
69 /** 69 /**
70 * The solver is requested to write important artifacts and documents that are constructed during the generation. 70 * The solver is requested to write important artifacts and documents that are constructed during the generation.
71 * This option should not affect the performance of the solver seriously. 71 * This option should not affect the performance of the solver seriously.
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.classpath b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.classpath
new file mode 100644
index 00000000..f4f8357b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.classpath
@@ -0,0 +1,10 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="xtend-gen"/>
7 <classpathentry kind="lib" path="C:/Users/chenp/eclipse-workspace/VIATRA-Generator/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/lib/commons-math3-3.6.1.jar"/>
8 <classpathentry kind="lib" path="C:/Users/chenp/eclipse-workspace/VIATRA-Generator/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/lib/commons-math3-3.6.1-javadoc.jar"/>
9 <classpathentry kind="output" path="bin"/>
10</classpath>
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.gitignore b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.gitignore
new file mode 100644
index 00000000..317e68e2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.gitignore
@@ -0,0 +1,6 @@
1/bin/
2bin/
3testInput/
4testOutput/
5xtend-gen/
6*.csv \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.project b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.project
new file mode 100644
index 00000000..5154dea0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.jdt.core.javabuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.ManifestBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.SchemaBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 </buildSpec>
29 <natures>
30 <nature>org.eclipse.pde.PluginNature</nature>
31 <nature>org.eclipse.jdt.core.javanature</nature>
32 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
33 </natures>
34</projectDescription>
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.jdt.core.prefs b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..0c68a61d
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/Inputs/.gitignore b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/Inputs/.gitignore
new file mode 100644
index 00000000..17126b28
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/Inputs/.gitignore
@@ -0,0 +1,4 @@
1# ignore everything in this folder except for this folder it self
2
3*
4!.gitignore \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..da19e07c
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: Graph_metrics_calculation
4Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator
5Bundle-Version: 1.0.0.qualifier
6Automatic-Module-Name: graph_metrics_calculation
7Bundle-RequiredExecutionEnvironment: JavaSE-1.8
8Require-Bundle: com.google.guava,
9 org.eclipse.xtext.xbase.lib,
10 org.eclipse.xtend.lib,
11 org.eclipse.xtend.lib.macro,
12 org.eclipse.emf.ecore;bundle-version="2.17.0",
13 org.eclipse.emf.ecore.xmi;bundle-version="2.15.0",
14 hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0",
15 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph;bundle-version="1.0.0",
16 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0",
17 org.eclipse.viatra.dse;bundle-version="0.21.2"
18Export-Package: ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/build.properties b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/build.properties
new file mode 100644
index 00000000..34d2e4d2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/build.properties
@@ -0,0 +1,4 @@
1source.. = src/
2output.. = bin/
3bin.includes = META-INF/,\
4 .
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.xtend
new file mode 100644
index 00000000..8351e96b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.xtend
@@ -0,0 +1,5 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app
2
3enum Domain{
4 Yakinduum
5} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.xtend
new file mode 100644
index 00000000..cf871ead
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.xtend
@@ -0,0 +1,72 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader
6import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummPackageImpl
7import java.util.ArrayList
8
9//import yakindumm2.impl.Yakindumm2PackageImpl
10
11class Main {
12 static class RWInformation{
13 public var String inputFolder;
14 public var String outputFolder;
15 public var int numRuns;
16
17 new(String inputFolder, String outputFolder, int numRuns){
18 this.inputFolder = inputFolder;
19 this.outputFolder = outputFolder;
20 this.numRuns = numRuns;
21 }
22 }
23
24 def static void main(String[] args){
25 //init model
26 YakindummPackageImpl.eINSTANCE.eClass;
27// Yakindumm2PackageImpl.eINSTANCE.eClass;
28 //val infos = initData();
29
30 println("Start Reading Models...");
31 var reader = new GraphReader(YakindummPackageImpl.eINSTANCE);
32// for(info : infos){
33// calculateAllModels(info.inputFolder, info.outputFolder,info.numRuns, reader);
34// }
35
36 //human input has different package declaration
37// reader = new GraphReader(Yakindumm2PackageImpl.eINSTANCE);
38 val human = new RWInformation("inputs/Random/", "outputs/", 1);
39 calculateAllModels(human.inputFolder, human.outputFolder,human.numRuns, reader);
40
41
42 println("finished");
43 }
44
45 static def initData(){
46 val infos = new ArrayList<RWInformation>();
47 infos.add(new RWInformation("inputs/alloyInput/models/", "../plot/statistics/alloyOutput/", 20));
48 infos.add(new RWInformation("inputs/randomInput/models/", "../plot/statistics/randomOutput/", 20));
49 infos.add(new RWInformation("inputs/viatraInput30/", "../plot/statistics/viatraOutput30/", 20));
50 infos.add(new RWInformation("inputs/viatraInput100/", "../plot/statistics/viatraOutput100/", 10));
51 return infos;
52 }
53
54 static def calculateAllModels(String inputFolder, String outputFolder, int numRuns, GraphReader reader){
55 for(var i = 1; i <= numRuns; i++){
56 val models = new ArrayList<EMFGraph>();
57 models.addAll(reader.readModels(inputFolder + "run" + i));
58 for(model : models){
59 calculateAndOutputMetrics(model, YakindummPackageImpl.eNAME, outputFolder+model.name+"_run_"+i+".csv");
60 }
61 }
62 println("output results Ended for: " + outputFolder);
63
64
65 }
66
67 static def calculateAndOutputMetrics(EMFGraph model, String metaModel, String fileName){
68 //println("evaluating for " + model.name);
69 model.metaModel = metaModel;
70 CsvFileWriter.write(model.evaluateAllMetrics(), fileName);
71 }
72} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend
new file mode 100644
index 00000000..cdd06027
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend
@@ -0,0 +1,124 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.PartialInterpretationGraph
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter
6import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
7import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric
8import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric
9import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric
10import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
11import java.io.File
12import java.io.FileNotFoundException
13import java.io.PrintWriter
14import java.util.ArrayList
15import java.util.List
16import org.eclipse.emf.ecore.util.EcoreUtil
17import org.eclipse.viatra.dse.api.Solution
18
19class PartialInterpretationMetric {
20 var static state = 0;
21 var static KSDistance ks;
22
23 def static void initPaths(){
24 new File("debug/metric/").mkdir();
25 new File("debug/metric/trajectories/").mkdir();
26 ks = new KSDistance(Domain.Yakinduum);
27 }
28
29 def static MetricDistanceGroup calculateMetricDistance(PartialInterpretation partial){
30 val metrics = new ArrayList<Metric>();
31 metrics.add(new OutDegreeMetric());
32 metrics.add(new NodeActivityMetric());
33 metrics.add(new MultiplexParticipationCoefficientMetric());
34
35 val metricCalculator = new PartialInterpretationGraph(partial, metrics, null);
36 var metricSamples = metricCalculator.evaluateAllMetricsToSamples();
37
38 var mpc = ks.mpcDistance(metricSamples.mpcSamples);
39 var na = ks.naDistance(metricSamples.naSamples);
40 var outDegree = ks.outDegreeDistance(metricSamples.outDegreeSamples);
41
42 return new MetricDistanceGroup(mpc, na, outDegree);
43 }
44
45 // calculate the metrics for a state
46 def static void calculateMetric(PartialInterpretation partial, String path, String currentStateId, Integer counter){
47 val metrics = new ArrayList<Metric>();
48 metrics.add(new OutDegreeMetric());
49 metrics.add(new NodeActivityMetric());
50 metrics.add(new MultiplexParticipationCoefficientMetric());
51
52 //make dir since the folder can be none existing
53 new File(path).mkdir();
54 val filename = path + "/state_"+currentStateId+"-"+counter+".csv";
55 state++;
56 val metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId);
57
58 CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename);
59 }
60
61 def static void outputTrajectories(PartialInterpretation empty, List<Solution> solutions){
62 for(solution : solutions){
63 //need to copy the empty solution because the transition directly worked on the graph
64 val emptySolutionCopy = EcoreUtil.copy(empty)
65 val trajectory = solution.shortestTrajectory;
66 trajectory.modelWithEditingDomain = emptySolutionCopy
67
68 // state codes that will record the trajectory
69 val stateCodes = newArrayList()
70
71 var counter = 0
72 //transform and record the state codes for each state
73 while(trajectory.doNextTransformation){
74 //println(trajectory.stateCoder.createStateCode)
75 val stateId = trajectory.stateCoder.createStateCode.toString
76 val interpretation = trajectory.getModel();
77 //calculate metrics of current state
78 calculateMetric(interpretation as PartialInterpretation, "debug/metric/output", stateId, counter)
79 stateCodes.add(stateId)
80 counter++
81 }
82
83
84 //output the trajectory
85 try{
86 new File("debug/metric/trajectories/").mkdir();
87 val path = "debug/metric/trajectories/trajectory"+trajectory.stateCoder.createStateCode.toString+".csv"
88 val PrintWriter writer = new PrintWriter(new File(path))
89 val output = new StringBuilder
90 for(stateCode : stateCodes){
91 output.append(stateCode+'\n')
92 }
93 writer.write(output.toString())
94 writer.close()
95 }catch(FileNotFoundException e) {
96 e.printStackTrace()
97 }
98 }
99 }
100}
101
102class MetricDistanceGroup{
103 var double mpcDistance;
104 var double naDistance;
105 var double outDegreeDistance;
106
107 new(double mpcDistance, double naDistance, double outDegreeDistance){
108 this.mpcDistance = mpcDistance;
109 this.naDistance = naDistance;
110 this.outDegreeDistance = outDegreeDistance;
111 }
112
113 def double getMPCDistance(){
114 return this.mpcDistance
115 }
116
117 def double getNADistance(){
118 return this.naDistance
119 }
120
121 def double getOutDegreeDistance(){
122 return this.outDegreeDistance
123 }
124} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
new file mode 100644
index 00000000..1fb21529
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
@@ -0,0 +1,47 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain
4import java.util.List
5import org.apache.commons.math3.stat.inference.KolmogorovSmirnovTest
6import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader
7
8class KSDistance {
9 var static ksTester = new KolmogorovSmirnovTest();
10 var double[] mpcSamples;
11 var double[] naSamples;
12 var double[] outDegreeSamples;
13
14 new(Domain d){
15 var metrics = RepMetricsReader.read(d);
16 mpcSamples = metrics.mpcSamples;
17 naSamples = metrics.naSamples.stream.mapToDouble([it]).toArray();
18 outDegreeSamples = metrics.outDegreeSamples.stream.mapToDouble([it]).toArray();
19 }
20
21 def double mpcDistance(List<Double> samples){
22 // map list to array
23 var arr = samples.stream.mapToDouble([it]).toArray();
24
25 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1
26 if(arr.size < 2) return 1;
27 return ksTester.kolmogorovSmirnovStatistic(mpcSamples, arr);
28 }
29
30 def double naDistance(List<Double> samples){
31 // map list to array
32 var arr = samples.stream.mapToDouble([it]).toArray();
33
34 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1
35 if(arr.size < 2) return 1;
36 return ksTester.kolmogorovSmirnovStatistic(naSamples as double[], arr);
37 }
38
39 def double outDegreeDistance(List<Double> samples){
40 // map list to array
41 var arr = samples.stream.mapToDouble([it]).toArray();
42
43 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1
44 if(arr.size < 2) return 1;
45 return ksTester.kolmogorovSmirnovStatistic(outDegreeSamples, arr);
46 }
47} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.xtend
new file mode 100644
index 00000000..5c161f4b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.xtend
@@ -0,0 +1,106 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
4import java.util.ArrayList
5import java.util.List
6import org.eclipse.emf.common.util.EList
7import org.eclipse.emf.ecore.EObject
8import org.eclipse.emf.ecore.EReference
9
10class EMFGraph extends Graph{
11 def void init (EObject root, List<Metric> metrics, String name, List<String> referenceTypes){
12 val otherContents = root.eAllContents.toList();
13 otherContents.add(root);
14 init(otherContents, metrics, name, referenceTypes);
15 }
16
17 /**
18 * init the graph with all nodes and reference types in the meta model
19 * @param objects: objects in the instance model (exclude root)
20 * @param metrics: metrics to be evaluated
21 * @param name: name of the instance model
22 * @param ReferenceTypes: reference types defined in the meta model
23 */
24 def void init(List<EObject> objects, List<Metric> metrics, String name, List<String> referenceTypes){
25 objects.forEach[it|
26 statistic.addNode(it);
27 ]
28
29 referenceTypes.forEach[it|
30 statistic.addType(it);
31 ];
32
33 objects.forEach[source|
34 source.eClass.EAllReferences.forEach[r|
35 //add the type first (if it is not added already)
36 //many references
37 if(r.isMany){
38 source.getNeighbours(r).forEach[target|
39 addEdge(source, target, r);
40 ]
41 }else{
42 //single references
43 val target = source.eGet(r) as EObject;
44 addEdge(source, target, r);
45 }
46 ]
47 ]
48
49 this.metrics = metrics;
50 this.name = name;
51 }
52
53 /**
54 * Set basic information for the output
55 */
56 override setBasicInformation(ArrayList<ArrayList<String>> output){
57 val metaInfo = new ArrayList<String>();
58 metaInfo.add(META_MODEL_HEADER);
59 metaInfo.add(this.metaModel);
60
61 val edgeInfo = new ArrayList<String>();
62 edgeInfo.add(NUM_EDGE_TYPE_HEADER);
63 edgeInfo.add(this.statistic.allTypes.size()+"");
64
65 val nodeInfo = new ArrayList<String>();
66 nodeInfo.add(NUM_NODE_HEADER);
67 nodeInfo.add(this.statistic.allNodes.size()+"");
68
69 val stateInfo = new ArrayList<String>();
70 stateInfo.add(STATE_ID_HEADER);
71 stateInfo.add(this.name);
72
73
74 output.add(metaInfo);
75 output.add(edgeInfo);
76 output.add(nodeInfo);
77 output.add(stateInfo);
78 }
79
80 def EList<EObject> getNeighbours(EObject o, EReference r){
81 return (o.eGet(r, true) as EList<EObject>);
82 }
83
84 def addEdge(EObject source, EObject target, EReference r){
85 if(target !== null && r !== null){
86 statistic.addEdge(source, target, r.name);
87 }
88 }
89
90 override GraphStatistic getStatistic(){
91 return this.statistic;
92 }
93
94 override String getName(){
95 return this.name;
96 }
97
98 def void setMetaModel(String model){
99 this.metaModel = model;
100 }
101
102 def String getMetaModel(){
103 return this.metaModel;
104 }
105
106} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.xtend
new file mode 100644
index 00000000..cf4aedba
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.xtend
@@ -0,0 +1,61 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup
5import java.util.ArrayList
6import java.util.List
7import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric
8import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric
9import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric
10
11abstract class Graph {
12
13 protected static val String META_MODEL_HEADER = "Meta Mode"
14 protected static val String NUM_NODE_HEADER = "Number Of Nodes";
15 protected static val String NUM_EDGE_TYPE_HEADER = "Number of Edge types";
16 protected static val String STATE_ID_HEADER = "State Id";
17
18 protected val statistic = new GraphStatistic();
19 protected var List<Metric> metrics;
20 protected var String name = "";
21 protected var String metaModel = "";
22
23 /**
24 * evaluate all metrics for this model
25 * return the result as a two dimentional list
26 */
27 def ArrayList<ArrayList<String>> evaluateAllMetrics(){
28 val result = new ArrayList<ArrayList<String>>();
29 setBasicInformation(result);
30
31 for(metric : this.metrics){
32 val datas = metric.evaluate(this.statistic);
33 for(row : datas){
34 result.add(new ArrayList<String>(row));
35 }
36 }
37 return result;
38 }
39
40 def MetricSampleGroup evaluateAllMetricsToSamples(){
41 var sample = new MetricSampleGroup();
42
43 for(metric : this.metrics){
44 if(metric instanceof MultiplexParticipationCoefficientMetric){
45 sample.mpcSamples = metric.evaluateSamples(this.statistic);
46 }else if(metric instanceof NodeActivityMetric){
47 sample.naSamples = metric.evaluateSamples(this.statistic);
48 }else if(metric instanceof OutDegreeMetric){
49 sample.outDegreeSamples = metric.evaluateSamples(this.statistic);
50 }
51 }
52
53 return sample;
54 }
55
56 def void setBasicInformation(ArrayList<ArrayList<String>> result);
57
58 def GraphStatistic getStatistic();
59
60 def String getName();
61} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend
new file mode 100644
index 00000000..7ed58094
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend
@@ -0,0 +1,107 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph
2
3import com.google.common.collect.ArrayListMultimap
4import com.google.common.collect.Multimap
5import java.util.HashMap
6import java.util.HashSet
7import java.util.List
8import org.eclipse.emf.ecore.EObject
9
10class GraphStatistic {
11 val incomingEdges = new HashMap<String, Multimap<EObject, EObject>>;
12 val outcomingEdges = new HashMap<String, Multimap<EObject, EObject>>;
13
14 val edgeTypes = new HashSet<String>();
15 val nodes = new HashSet<EObject>();
16
17 /**
18 * Add an edge type to to the graph
19 * @param type: type to add
20 */
21 def void addType(String type){
22 if(edgeTypes.contains(type)){
23 return;
24 }
25 edgeTypes.add(type);
26 incomingEdges.put(type, ArrayListMultimap.create());
27 outcomingEdges.put(type, ArrayListMultimap.create());
28 }
29
30 /**
31 * Add a node to he graph
32 * @param node: node to add
33 */
34 def void addNode(EObject n){
35 if(nodes.contains(n)){
36 return;
37 }
38
39 nodes.add(n);
40 }
41
42 /**
43 * Add an edge to the graph
44 * @param source: source node
45 * @param target: target node
46 * @param type: type of the reference
47 */
48 def void addEdge(EObject source, EObject target, String type){
49 outcomingEdges.get(type).put(source, target);
50 incomingEdges.get(type).put(target, source);
51 }
52
53 /**
54 * calculate the out degree for an object
55 */
56 def int outDegree(EObject o){
57 var count = 0;
58
59 for (String type : edgeTypes){
60 count += outcomingEdges.get(type).get(o).size();
61 }
62 return count;
63 }
64
65 /**
66 * calculate the in degree of an object
67 */
68 def int inDegree(EObject o){
69 var count = 0;
70
71 for (String type : edgeTypes){
72 count += incomingEdges.get(type).get(o).size();
73 }
74 return count;
75 }
76
77 /**
78 * calculate the dimentional degree of a node
79 */
80 def int dimentionalDegree(EObject o, String type){
81 return incomingEdges.get(type).get(o).size() + outcomingEdges.get(type).get(o).size();
82 }
83
84 /**
85 * calculate the number of edge types for a given degree.
86 */
87 def int numOfEdgeTypes(EObject o){
88 var count = 0;
89
90 for(String type : edgeTypes){
91 if(dimentionalDegree(o, type) > 0){
92 count++;
93 }
94 }
95
96 return count;
97 }
98
99 def List<String> getAllTypes(){
100 return edgeTypes.toList();
101 }
102
103 def List<EObject> getAllNodes(){
104 return nodes.toList();
105 }
106}
107
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
new file mode 100644
index 00000000..14337ab0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
@@ -0,0 +1,77 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
4import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BooleanElementImpl
8import java.util.ArrayList
9import java.util.List
10
11class PartialInterpretationGraph extends Graph{
12
13 /**
14 * Define a new PartialInterpretationGraph by parse every element from a PartialInterpretation
15 */
16 new(PartialInterpretation partial, List<Metric> metrics, String name){
17 //the edge types are defined in terms of RelationDeclaration
18 partial.problem.relations.filter(RelationDeclaration).forEach[
19 this.statistic.addType(it.name);
20 ]
21 // add all elements
22 val elements = getElements(partial);
23 for(element : elements){
24 statistic.addNode(element)
25 }
26
27 for(relationInterpretation : partial.partialrelationinterpretation) {
28 val type = relationInterpretation.interpretationOf.name
29
30 for(edge : relationInterpretation.relationlinks.filter(BinaryElementRelationLink)){
31 statistic.addEdge(edge.param1, edge.param2, type);
32 }
33 }
34
35 this.name = name;
36 this.metrics = metrics;
37 }
38
39 /**
40 * Set basic information for the output
41 */
42 override setBasicInformation(ArrayList<ArrayList<String>> output){
43 val metaInfo = new ArrayList<String>();
44 metaInfo.add(META_MODEL_HEADER);
45 metaInfo.add(this.metaModel);
46
47 val edgeInfo = new ArrayList<String>();
48 edgeInfo.add(NUM_EDGE_TYPE_HEADER);
49 edgeInfo.add(this.statistic.allTypes.size()+"");
50
51 val nodeInfo = new ArrayList<String>();
52 nodeInfo.add(NUM_NODE_HEADER);
53 nodeInfo.add(this.statistic.allNodes.size()+"");
54
55 val stateInfo = new ArrayList<String>();
56 stateInfo.add(STATE_ID_HEADER);
57 stateInfo.add(this.name);
58
59 output.add(metaInfo);
60 output.add(edgeInfo);
61 output.add(nodeInfo);
62 output.add(stateInfo);
63 }
64
65 private def getElements(PartialInterpretation partial){
66 return partial.newElements.filter[!(it instanceof BooleanElementImpl)] + partial.problem.elements;
67 }
68
69 override getStatistic() {
70 throw new UnsupportedOperationException("TODO: auto-generated method stub")
71 }
72
73 override getName() {
74 return name;
75 }
76
77} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.xtend
new file mode 100644
index 00000000..bed356e9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.xtend
@@ -0,0 +1,37 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io;
2
3import java.io.File
4import java.io.FileNotFoundException
5import java.io.PrintWriter
6import java.util.ArrayList
7import java.util.List
8
9class CsvFileWriter {
10 def static void write(ArrayList<ArrayList<String>> datas, String uri) {
11 if(datas.size() <= 0) {
12 return;
13 }
14
15 //println("Output csv for " + uri);
16 try {
17 val PrintWriter writer = new PrintWriter(new File(uri));
18 val output = new StringBuilder;
19 for(List<String> datarow : datas){
20 for(var i = 0; i < datarow.size() - 1; i++){
21 output.append(datarow.get(i) + ',');
22 }
23
24 if(datarow.size > 1){
25 output.append(datarow.get(datarow.size() - 1));
26 output.append('\n');
27 }
28 }
29
30 writer.write(output.toString());
31 writer.close();
32 //println("Output csv finished");
33 }catch(FileNotFoundException e) {
34 e.printStackTrace();
35 }
36 }
37}
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend
new file mode 100644
index 00000000..fc56e142
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend
@@ -0,0 +1,81 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io;
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric
6import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric
7import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric
8import java.io.File
9import java.io.FileNotFoundException
10import java.util.ArrayList
11import java.util.List
12import org.eclipse.emf.common.util.URI
13import org.eclipse.emf.ecore.EObject
14import org.eclipse.emf.ecore.EPackage
15import org.eclipse.emf.ecore.EReference
16import org.eclipse.emf.ecore.resource.Resource
17import org.eclipse.emf.ecore.resource.ResourceSet
18import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
19import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
20
21class GraphReader{
22 val ResourceSet resSet = new ResourceSetImpl();
23 val referenceTypes = new ArrayList<String>();
24
25 new(EPackage metaModel) {
26 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("*",new XMIResourceFactoryImpl)
27
28 //find all reference types in the meta model
29 metaModel.eAllContents.forEach[
30 if(it instanceof EReference){
31 referenceTypes.add(it.name);
32 }
33 ]
34 }
35
36 def List<EMFGraph> readModels(String path){
37 val dir = new File(path);
38 if(!dir.isDirectory){
39 throw new Exception("expecting a directory");
40 }
41
42 val graphs = new ArrayList<EMFGraph>();
43
44 val metrics = new ArrayList<Metric>();
45 metrics.add(new OutDegreeMetric());
46 metrics.add(new NodeActivityMetric());
47 metrics.add(new MultiplexParticipationCoefficientMetric());
48
49 //check all files in the directory with xmi
50 for(String name : dir.list.filter[it| it.endsWith(".xmi")]){
51 val file = new File(name);
52 val roots = readModel(EObject, path, file.name);
53 //add a list of metrics
54 val g = new EMFGraph();
55 for(root : roots){
56 g.init(root, metrics, name.replaceFirst(".xmi", ""), referenceTypes);
57 }
58
59 graphs.add(g);
60 }
61
62 return graphs;
63 }
64
65 def <RootType extends EObject> List<RootType> readModel(Class<RootType> type, String path, String name) {
66 try {
67 val resource = resSet.getResource(getURI(path, name),true);
68 if(resource === null) throw new FileNotFoundException(getURI(path, name).toString)
69 else {
70 return resource.contents as List<RootType>
71 }
72 } catch(Exception e) {
73 e.printStackTrace();
74 throw new FileNotFoundException(getURI(path, name).toString + "reason: " + e.message)
75 }
76 }
77
78 def static getURI(String path, String name) {
79 URI.createFileURI(path + "/" + name)
80 }
81} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend
new file mode 100644
index 00000000..867ddd1a
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend
@@ -0,0 +1,79 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric
6import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric
7import java.io.File
8import java.util.List
9import java.util.Scanner
10import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup
11
12/**
13 * Read the sample of the distribution of a metric provided the csv file of the metric
14 */
15class RepMetricsReader {
16 static def read(Domain d){
17 var domainRepPath = CsvDataName.REP_PATH + d.name + '/';
18 var rep = new MetricSampleGroup()
19 rep.mpcSamples = readFile(domainRepPath + CsvDataName.MPC_REP, MultiplexParticipationCoefficientMetric.valueName,
20 MultiplexParticipationCoefficientMetric.countName).map[Double.parseDouble(it)];
21 rep.naSamples = readFile(domainRepPath+CsvDataName.NA_REP, NodeActivityMetric.valueName, NodeActivityMetric.countName
22 ).map[Double.parseDouble(it)];
23 rep.outDegreeSamples = readFile(domainRepPath+CsvDataName.OUT_D_REP, OutDegreeMetric.valueName, OutDegreeMetric.countName
24 ).map[Double.parseDouble(it)];
25 return rep;
26 }
27
28 /**
29 * read metric data and parse it to samples
30 */
31 private static def List<String> readFile(String filename, String valueDataName, String countDataName){
32 var s = new Scanner(new File(filename));
33 val counts = newArrayList();
34 val values = newArrayList();
35 //read data from csv
36 while(s.hasNext()){
37 var data = s.nextLine().split(',');
38
39 if(data.size >= 1){
40 if(data.get(0).equals(countDataName)){
41 //add all data with parsing them as integers
42 counts.addAll(data.subList(1, data.size()).map[Integer.parseInt(it)]);
43 }else if(data.get(0).equals(valueDataName)){
44 //add all data without parsing (there can be either double or string, to be parsed later)
45 values.addAll(data.subList(1, data.size()));
46 }
47 }
48 }
49
50 return createSamples(counts, values);
51 }
52
53 // create samples from values and counts
54 private static def List<String> createSamples(List<Integer> counts, List<String> values){
55 val samples = newArrayList();
56
57 if(counts.size() != values.size()){
58 throw new RuntimeException("counts and values should have the same size!");
59 }
60
61 for(var i = 0; i < counts.size(); i++){
62 for(var j = 0; j < counts.get(i); j++){
63 samples.add(values.get(i));
64 }
65 }
66
67 return samples;
68 }
69
70
71}
72
73class CsvDataName{
74 public static val REP_PATH = 'data/';
75 public static val MPC_REP = 'mpc_rep.csv';
76 public static val NA_REP = 'na_rep.csv';
77 public static val OUT_D_REP = 'out_d_rep.csv';
78}
79
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.xtend
new file mode 100644
index 00000000..38ef72f2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.xtend
@@ -0,0 +1,8 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic
4
5abstract class Metric {
6 abstract def String[][] evaluate(GraphStatistic g);
7 abstract def double[] evaluateSamples(GraphStatistic g);
8} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.xtend
new file mode 100644
index 00000000..8cd3daee
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.xtend
@@ -0,0 +1,9 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics
2
3import java.util.List
4
5class MetricSampleGroup{
6 public var List<Double> mpcSamples;
7 public var List<Double> naSamples;
8 public var List<Double> outDegreeSamples;
9} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.xtend
new file mode 100644
index 00000000..d9c88bb4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.xtend
@@ -0,0 +1,80 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic
4import java.text.DecimalFormat
5import java.util.ArrayList
6import java.util.HashMap
7import org.eclipse.emf.ecore.EObject
8
9class MultiplexParticipationCoefficientMetric extends Metric {
10 public static val countName = "MPCCount";
11 public static val valueName = "MPCValue";
12
13
14 override evaluate(GraphStatistic g) {
15 //because the precision issue of double, we translate double values into String to be the key
16 val formatter = new DecimalFormat("#0.00000");
17
18 //get number of different types
19 val typeCounts = g.allTypes.size;
20 val map = new HashMap<String, Integer>();
21 //calculate the metric distribution
22 g.allNodes.forEach[n|
23 var coef = calculateMPC(n, g, typeCounts);
24
25 //format number to String
26 val value = formatter.format(coef);
27 if(!map.containsKey(value)){
28 map.put(value, 1);
29 }else{
30 map.put(value, map.get(value) + 1);
31 }
32
33 ]
34
35 //convert it into a 2 dimentional array
36 val String[][] datas = newArrayOfSize(2, map.size+1);
37 datas.get(0).set(0, valueName);
38 datas.get(1).set(0, countName)
39 var count = 1;
40 for(entry : map.entrySet.sortBy[it.key]){
41 datas.get(0).set(count, entry.key+"");
42 datas.get(1).set(count, entry.value+"");
43 count++;
44 }
45
46 return datas;
47 }
48
49 override evaluateSamples(GraphStatistic g){
50 val samples = new ArrayList<Double>();
51 val typeCounts = g.allTypes.size;
52 //calculate the metric distribution
53 g.allNodes.forEach[
54 samples.add(calculateMPC(it, g, typeCounts));
55 ]
56
57 return samples;
58 }
59
60 def double calculateMPC(EObject n, GraphStatistic g, int typeCounts){
61 val edgeCounts = g.outDegree(n) + g.inDegree(n);
62
63 var coef = 0.0;
64
65 for(type : g.allTypes){
66 val degree = g.dimentionalDegree(n, type) as double;
67 coef += Math.pow(degree / edgeCounts, 2);
68 }
69 coef = 1 - coef;
70 coef = coef * typeCounts / (typeCounts-1);
71
72 //Consider the case that either typeCounts-1 or the edgeCounts could be 0 in some situation
73 //in this case the metric should be evaluated to 0
74 if(Double.isNaN(coef)){
75 coef = 0;
76 }
77
78 return coef;
79 }
80} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.xtend
new file mode 100644
index 00000000..fbf06c47
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.xtend
@@ -0,0 +1,49 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic
4import java.util.ArrayList
5import java.util.HashMap
6
7class NodeActivityMetric extends Metric {
8 public static val countName = "NACount";
9 public static val valueName = "NAValue";
10
11 override evaluate(GraphStatistic g) {
12 val map = new HashMap<Integer, Integer>();
13
14 //calculate the metric distribution
15 g.allNodes.forEach[
16 val value = g.numOfEdgeTypes(it);
17 if(!map.containsKey(value)){
18 map.put(value, 1);
19 }else{
20 map.put(value, map.get(value) + 1);
21 }
22 ]
23
24 //convert it into a 2 dimentional array
25 val String[][] datas = newArrayOfSize(2, map.size+1);
26 datas.get(0).set(0, valueName);
27 datas.get(1).set(0, countName)
28
29 var count = 1;
30 for(entry : map.entrySet.sortBy[it.key]){
31 datas.get(0).set(count, entry.key+"");
32 datas.get(1).set(count, entry.value+"");
33 count++;
34 }
35
36 return datas;
37 }
38
39 override evaluateSamples(GraphStatistic g){
40 val samples = new ArrayList<Double>();
41
42 //calculate the metric distribution
43 g.allNodes.forEach[
44 samples.add(g.numOfEdgeTypes(it) as double);
45 ]
46
47 return samples;
48 }
49} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.xtend
new file mode 100644
index 00000000..55046b14
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.xtend
@@ -0,0 +1,49 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic
4import java.util.ArrayList
5import java.util.HashMap
6
7class OutDegreeMetric extends Metric {
8 public static val countName = "OutDegreeCount";
9 public static val valueName = "OutDegreeValue";
10
11 override evaluate(GraphStatistic g) {
12 val map = new HashMap<Integer, Integer>();
13
14 //calculate the metric distribution
15 g.allNodes.forEach[
16 val value = g.outDegree(it);
17 if(!map.containsKey(value)){
18 map.put(value, 1);
19 }else{
20 map.put(value, map.get(value) + 1);
21 }
22 ]
23
24 //convert it into a 2 dimentional array
25 val String[][] datas = newArrayOfSize(2, map.size+1);
26 datas.get(0).set(0, valueName);
27 datas.get(1).set(0, countName)
28 var count = 1;
29 for(entry : map.entrySet.sortBy[it.key]){
30 datas.get(0).set(count, entry.key+"");
31 datas.get(1).set(count, entry.value+"");
32 count++;
33 }
34
35 return datas;
36 }
37
38 override evaluateSamples(GraphStatistic g){
39 val samples = new ArrayList<Double>();
40
41 //calculate the metric distribution
42 g.allNodes.forEach[
43 samples.add(g.outDegree(it) as double);
44 ]
45
46 return samples;
47 }
48
49} \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/metrics_plot/.gitignore b/Metrics/Metrics-Calculation/metrics_plot/.gitignore
new file mode 100644
index 00000000..dc53b109
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/.gitignore
@@ -0,0 +1,10 @@
1# virtual enviroment
2venv/
3
4# python cache
5*.pyc
6.ipynb_checkpoints/
7.idea/
8
9# keep folders
10!.gitignore \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/input/.gitignore b/Metrics/Metrics-Calculation/metrics_plot/model comparison/input/.gitignore
new file mode 100644
index 00000000..b3934b01
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/input/.gitignore
@@ -0,0 +1,3 @@
1# ignore everything in this folder
2*
3!.gitignore \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/MPC.png
new file mode 100644
index 00000000..cd2af5ce
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/MPC.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Node Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Node Activity.png
new file mode 100644
index 00000000..2ce3672b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Node Activity.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Out Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Out Degree.png
new file mode 100644
index 00000000..d4d9afe1
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Alloy (30 nodes)-/Out Degree.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/MPC.png
new file mode 100644
index 00000000..8d76fed9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/MPC.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Node Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Node Activity.png
new file mode 100644
index 00000000..daa7929a
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Node Activity.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Out Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Out Degree.png
new file mode 100644
index 00000000..e56b1b6e
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-/Out Degree.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/MPC.png
new file mode 100644
index 00000000..8705cee2
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/MPC.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Node Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Node Activity.png
new file mode 100644
index 00000000..bdab3741
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Node Activity.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Out Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Out Degree.png
new file mode 100644
index 00000000..e4269f6e
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Random-Viatra (100 nodes)-/Out Degree.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/MPC.png
new file mode 100644
index 00000000..e4b6b527
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/MPC.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Node Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Node Activity.png
new file mode 100644
index 00000000..e067ad66
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Node Activity.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Out Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Out Degree.png
new file mode 100644
index 00000000..9b89e4f9
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/Human-Viatra (30 nodes)-Viatra (60 nodes)-Viatra (100 nodes)-/Out Degree.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/MPC.png
new file mode 100644
index 00000000..4f189578
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/MPC.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Node Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Node Activity.png
new file mode 100644
index 00000000..add3c0f8
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Node Activity.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Out Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Out Degree.png
new file mode 100644
index 00000000..f4717a1a
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/real vs viatra vs alloy/Out Degree.png
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py b/Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py
new file mode 100644
index 00000000..2f39ca93
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py
@@ -0,0 +1,98 @@
1import os, sys
2lib_path = os.path.abspath(os.path.join('..', '..', 'utils'))
3sys.path.append(lib_path)
4import glob
5import random
6from sklearn.manifold import MDS
7import matplotlib.pyplot as plt
8from scipy import stats
9import numpy as np
10from GraphType import GraphCollection
11
12def main():
13 # read models
14 human = GraphCollection('../input/humanOutput/', 500, 'Human')
15 viatra30 = GraphCollection('../input/viatraOutput30/', 500, 'Viatra (30 nodes)')
16 # viatra60 = GraphCollection('../input/viatraOutput60/', 500, 'Viatra (60 nodes)')
17 # viatra100 = GraphCollection('../input/viatraOutput100/', 500, 'Viatra (100 nodes)')
18 # random = GraphCollection('../input/randomOutput/', 500, 'Random')
19 # alloy = GraphCollection('../input/alloyOutput/', 500, 'Alloy (30 nodes)')
20
21 models_to_compare = [human, viatra30]
22
23 # define output folder
24 outputFolder = '../output/'
25
26 #calculate metrics
27 metricStat(models_to_compare, 'Node Activity', nodeActivity, 0, outputFolder)
28 metricStat(models_to_compare, 'Out Degree', outDegree, 1, outputFolder)
29 metricStat(models_to_compare, 'MPC', mpc, 2, outputFolder)
30
31def calculateKSMatrix(dists):
32 dist = []
33
34 for i in range(len(dists)):
35 dist = dist + dists[i]
36 matrix = np.empty((len(dist),len(dist)))
37
38 for i in range(len(dist)):
39 matrix[i,i] = 0
40 for j in range(i+1, len(dist)):
41 value, p = stats.ks_2samp(dist[i], dist[j])
42 matrix[i, j] = value
43 matrix[j, i] = value
44 return matrix
45
46
47def calculateMDS(dissimilarities):
48 embedding = MDS(n_components=2, dissimilarity='precomputed')
49 trans = embedding.fit_transform(X=dissimilarities)
50 return trans
51
52def plot(graphTypes, coords, title='',index = 0, savePath = ''):
53 half_length = int(coords.shape[0] / len(graphTypes))
54 color = ['blue', 'red', 'green', 'yellow']
55 plt.figure(index, figsize=(7, 4))
56 plt.title(title)
57 for i in range(len(graphTypes)):
58 x = (coords[(i*half_length):((i+1)*half_length), 0].tolist())
59 y = (coords[(i*half_length):((i+1)*half_length), 1].tolist())
60 plt.plot(x, y, color=color[i], marker='o', label = graphTypes[i].name, linestyle='', alpha=0.7)
61 plt.legend(loc='upper right')
62 plt.savefig(fname = savePath, dpi=150)
63 #graph.show()
64
65def mkdir_p(mypath):
66 '''Creates a directory. equivalent to using mkdir -p on the command line'''
67
68 from errno import EEXIST
69 from os import makedirs,path
70
71 try:
72 makedirs(mypath)
73 except OSError as exc: # Python >2.5
74 if exc.errno == EEXIST and path.isdir(mypath):
75 pass
76 else: raise
77
78def metricStat(graphTypes, metricName, metric, graphIndex, outputFolder):
79 metrics = []
80 for graph in graphTypes:
81 metrics.append(metric(graph))
82 outputFolder = outputFolder + graph.name + '-'
83 print('calculate' + metricName +' for ' + outputFolder)
84 mkdir_p(outputFolder)
85 out_d_coords = calculateMDS(calculateKSMatrix(metrics))
86 plot(graphTypes, out_d_coords, metricName, graphIndex,outputFolder + '/'+ metricName+'.png')
87
88def nodeActivity(graphType):
89 return graphType.nas
90
91def outDegree(graphType):
92 return graphType.out_ds
93
94def mpc(graphType):
95 return graphType.mpcs
96
97if __name__ == '__main__':
98 main() \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore
new file mode 100644
index 00000000..b3934b01
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/input/.gitignore
@@ -0,0 +1,3 @@
1# ignore everything in this folder
2*
3!.gitignore \ No newline at end of file
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpg
new file mode 100644
index 00000000..d2dbd970
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpg
new file mode 100644
index 00000000..3ca2e0bc
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpg
new file mode 100644
index 00000000..5b623374
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/controled_viatra_with_mpc/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpg
new file mode 100644
index 00000000..7a744ea6
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpg
new file mode 100644
index 00000000..dfcc973e
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/node activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpg
new file mode 100644
index 00000000..b3f4f912
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf/out degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpg
new file mode 100644
index 00000000..f0d09211
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/Node Activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpg
new file mode 100644
index 00000000..94b070d4
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/mpc.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpg
new file mode 100644
index 00000000..8d0151fa
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/random_emf_instantiator/out_degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpg
new file mode 100644
index 00000000..b10d97e6
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/MPC.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpg
new file mode 100644
index 00000000..e41c998b
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/node activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpg
new file mode 100644
index 00000000..d2776bc8
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_constraints/out degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpg
new file mode 100644
index 00000000..19feb5e8
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/MPC.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpg
new file mode 100644
index 00000000..bc7a83fc
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/node activity.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpg b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpg
new file mode 100644
index 00000000..13094840
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/output/viatra_no_constraints/out degree.jpg
Binary files differ
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb
new file mode 100644
index 00000000..550e3978
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance.ipynb
@@ -0,0 +1,481 @@
1{
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Compare Metrics Distances to The Human Models"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "### Imports"
15 ]
16 },
17 {
18 "cell_type": "code",
19 "execution_count": 48,
20 "metadata": {},
21 "outputs": [],
22 "source": [
23 "from GraphType import GraphStat\n",
24 "from GraphType import GraphCollection\n",
25 "from scipy import stats\n",
26 "from ipywidgets import interact, fixed, interactive\n",
27 "import readCSV as reader\n",
28 "import ipywidgets as widgets\n",
29 "import matplotlib.pyplot as plt\n",
30 "import random\n",
31 "import numpy as np\n",
32 "import constants\n"
33 ]
34 },
35 {
36 "cell_type": "markdown",
37 "metadata": {},
38 "source": [
39 "### Classes"
40 ]
41 },
42 {
43 "cell_type": "markdown",
44 "metadata": {},
45 "source": [
46 "* Record the average distances of different metrics for a model to the human models "
47 ]
48 },
49 {
50 "cell_type": "code",
51 "execution_count": 49,
52 "metadata": {},
53 "outputs": [],
54 "source": [
55 "class GraphDistance:\n",
56 " #init with a graph stat and a collection of graph stats\n",
57 " def __init__(self, graphStat, collection):\n",
58 " self.graph = graphStat\n",
59 " self.collection = collection\n",
60 " self.out_d_distance = average_ks_distance(collection.out_ds, graphStat.out_d)\n",
61 " self.na_distance = average_ks_distance(collection.nas, graphStat.na)\n",
62 " self.mpc_distance = average_ks_distance(collection.mpcs, graphStat.mpc)"
63 ]
64 },
65 {
66 "cell_type": "markdown",
67 "metadata": {},
68 "source": [
69 "### Methods"
70 ]
71 },
72 {
73 "cell_type": "markdown",
74 "metadata": {},
75 "source": [
76 "* Calculate the average ks distance"
77 ]
78 },
79 {
80 "cell_type": "code",
81 "execution_count": 50,
82 "metadata": {},
83 "outputs": [],
84 "source": [
85 "def average_ks_distance(targets, sample):\n",
86 " distance = 0.0\n",
87 " for target in targets:\n",
88 " value, p = stats.ks_2samp(target, sample)\n",
89 " distance += value\n",
90 " distance = distance / len(targets)\n",
91 " return distance\n"
92 ]
93 },
94 {
95 "cell_type": "markdown",
96 "metadata": {
97 "pycharm": {
98 "name": "#%% md\n"
99 }
100 },
101 "source": [
102 "* Find the median ks distance of the same number of nodes"
103 ]
104 },
105 {
106 "cell_type": "code",
107 "execution_count": 51,
108 "metadata": {
109 "pycharm": {
110 "name": "#%%\n"
111 }
112 },
113 "outputs": [],
114 "source": [
115 "def find_median(x, metric_distances):\n",
116 " distance_dic = {}\n",
117 " for index, num_of_nodes in enumerate(x):\n",
118 " if num_of_nodes[0] not in distance_dic:\n",
119 " distance_dic[num_of_nodes[0]] = []\n",
120 " distance_dic[num_of_nodes[0]].append(metric_distances[index])\n",
121 " median_x = []\n",
122 " y = []\n",
123 " for num_of_nodes, distances in distance_dic.items():\n",
124 " median_x.append(num_of_nodes)\n",
125 " y.append(np.median(distances))\n",
126 " order = np.argsort(median_x)\n",
127 " median_x = np.array(median_x)[order]\n",
128 " median_y = np.array(y)[order]\n",
129 " return median_x, median_y\n"
130 ]
131 },
132 {
133 "cell_type": "markdown",
134 "metadata": {},
135 "source": [
136 "* Plot Diagram"
137 ]
138 },
139 {
140 "cell_type": "code",
141 "execution_count": 52,
142 "metadata": {},
143 "outputs": [],
144 "source": [
145 "# metric_selector: GraphDistance -> float\n",
146 "def plot(infos, lines, id, metric_selector,colors, title):\n",
147 " metric_distances = retrive_info_from_list(metric_selector, list(infos.values()))\n",
148 " x = retrive_info_from_list(lambda a : a.graph.num_nodes, list(infos.values()))\n",
149 " graph = plt.figure(id,figsize=(18, 10))\n",
150 " plt.title(title)\n",
151 " plt.plot(x, metric_distances, color='red', linestyle='', marker='o',alpha=0.7)\n",
152 " #plot ks distance median\n",
153 " median_x, median_y = find_median(x, metric_distances)\n",
154 " plt.plot(median_x, median_y, color='black',marker='o')\n",
155 " for i in range(0, len(lines)):\n",
156 " line_infos = retrive_info_from_list(lambda a: infos[a], lines[i])\n",
157 " line_y = retrive_info_from_list(metric_selector, line_infos)\n",
158 " line_x = retrive_info_from_list(lambda a : a.graph.num_nodes, line_infos)\n",
159 " plt.plot(line_x, line_y, marker='o', color=colors[i])\n",
160 " #graph.show()"
161 ]
162 },
163 {
164 "cell_type": "markdown",
165 "metadata": {},
166 "source": [
167 "* Retrieve information from a list "
168 ]
169 },
170 {
171 "cell_type": "code",
172 "execution_count": 53,
173 "metadata": {},
174 "outputs": [],
175 "source": [
176 "def retrive_info_from_list(selector, distances):\n",
177 " return list(map(selector, distances))"
178 ]
179 },
180 {
181 "cell_type": "markdown",
182 "metadata": {},
183 "source": [
184 "### Read Models"
185 ]
186 },
187 {
188 "cell_type": "code",
189 "execution_count": 54,
190 "metadata": {},
191 "outputs": [],
192 "source": [
193 "human = GraphCollection('../statistics/humanOutput/', 300, 'Human', True)\n",
194 "file_names = reader.readmultiplefiles('../statistics/viatraEvolve/', 1000, False)"
195 ]
196 },
197 {
198 "cell_type": "markdown",
199 "metadata": {},
200 "source": [
201 "### Calculate Distances"
202 ]
203 },
204 {
205 "cell_type": "code",
206 "execution_count": 55,
207 "metadata": {},
208 "outputs": [],
209 "source": [
210 "# Progress Widge\n",
211 "w2 = widgets.FloatProgress(\n",
212 " value=0,\n",
213 " min=0,\n",
214 " max=1.0,\n",
215 " step=0.1,\n",
216 " description='Loading Files...:',\n",
217 " bar_style='info',\n",
218 " orientation='horizontal'\n",
219 ")"
220 ]
221 },
222 {
223 "cell_type": "code",
224 "execution_count": 56,
225 "metadata": {},
226 "outputs": [
227 {
228 "data": {
229 "application/vnd.jupyter.widget-view+json": {
230 "model_id": "ca7932bce2a741afaff6b919042c42b0",
231 "version_major": 2,
232 "version_minor": 0
233 },
234 "text/plain": [
235 "FloatProgress(value=0.0, bar_style='info', description='Loading Files...:', max=1.0)"
236 ]
237 },
238 "metadata": {},
239 "output_type": "display_data"
240 }
241 ],
242 "source": [
243 "infos = []\n",
244 "# read all files\n",
245 "counter = 0.0\n",
246 "size = len(file_names)\n",
247 "#display progress bar\n",
248 "display(w2)\n",
249 "for name in file_names:\n",
250 " infos.append(GraphStat(name))\n",
251 "\n",
252 "info_dic = {}\n",
253 "for info in infos:\n",
254 " w2.value = (counter/size)\n",
255 " counter+=1\n",
256 " info = GraphDistance(info, human)\n",
257 " info_dic[info.graph.id] = info"
258 ]
259 },
260 {
261 "cell_type": "markdown",
262 "metadata": {},
263 "source": [
264 "#### Plot Graphs"
265 ]
266 },
267 {
268 "cell_type": "markdown",
269 "metadata": {},
270 "source": [
271 "* widget for select trajectory"
272 ]
273 },
274 {
275 "cell_type": "code",
276 "execution_count": 57,
277 "metadata": {},
278 "outputs": [],
279 "source": [
280 "filenames = reader.readmultiplefiles('../statistics/trajectories/', 10, False)\n",
281 "trajectories = {}\n",
282 "for name in filenames:\n",
283 " trajectories[name] = reader.readTrajectory(name)\n",
284 "\n",
285 "w = widgets.SelectMultiple(\n",
286 " options = trajectories,\n",
287 " value = [trajectories[filenames[0]]],\n",
288 " description='Trajectory:',\n",
289 " disabled=False,\n",
290 ")\n",
291 "\n",
292 "#generate random color for each line\n",
293 "colors = []\n",
294 "\n",
295 "for i in range(0, len(trajectories)):\n",
296 " color = \"#%06x\" % random.randint(0, 0xFFFFFF)\n",
297 " colors.append(color)"
298 ]
299 },
300 {
301 "cell_type": "markdown",
302 "metadata": {},
303 "source": [
304 "#### Out Degree"
305 ]
306 },
307 {
308 "cell_type": "code",
309 "execution_count": 63,
310 "metadata": {},
311 "outputs": [
312 {
313 "data": {
314 "application/vnd.jupyter.widget-view+json": {
315 "model_id": "08da62cb0c3f4e6e9591c7dc811d27cc",
316 "version_major": 2,
317 "version_minor": 0
318 },
319 "text/plain": [
320 "interactive(children=(SelectMultiple(description='Trajectory:', index=(1,), options={'../statistics/trajectori…"
321 ]
322 },
323 "metadata": {},
324 "output_type": "display_data"
325 },
326 {
327 "data": {
328 "text/plain": [
329 "<function __main__.plot_out_degree(lines)>"
330 ]
331 },
332 "execution_count": 63,
333 "metadata": {},
334 "output_type": "execute_result"
335 }
336 ],
337 "source": [
338 "def plot_out_degree(lines):\n",
339 " plot(info_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree')\n",
340 "interact(plot_out_degree, lines=w)"
341 ]
342 },
343 {
344 "cell_type": "markdown",
345 "metadata": {},
346 "source": [
347 "#### Node Activity"
348 ]
349 },
350 {
351 "cell_type": "code",
352 "execution_count": 64,
353 "metadata": {
354 "scrolled": true
355 },
356 "outputs": [
357 {
358 "data": {
359 "application/vnd.jupyter.widget-view+json": {
360 "model_id": "a708f43645a24bd2b15b53ea12c7d88f",
361 "version_major": 2,
362 "version_minor": 0
363 },
364 "text/plain": [
365 "interactive(children=(SelectMultiple(description='Trajectory:', index=(1,), options={'../statistics/trajectori…"
366 ]
367 },
368 "metadata": {},
369 "output_type": "display_data"
370 },
371 {
372 "data": {
373 "text/plain": [
374 "<function __main__.plot_na(lines)>"
375 ]
376 },
377 "execution_count": 64,
378 "metadata": {},
379 "output_type": "execute_result"
380 }
381 ],
382 "source": [
383 "def plot_na(lines):\n",
384 " plot(info_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity')\n",
385 "interact(plot_na, lines=w)"
386 ]
387 },
388 {
389 "cell_type": "markdown",
390 "metadata": {},
391 "source": [
392 "#### MPC"
393 ]
394 },
395 {
396 "cell_type": "code",
397 "execution_count": null,
398 "metadata": {},
399 "outputs": [],
400 "source": []
401 },
402 {
403 "cell_type": "code",
404 "execution_count": 65,
405 "metadata": {},
406 "outputs": [
407 {
408 "data": {
409 "application/vnd.jupyter.widget-view+json": {
410 "model_id": "124a0cb0ebfb4225bf4ced24c09032f7",
411 "version_major": 2,
412 "version_minor": 0
413 },
414 "text/plain": [
415 "interactive(children=(SelectMultiple(description='Trajectory:', index=(1,), options={'../statistics/trajectori…"
416 ]
417 },
418 "metadata": {},
419 "output_type": "display_data"
420 },
421 {
422 "data": {
423 "text/plain": [
424 "<function __main__.plot_out_degree(lines)>"
425 ]
426 },
427 "execution_count": 65,
428 "metadata": {},
429 "output_type": "execute_result"
430 }
431 ],
432 "source": [
433 "def plot_out_degree(lines):\n",
434 " plot(info_dic, lines, 0, lambda a: a.mpc_distance, colors, 'MPC')\n",
435 "interact(plot_out_degree, lines=w)"
436 ]
437 },
438 {
439 "cell_type": "code",
440 "execution_count": 19,
441 "metadata": {},
442 "outputs": [],
443 "source": [
444 "for name in file_names:\n",
445 " contents = reader.readcsvfile(name)\n",
446 " if(contents['State Id'][0] == 1032396643):\n",
447 " print(name)"
448 ]
449 }
450 ],
451 "metadata": {
452 "kernelspec": {
453 "display_name": "Python 3",
454 "language": "python",
455 "name": "python3"
456 },
457 "language_info": {
458 "codemirror_mode": {
459 "name": "ipython",
460 "version": 3
461 },
462 "file_extension": ".py",
463 "mimetype": "text/x-python",
464 "name": "python",
465 "nbconvert_exporter": "python",
466 "pygments_lexer": "ipython3",
467 "version": "3.7.3"
468 },
469 "pycharm": {
470 "stem_cell": {
471 "cell_type": "raw",
472 "metadata": {
473 "collapsed": false
474 },
475 "source": []
476 }
477 }
478 },
479 "nbformat": 4,
480 "nbformat_minor": 2
481}
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb
new file mode 100644
index 00000000..4c7fecb3
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/metrics_distance_with_selector.ipynb
@@ -0,0 +1,955 @@
1{
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Measuremments with Representative"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "### Imports"
15 ]
16 },
17 {
18 "cell_type": "code",
19 "execution_count": 2,
20 "metadata": {},
21 "outputs": [],
22 "source": [
23 "import os, sys\n",
24 "lib_path = os.path.abspath(os.path.join('..', '..', 'utils'))\n",
25 "sys.path.append(lib_path)\n",
26 "from GraphType import GraphStat\n",
27 "from GraphType import GraphCollection\n",
28 "from scipy import stats\n",
29 "from ipywidgets import interact, fixed, interactive\n",
30 "import readCSV as reader\n",
31 "import ipywidgets as widgets\n",
32 "import matplotlib.pyplot as plt\n",
33 "import random\n",
34 "import numpy as np\n",
35 "import constants\n"
36 ]
37 },
38 {
39 "cell_type": "markdown",
40 "metadata": {},
41 "source": [
42 "### Classes"
43 ]
44 },
45 {
46 "cell_type": "markdown",
47 "metadata": {},
48 "source": [
49 "* Record the distances of different metrics using a representative"
50 ]
51 },
52 {
53 "cell_type": "code",
54 "execution_count": 3,
55 "metadata": {},
56 "outputs": [],
57 "source": [
58 "class GraphDistanceWithRep:\n",
59 " #init with a graph stat and a collection of graph stats\n",
60 " def __init__(self, graphStat, rep):\n",
61 " self.graph = graphStat\n",
62 " self.rep = rep\n",
63 " self.out_d_distance, _ = stats.ks_2samp(graphStat.out_d, rep.out_d)\n",
64 " self.na_distance,_ = stats.ks_2samp(graphStat.na, rep.na)\n",
65 " self.mpc_distance,_ = stats.ks_2samp(graphStat.mpc, rep.mpc)\n"
66 ]
67 },
68 {
69 "cell_type": "markdown",
70 "metadata": {},
71 "source": [
72 "### Methods\n"
73 ]
74 },
75 {
76 "cell_type": "markdown",
77 "metadata": {},
78 "source": [
79 "* Find the median ks distance of the same number of nodes"
80 ]
81 },
82 {
83 "cell_type": "code",
84 "execution_count": 4,
85 "metadata": {},
86 "outputs": [],
87 "source": [
88 "def find_median(x, metric_distances):\n",
89 " distance_dic = {}\n",
90 " for index, num_of_nodes in enumerate(x):\n",
91 " if num_of_nodes[0] not in distance_dic:\n",
92 " distance_dic[num_of_nodes[0]] = []\n",
93 " distance_dic[num_of_nodes[0]].append(metric_distances[index])\n",
94 " median_x = []\n",
95 " y = []\n",
96 " for num_of_nodes, distances in distance_dic.items():\n",
97 " median_x.append(num_of_nodes)\n",
98 " y.append(np.median(distances))\n",
99 " order = np.argsort(median_x)\n",
100 " median_x = np.array(median_x)[order]\n",
101 " median_y = np.array(y)[order]\n",
102 " return median_x, median_y\n"
103 ]
104 },
105 {
106 "cell_type": "markdown",
107 "metadata": {},
108 "source": [
109 "* Plot Diagram"
110 ]
111 },
112 {
113 "cell_type": "code",
114 "execution_count": 38,
115 "metadata": {},
116 "outputs": [],
117 "source": [
118 "# metric_selector: GraphDistance -> float\n",
119 "def plot(infos, lines, id, metric_selector,colors, title, foldername):\n",
120 " metric_distances = retrive_info_from_list(metric_selector, list(infos.values()))\n",
121 " x = retrive_info_from_list(lambda a : a.graph.num_nodes, list(infos.values()))\n",
122 " graph = plt.figure(id,figsize=(18, 10))\n",
123 " plt.title(title)\n",
124 " plt.plot(x, metric_distances, color='red', linestyle='', marker='o',alpha=0.7)\n",
125 " #plot ks distance median\n",
126 " median_x, median_y = find_median(x, metric_distances)\n",
127 " plt.plot(median_x, median_y, color='black',marker='o')\n",
128 " for i in range(0, len(lines)):\n",
129 " line_infos = retrive_info_from_list(lambda a: infos[a], lines[i])\n",
130 " line_y = retrive_info_from_list(metric_selector, line_infos)\n",
131 " line_x = retrive_info_from_list(lambda a : a.graph.num_nodes, line_infos)\n",
132 " plt.plot(line_x, line_y, marker='o', color=colors[i])\n",
133 " mkdir_p(foldername)\n",
134 " plt.savefig(fname = foldername+title+'.jpg', dpi=150)\n",
135 " #graph.show()"
136 ]
137 },
138 {
139 "cell_type": "markdown",
140 "metadata": {},
141 "source": [
142 "* Retrieve information from a list "
143 ]
144 },
145 {
146 "cell_type": "code",
147 "execution_count": 6,
148 "metadata": {},
149 "outputs": [],
150 "source": [
151 "def retrive_info_from_list(selector, distances):\n",
152 " return list(map(selector, distances))"
153 ]
154 },
155 {
156 "cell_type": "code",
157 "execution_count": 7,
158 "metadata": {},
159 "outputs": [],
160 "source": [
161 "def readStats(path, numModels):\n",
162 " names = reader.readmultiplefiles(path, numModels, False)\n",
163 " stats = []\n",
164 " for name in names:\n",
165 " stats.append(GraphStat(name))\n",
166 " return stats"
167 ]
168 },
169 {
170 "cell_type": "code",
171 "execution_count": 8,
172 "metadata": {},
173 "outputs": [],
174 "source": [
175 "def calDistanceDic(stats, rep):\n",
176 " dic = {}\n",
177 " for info in stats:\n",
178 " info = GraphDistanceWithRep(info, rep)\n",
179 " dic[info.graph.id] = info\n",
180 " return dic"
181 ]
182 },
183 {
184 "cell_type": "code",
185 "execution_count": 25,
186 "metadata": {},
187 "outputs": [],
188 "source": [
189 "def createRandomColors(size):\n",
190 " #generate random color for each line\n",
191 " colors = []\n",
192 "\n",
193 " for i in range(0, size):\n",
194 " color = \"#%06x\" % random.randint(0, 0xFFFFFF)\n",
195 " colors.append(color)\n",
196 " return colors"
197 ]
198 },
199 {
200 "cell_type": "code",
201 "execution_count": 43,
202 "metadata": {},
203 "outputs": [],
204 "source": [
205 "def createSelectionWidge(options):\n",
206 " w = widgets.SelectMultiple(\n",
207 " options = options,\n",
208 " value = [],\n",
209 " description='Trajectory:',\n",
210 " disabled=False,\n",
211 " )\n",
212 " return w"
213 ]
214 },
215 {
216 "cell_type": "code",
217 "execution_count": 33,
218 "metadata": {},
219 "outputs": [],
220 "source": [
221 "def mkdir_p(mypath):\n",
222 " '''Creates a directory. equivalent to using mkdir -p on the command line'''\n",
223 "\n",
224 " from errno import EEXIST\n",
225 " from os import makedirs,path\n",
226 "\n",
227 " try:\n",
228 " makedirs(mypath)\n",
229 " except OSError as exc: # Python >2.5\n",
230 " if exc.errno == EEXIST and path.isdir(mypath):\n",
231 " pass\n",
232 " else: raise"
233 ]
234 },
235 {
236 "cell_type": "markdown",
237 "metadata": {},
238 "source": [
239 "## Metrics During GenerationPlots"
240 ]
241 },
242 {
243 "cell_type": "markdown",
244 "metadata": {},
245 "source": [
246 "### Read Human Representatives"
247 ]
248 },
249 {
250 "cell_type": "code",
251 "execution_count": 42,
252 "metadata": {},
253 "outputs": [],
254 "source": [
255 "### Read Models\n",
256 "#read representative\n",
257 "human_rep = GraphStat(constants.HUMAN_OUT_D_REP)\n",
258 "human_na = GraphStat(constants.HUMAN_NA_REP)\n",
259 "human_mpc = GraphStat(constants.HUMAN_MPC_REP)\n",
260 "\n",
261 "# assign rep distributions to human_rep\n",
262 "human_rep.na = human_na.na\n",
263 "human_rep.mpc = human_mpc.mpc"
264 ]
265 },
266 {
267 "cell_type": "markdown",
268 "metadata": {},
269 "source": [
270 "## Viatra No Constraint"
271 ]
272 },
273 {
274 "cell_type": "code",
275 "execution_count": 15,
276 "metadata": {},
277 "outputs": [],
278 "source": [
279 "# Read generated models\n",
280 "viatra_no_con_stats = readStats('../input/viatra_nocon_output/', 5000)\n",
281 "viatra_no_con_dic = calDistanceDic(viatra_no_con_stats, human_rep)"
282 ]
283 },
284 {
285 "cell_type": "code",
286 "execution_count": 46,
287 "metadata": {},
288 "outputs": [],
289 "source": [
290 "filenames = reader.readmultiplefiles('../input/viatra_nocon_output/trajectories/', 15, False)\n",
291 "trajectories = {}\n",
292 "for name in filenames:\n",
293 " trajectories[name] = reader.readTrajectory(name)\n",
294 "w = createSelectionWidge(trajectories)\n",
295 "colors = createRandomColors(len(trajectories))"
296 ]
297 },
298 {
299 "cell_type": "code",
300 "execution_count": 77,
301 "metadata": {},
302 "outputs": [
303 {
304 "data": {
305 "application/vnd.jupyter.widget-view+json": {
306 "model_id": "9519be563fbc41c28921c77ef6481b17",
307 "version_major": 2,
308 "version_minor": 0
309 },
310 "text/plain": [
311 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
312 ]
313 },
314 "metadata": {},
315 "output_type": "display_data"
316 },
317 {
318 "data": {
319 "text/plain": [
320 "<function __main__.plot_out_degree(lines)>"
321 ]
322 },
323 "execution_count": 77,
324 "metadata": {},
325 "output_type": "execute_result"
326 }
327 ],
328 "source": [
329 "def plot_out_degree(lines):\n",
330 " plot(viatra_no_con_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree', '../output/viatra_no_constraints/')\n",
331 "interact(plot_out_degree, lines=w)"
332 ]
333 },
334 {
335 "cell_type": "code",
336 "execution_count": 78,
337 "metadata": {},
338 "outputs": [
339 {
340 "data": {
341 "application/vnd.jupyter.widget-view+json": {
342 "model_id": "c896725e542c4bf8a1bc76ba66819b20",
343 "version_major": 2,
344 "version_minor": 0
345 },
346 "text/plain": [
347 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
348 ]
349 },
350 "metadata": {},
351 "output_type": "display_data"
352 },
353 {
354 "data": {
355 "text/plain": [
356 "<function __main__.plot_out_na(lines)>"
357 ]
358 },
359 "execution_count": 78,
360 "metadata": {},
361 "output_type": "execute_result"
362 }
363 ],
364 "source": [
365 "def plot_out_na(lines):\n",
366 " plot(viatra_no_con_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity', '../output/viatra_no_constraints/')\n",
367 "interact(plot_out_na, lines=w)"
368 ]
369 },
370 {
371 "cell_type": "code",
372 "execution_count": 79,
373 "metadata": {},
374 "outputs": [
375 {
376 "data": {
377 "application/vnd.jupyter.widget-view+json": {
378 "model_id": "880410d675624545ab73977a463bb5c9",
379 "version_major": 2,
380 "version_minor": 0
381 },
382 "text/plain": [
383 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
384 ]
385 },
386 "metadata": {},
387 "output_type": "display_data"
388 },
389 {
390 "data": {
391 "text/plain": [
392 "<function __main__.plot_out_mpc(lines)>"
393 ]
394 },
395 "execution_count": 79,
396 "metadata": {},
397 "output_type": "execute_result"
398 }
399 ],
400 "source": [
401 "def plot_out_mpc(lines):\n",
402 " plot(viatra_no_con_dic, lines, 0, lambda a: a.mpc_distance, colors, 'MPC', '../output/viatra_no_constraints/')\n",
403 "interact(plot_out_mpc, lines=w)"
404 ]
405 },
406 {
407 "cell_type": "markdown",
408 "metadata": {},
409 "source": [
410 "## Viatra with constraints"
411 ]
412 },
413 {
414 "cell_type": "code",
415 "execution_count": 50,
416 "metadata": {},
417 "outputs": [],
418 "source": [
419 "viatra_con_stats = readStats('../input/viatra_con_output/',5000)\n",
420 "viatra_con_dic = calDistanceDic(viatra_con_stats, human_rep)\n",
421 "\n",
422 "# trajectories and colors\n",
423 "trajectories = {}\n",
424 "w = createSelectionWidge(trajectories)\n",
425 "colors = createRandomColors(len(trajectories))"
426 ]
427 },
428 {
429 "cell_type": "code",
430 "execution_count": 51,
431 "metadata": {},
432 "outputs": [
433 {
434 "data": {
435 "application/vnd.jupyter.widget-view+json": {
436 "model_id": "0d04d6db770a49f4a160ff55cc7131f6",
437 "version_major": 2,
438 "version_minor": 0
439 },
440 "text/plain": [
441 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
442 ]
443 },
444 "metadata": {},
445 "output_type": "display_data"
446 },
447 {
448 "data": {
449 "text/plain": [
450 "<function __main__.plot_out_degree(lines)>"
451 ]
452 },
453 "execution_count": 51,
454 "metadata": {},
455 "output_type": "execute_result"
456 }
457 ],
458 "source": [
459 "def plot_out_degree(lines):\n",
460 " plot(viatra_con_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree', '../output/viatra_constraints/')\n",
461 "interact(plot_out_degree, lines=[[]])"
462 ]
463 },
464 {
465 "cell_type": "code",
466 "execution_count": 52,
467 "metadata": {},
468 "outputs": [
469 {
470 "data": {
471 "application/vnd.jupyter.widget-view+json": {
472 "model_id": "96eebad1f6274d79ad377c8c54b44615",
473 "version_major": 2,
474 "version_minor": 0
475 },
476 "text/plain": [
477 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
478 ]
479 },
480 "metadata": {},
481 "output_type": "display_data"
482 },
483 {
484 "data": {
485 "text/plain": [
486 "<function __main__.plot_na(lines)>"
487 ]
488 },
489 "execution_count": 52,
490 "metadata": {},
491 "output_type": "execute_result"
492 }
493 ],
494 "source": [
495 "def plot_na(lines):\n",
496 " plot(viatra_con_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity', '../output/viatra_constraints/')\n",
497 "interact(plot_na, lines=[[]])"
498 ]
499 },
500 {
501 "cell_type": "code",
502 "execution_count": 53,
503 "metadata": {},
504 "outputs": [
505 {
506 "data": {
507 "application/vnd.jupyter.widget-view+json": {
508 "model_id": "4fc2714a3cd3440daf5014bb4b942b9a",
509 "version_major": 2,
510 "version_minor": 0
511 },
512 "text/plain": [
513 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
514 ]
515 },
516 "metadata": {},
517 "output_type": "display_data"
518 },
519 {
520 "data": {
521 "text/plain": [
522 "<function __main__.plot_mpc(lines)>"
523 ]
524 },
525 "execution_count": 53,
526 "metadata": {},
527 "output_type": "execute_result"
528 }
529 ],
530 "source": [
531 "def plot_mpc(lines):\n",
532 " plot(viatra_con_dic, lines, 0, lambda a: a.mpc_distance, colors, 'MPC', '../output/viatra_constraints/')\n",
533 "interact(plot_mpc, lines=[[]])"
534 ]
535 },
536 {
537 "cell_type": "markdown",
538 "metadata": {},
539 "source": [
540 "## Controlled RandomEMF"
541 ]
542 },
543 {
544 "cell_type": "code",
545 "execution_count": 59,
546 "metadata": {},
547 "outputs": [],
548 "source": [
549 "random_emf_stats = readStats('../input/random_emf_output/',5000)\n",
550 "random_emf_dic = calDistanceDic(random_emf_stats, human_rep)\n",
551 "\n",
552 "# trajectories and colors\n",
553 "trajectories = {}\n",
554 "w = createSelectionWidge(trajectories)\n",
555 "colors = createRandomColors(len(trajectories))"
556 ]
557 },
558 {
559 "cell_type": "code",
560 "execution_count": 60,
561 "metadata": {},
562 "outputs": [
563 {
564 "data": {
565 "application/vnd.jupyter.widget-view+json": {
566 "model_id": "4401931533b5497f864f146d7b4dcd3c",
567 "version_major": 2,
568 "version_minor": 0
569 },
570 "text/plain": [
571 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
572 ]
573 },
574 "metadata": {},
575 "output_type": "display_data"
576 },
577 {
578 "data": {
579 "text/plain": [
580 "<function __main__.plot_out_degree(lines)>"
581 ]
582 },
583 "execution_count": 60,
584 "metadata": {},
585 "output_type": "execute_result"
586 }
587 ],
588 "source": [
589 "def plot_out_degree(lines):\n",
590 " plot(random_emf_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out degree', '../output/random_emf/')\n",
591 "interact(plot_out_degree, lines=[[]])"
592 ]
593 },
594 {
595 "cell_type": "code",
596 "execution_count": 61,
597 "metadata": {},
598 "outputs": [
599 {
600 "data": {
601 "application/vnd.jupyter.widget-view+json": {
602 "model_id": "fb7bdedff841420bb8f817013f565020",
603 "version_major": 2,
604 "version_minor": 0
605 },
606 "text/plain": [
607 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
608 ]
609 },
610 "metadata": {},
611 "output_type": "display_data"
612 },
613 {
614 "data": {
615 "text/plain": [
616 "<function __main__.plot_node_activity(lines)>"
617 ]
618 },
619 "execution_count": 61,
620 "metadata": {},
621 "output_type": "execute_result"
622 }
623 ],
624 "source": [
625 "def plot_node_activity(lines):\n",
626 " plot(random_emf_dic, lines, 0, lambda a: a.na_distance, colors, 'node activity', '../output/random_emf/')\n",
627 "interact(plot_node_activity, lines=[[]])"
628 ]
629 },
630 {
631 "cell_type": "code",
632 "execution_count": 62,
633 "metadata": {},
634 "outputs": [
635 {
636 "data": {
637 "application/vnd.jupyter.widget-view+json": {
638 "model_id": "6b0c349c4a3b4813825513f739ea30da",
639 "version_major": 2,
640 "version_minor": 0
641 },
642 "text/plain": [
643 "interactive(children=(Dropdown(description='lines', options=([],), value=[]), Output()), _dom_classes=('widget…"
644 ]
645 },
646 "metadata": {},
647 "output_type": "display_data"
648 },
649 {
650 "data": {
651 "text/plain": [
652 "<function __main__.plot_mpc(lines)>"
653 ]
654 },
655 "execution_count": 62,
656 "metadata": {},
657 "output_type": "execute_result"
658 }
659 ],
660 "source": [
661 "def plot_mpc(lines):\n",
662 " plot(random_emf_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/random_emf/')\n",
663 "interact(plot_mpc, lines=[[]])"
664 ]
665 },
666 {
667 "cell_type": "markdown",
668 "metadata": {},
669 "source": [
670 "## Controlled Viatra with MPC"
671 ]
672 },
673 {
674 "cell_type": "code",
675 "execution_count": 67,
676 "metadata": {},
677 "outputs": [],
678 "source": [
679 "con_viatra_stats = readStats('../input/controled_viatra_mpc/',5000)\n",
680 "con_viatra_dic = calDistanceDic(con_viatra_stats, human_rep)\n",
681 "\n",
682 "# trajectories and colors\n",
683 "trajectories = {}\n",
684 "w = createSelectionWidge(trajectories)\n",
685 "colors = createRandomColors(len(trajectories))"
686 ]
687 },
688 {
689 "cell_type": "code",
690 "execution_count": 74,
691 "metadata": {},
692 "outputs": [
693 {
694 "data": {
695 "application/vnd.jupyter.widget-view+json": {
696 "model_id": "b76901ba9d44433984032e0dc5679fa9",
697 "version_major": 2,
698 "version_minor": 0
699 },
700 "text/plain": [
701 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
702 ]
703 },
704 "metadata": {},
705 "output_type": "display_data"
706 },
707 {
708 "data": {
709 "text/plain": [
710 "<function __main__.plot_out_degree(lines)>"
711 ]
712 },
713 "execution_count": 74,
714 "metadata": {},
715 "output_type": "execute_result"
716 }
717 ],
718 "source": [
719 "def plot_out_degree(lines):\n",
720 " plot(con_viatra_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/controled_viatra_with_mpc/')\n",
721 "interact(plot_out_degree, lines=w)"
722 ]
723 },
724 {
725 "cell_type": "code",
726 "execution_count": 75,
727 "metadata": {},
728 "outputs": [
729 {
730 "data": {
731 "application/vnd.jupyter.widget-view+json": {
732 "model_id": "9e0d61e29b02467cb52618860a1bde7f",
733 "version_major": 2,
734 "version_minor": 0
735 },
736 "text/plain": [
737 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
738 ]
739 },
740 "metadata": {},
741 "output_type": "display_data"
742 },
743 {
744 "data": {
745 "text/plain": [
746 "<function __main__.plot_na(lines)>"
747 ]
748 },
749 "execution_count": 75,
750 "metadata": {},
751 "output_type": "execute_result"
752 }
753 ],
754 "source": [
755 "def plot_na(lines):\n",
756 " plot(con_viatra_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/controled_viatra_with_mpc/')\n",
757 "interact(plot_na, lines=w)"
758 ]
759 },
760 {
761 "cell_type": "code",
762 "execution_count": 76,
763 "metadata": {},
764 "outputs": [
765 {
766 "data": {
767 "application/vnd.jupyter.widget-view+json": {
768 "model_id": "70074805fee44a1aa5b9ccb3770b5c0c",
769 "version_major": 2,
770 "version_minor": 0
771 },
772 "text/plain": [
773 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
774 ]
775 },
776 "metadata": {},
777 "output_type": "display_data"
778 },
779 {
780 "data": {
781 "text/plain": [
782 "<function __main__.plot_mpc(lines)>"
783 ]
784 },
785 "execution_count": 76,
786 "metadata": {},
787 "output_type": "execute_result"
788 }
789 ],
790 "source": [
791 "def plot_mpc(lines):\n",
792 " plot(con_viatra_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/controled_viatra_with_mpc/')\n",
793 "interact(plot_mpc, lines=w)"
794 ]
795 },
796 {
797 "cell_type": "markdown",
798 "metadata": {},
799 "source": [
800 "## (Pseudo) Random EMF instantiator"
801 ]
802 },
803 {
804 "cell_type": "code",
805 "execution_count": 80,
806 "metadata": {},
807 "outputs": [],
808 "source": [
809 "random_emf_stats = readStats('../input/real_random_output/',5000)\n",
810 "random_emf_dic = calDistanceDic(random_emf_stats, human_rep)\n",
811 "\n",
812 "# trajectories and colors\n",
813 "trajectories = {}\n",
814 "w = createSelectionWidge(trajectories)\n",
815 "colors = createRandomColors(len(trajectories))"
816 ]
817 },
818 {
819 "cell_type": "code",
820 "execution_count": 82,
821 "metadata": {},
822 "outputs": [
823 {
824 "data": {
825 "application/vnd.jupyter.widget-view+json": {
826 "model_id": "912ba2fdfd7c46848065f174aa6177e0",
827 "version_major": 2,
828 "version_minor": 0
829 },
830 "text/plain": [
831 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
832 ]
833 },
834 "metadata": {},
835 "output_type": "display_data"
836 },
837 {
838 "data": {
839 "text/plain": [
840 "<function __main__.plot_out_degree(lines)>"
841 ]
842 },
843 "execution_count": 82,
844 "metadata": {},
845 "output_type": "execute_result"
846 }
847 ],
848 "source": [
849 "def plot_out_degree(lines):\n",
850 " plot(random_emf_dic, lines, 0, lambda a: a.out_d_distance, colors, 'out_degree', '../output/random_emf_instantiator/')\n",
851 "interact(plot_out_degree, lines=w)"
852 ]
853 },
854 {
855 "cell_type": "code",
856 "execution_count": 83,
857 "metadata": {},
858 "outputs": [
859 {
860 "data": {
861 "application/vnd.jupyter.widget-view+json": {
862 "model_id": "0ba621dd0e7d4957aaff2cf209bba165",
863 "version_major": 2,
864 "version_minor": 0
865 },
866 "text/plain": [
867 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
868 ]
869 },
870 "metadata": {},
871 "output_type": "display_data"
872 },
873 {
874 "data": {
875 "text/plain": [
876 "<function __main__.plot_na(lines)>"
877 ]
878 },
879 "execution_count": 83,
880 "metadata": {},
881 "output_type": "execute_result"
882 }
883 ],
884 "source": [
885 "def plot_na(lines):\n",
886 " plot(random_emf_dic, lines, 0, lambda a: a.na_distance, colors, 'Node Activity', '../output/random_emf_instantiator/')\n",
887 "interact(plot_na, lines=w)"
888 ]
889 },
890 {
891 "cell_type": "code",
892 "execution_count": 84,
893 "metadata": {},
894 "outputs": [
895 {
896 "data": {
897 "application/vnd.jupyter.widget-view+json": {
898 "model_id": "d432bbae1c6f48c3acd1767f2e2b13c7",
899 "version_major": 2,
900 "version_minor": 0
901 },
902 "text/plain": [
903 "interactive(children=(SelectMultiple(description='Trajectory:', options={}, value=()), Output()), _dom_classes…"
904 ]
905 },
906 "metadata": {},
907 "output_type": "display_data"
908 },
909 {
910 "data": {
911 "text/plain": [
912 "<function __main__.plot_mpc(lines)>"
913 ]
914 },
915 "execution_count": 84,
916 "metadata": {},
917 "output_type": "execute_result"
918 }
919 ],
920 "source": [
921 "def plot_mpc(lines):\n",
922 " plot(random_emf_dic, lines, 0, lambda a: a.mpc_distance, colors, 'mpc', '../output/random_emf_instantiator/')\n",
923 "interact(plot_mpc, lines=w)"
924 ]
925 },
926 {
927 "cell_type": "code",
928 "execution_count": null,
929 "metadata": {},
930 "outputs": [],
931 "source": []
932 }
933 ],
934 "metadata": {
935 "kernelspec": {
936 "display_name": "Python 3",
937 "language": "python",
938 "name": "python3"
939 },
940 "language_info": {
941 "codemirror_mode": {
942 "name": "ipython",
943 "version": 3
944 },
945 "file_extension": ".py",
946 "mimetype": "text/x-python",
947 "name": "python",
948 "nbconvert_exporter": "python",
949 "pygments_lexer": "ipython3",
950 "version": "3.7.3"
951 }
952 },
953 "nbformat": 4,
954 "nbformat_minor": 2
955}
diff --git a/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb
new file mode 100644
index 00000000..9653b2a0
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/model_evolve_comparison/src/representative_selector .ipynb
@@ -0,0 +1,336 @@
1{
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "## Use K-medoid algorithm to find the suitable human model representitives"
8 ]
9 },
10 {
11 "cell_type": "markdown",
12 "metadata": {},
13 "source": [
14 "### Imports"
15 ]
16 },
17 {
18 "cell_type": "code",
19 "execution_count": 1,
20 "metadata": {},
21 "outputs": [],
22 "source": [
23 "import os, sys\n",
24 "lib_path = os.path.abspath(os.path.join('..', '..', 'utils'))\n",
25 "sys.path.append(lib_path)\n",
26 "from GraphType import GraphStat\n",
27 "import readCSV as reader\n",
28 "from scipy import stats\n",
29 "from ipywidgets import interact, fixed, interactive\n",
30 "import ipywidgets as widgets\n",
31 "from pyclustering.cluster.kmedoids import kmedoids\n",
32 "from pyclustering.utils.metric import distance_metric, type_metric\n",
33 "import random"
34 ]
35 },
36 {
37 "cell_type": "markdown",
38 "metadata": {},
39 "source": [
40 "### Define a new distance metric"
41 ]
42 },
43 {
44 "cell_type": "code",
45 "execution_count": 2,
46 "metadata": {},
47 "outputs": [],
48 "source": [
49 "def ks_value(dest1, dest2):\n",
50 " value, p = stats.ks_2samp(dest1, dest2)\n",
51 " return value\n",
52 "\n",
53 "\n",
54 "ks_metric = distance_metric(type_metric.USER_DEFINED, func=ks_value)"
55 ]
56 },
57 {
58 "cell_type": "markdown",
59 "metadata": {},
60 "source": [
61 "### Read Human Models"
62 ]
63 },
64 {
65 "cell_type": "code",
66 "execution_count": 4,
67 "metadata": {},
68 "outputs": [
69 {
70 "data": {
71 "text/plain": [
72 "1253"
73 ]
74 },
75 "execution_count": 4,
76 "metadata": {},
77 "output_type": "execute_result"
78 }
79 ],
80 "source": [
81 "# Progress Widge\n",
82 "w = widgets.FloatProgress(\n",
83 " value=0,\n",
84 " min=0,\n",
85 " max=1.0,\n",
86 " step=0.1,\n",
87 " description='Loading Files...:',\n",
88 " bar_style='info',\n",
89 " orientation='horizontal'\n",
90 ")\n",
91 "\n",
92 "\n",
93 "humanFiles = reader.readmultiplefiles('../input/humanOutput/', 1300, False)\n",
94 "modelToFileName = {}\n",
95 "for name in humanFiles:\n",
96 " modelToFileName[GraphStat(name)] = name\n",
97 "\n",
98 "models = list(modelToFileName.keys())\n",
99 "len(humanFiles)"
100 ]
101 },
102 {
103 "cell_type": "markdown",
104 "metadata": {},
105 "source": [
106 "### Find Representative by K-medroid for different dists on GraphStat"
107 ]
108 },
109 {
110 "cell_type": "markdown",
111 "metadata": {},
112 "source": [
113 "* Returns the index of the representative"
114 ]
115 },
116 {
117 "cell_type": "code",
118 "execution_count": 5,
119 "metadata": {},
120 "outputs": [],
121 "source": [
122 "def findRep(graphStats, func):\n",
123 " out_ds = list(map(func, models))\n",
124 "\n",
125 " #choose a random starting point\n",
126 " start_index = random.randint(0, len(out_ds))\n",
127 "\n",
128 " # start with one initial metrid [start_index]\n",
129 " outdegree_kmedoid = kmedoids(out_ds, [start_index], metric=ks_metric)\n",
130 "\n",
131 " outdegree_kmedoid.process()\n",
132 " centoids = outdegree_kmedoid.get_medoids()\n",
133 " return centoids[0]"
134 ]
135 },
136 {
137 "cell_type": "markdown",
138 "metadata": {},
139 "source": [
140 "### Find representative for out degree"
141 ]
142 },
143 {
144 "cell_type": "markdown",
145 "metadata": {},
146 "source": [
147 "* the rep found is ../input/humanOutput\\R_20158_run_1.csv\n",
148 "* the average distance between it and others is 0.05515988287586802"
149 ]
150 },
151 {
152 "cell_type": "code",
153 "execution_count": 6,
154 "metadata": {},
155 "outputs": [
156 {
157 "name": "stdout",
158 "output_type": "stream",
159 "text": [
160 "../input/humanOutput\\R_20158_run_1.csv\n",
161 "../input/humanOutput\\R_20158_run_1.csv\n"
162 ]
163 }
164 ],
165 "source": [
166 "od_rep_index = findRep(models, lambda m: m.out_d)\n",
167 "print(list(modelToFileName.values())[od_rep_index])\n",
168 "od_rep_model = models[od_rep_index]\n",
169 "print(modelToFileName[od_rep_model])\n"
170 ]
171 },
172 {
173 "cell_type": "code",
174 "execution_count": 19,
175 "metadata": {},
176 "outputs": [
177 {
178 "name": "stdout",
179 "output_type": "stream",
180 "text": [
181 "0.05515988287586802\n"
182 ]
183 }
184 ],
185 "source": [
186 "total_distance = 0\n",
187 "count = 0\n",
188 "for model in models:\n",
189 " total_distance += ks_value(od_rep_model.out_d, model.out_d)\n",
190 "print(total_distance / len(models))"
191 ]
192 },
193 {
194 "cell_type": "markdown",
195 "metadata": {},
196 "source": [
197 "### Find Representative for node activities"
198 ]
199 },
200 {
201 "cell_type": "markdown",
202 "metadata": {},
203 "source": [
204 "* the rep found is ../input/humanOutput\\R_2016176_run_1.csv\n",
205 "* the average distance between it and others is 0.05275267434589047"
206 ]
207 },
208 {
209 "cell_type": "code",
210 "execution_count": 7,
211 "metadata": {},
212 "outputs": [
213 {
214 "name": "stdout",
215 "output_type": "stream",
216 "text": [
217 "../input/humanOutput\\R_2016176_run_1.csv\n",
218 "../input/humanOutput\\R_2016176_run_1.csv\n"
219 ]
220 }
221 ],
222 "source": [
223 "total_distance = 0\n",
224 "for model in models:\n",
225 " total_distance += ks_value(od_rep_model.mpc, model.mpc)\n",
226 "print(total_distance / len(models))"
227 ]
228 },
229 {
230 "cell_type": "code",
231 "execution_count": 18,
232 "metadata": {},
233 "outputs": [
234 {
235 "name": "stdout",
236 "output_type": "stream",
237 "text": [
238 "0.05275267434589047\n"
239 ]
240 }
241 ],
242 "source": [
243 "total_distance = 0\n",
244 "count = 0\n",
245 "for model in models:\n",
246 " total_distance += ks_value(od_rep_model.na, model.na)\n",
247 "print(total_distance / len(models))"
248 ]
249 },
250 {
251 "cell_type": "markdown",
252 "metadata": {},
253 "source": [
254 "### Find Representative for MPC"
255 ]
256 },
257 {
258 "cell_type": "markdown",
259 "metadata": {},
260 "source": [
261 "* the rep found is ../input/humanOutput\\R_2015246_run_1.csv\n",
262 "* the average distance between it and others is 0.08556632702185384"
263 ]
264 },
265 {
266 "cell_type": "code",
267 "execution_count": 8,
268 "metadata": {},
269 "outputs": [
270 {
271 "name": "stdout",
272 "output_type": "stream",
273 "text": [
274 "../input/humanOutput\\R_2015246_run_1.csv\n",
275 "../input/humanOutput\\R_2015246_run_1.csv\n"
276 ]
277 }
278 ],
279 "source": [
280 "mpc_rep_index = findRep(models, lambda m: m.mpc)\n",
281 "print(list(modelToFileName.values())[mpc_rep_index])\n",
282 "mpc_rep_model = models[mpc_rep_index]\n",
283 "print(modelToFileName[mpc_rep_model])"
284 ]
285 },
286 {
287 "cell_type": "code",
288 "execution_count": 20,
289 "metadata": {},
290 "outputs": [
291 {
292 "name": "stdout",
293 "output_type": "stream",
294 "text": [
295 "0.08556632702185384\n"
296 ]
297 }
298 ],
299 "source": [
300 "total_distance = 0\n",
301 "count = 0\n",
302 "for model in models:\n",
303 " total_distance += ks_value(od_rep_model.mpc, model.mpc)\n",
304 "print(total_distance / len(models))"
305 ]
306 },
307 {
308 "cell_type": "code",
309 "execution_count": null,
310 "metadata": {},
311 "outputs": [],
312 "source": []
313 }
314 ],
315 "metadata": {
316 "kernelspec": {
317 "display_name": "Python 3",
318 "language": "python",
319 "name": "python3"
320 },
321 "language_info": {
322 "codemirror_mode": {
323 "name": "ipython",
324 "version": 3
325 },
326 "file_extension": ".py",
327 "mimetype": "text/x-python",
328 "name": "python",
329 "nbconvert_exporter": "python",
330 "pygments_lexer": "ipython3",
331 "version": "3.7.3"
332 }
333 },
334 "nbformat": 4,
335 "nbformat_minor": 2
336}
diff --git a/Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py b/Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py
new file mode 100644
index 00000000..13754e80
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py
@@ -0,0 +1,29 @@
1import readCSV as reader
2import constants
3import numpy as np
4
5# graph stats for a collection of graphs
6class GraphCollection:
7
8 # init with path contrain files and number of files to read reader is imported from (readCSV)
9 def __init__(self, path, number, name, shouldShuffle = True):
10 self.out_ds = []
11 self.nas = []
12 self.mpcs = []
13 self.name = name
14 models = reader.readmultiplefiles(path, number, shouldShuffle)
15 for i in range(len(models)):
16 contents, out_d, na, mpc = reader.getmetrics(models[i])
17 self.out_ds.append(out_d)
18 self.nas.append(na)
19 self.mpcs.append(mpc)
20 print(len(self.out_ds))
21
22#Graph stat for one graph
23class GraphStat:
24 # init with teh file name of the stat
25 def __init__(self, filename):
26 contents, self.out_d, self.na, self.mpc = reader.getmetrics(filename)
27 self.num_nodes = np.array(contents[constants.NUMBER_NODES])
28 if constants.STATE_ID in contents:
29 self.id = (contents[constants.STATE_ID])[0]
diff --git a/Metrics/Metrics-Calculation/metrics_plot/utils/constants.py b/Metrics/Metrics-Calculation/metrics_plot/utils/constants.py
new file mode 100644
index 00000000..ce9d4255
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/utils/constants.py
@@ -0,0 +1,25 @@
1NUMBER_EDGE_TYPES = 'Number of Edge types'
2
3NUMBER_NODES = 'Number Of Nodes'
4
5OUT_DEGREE_COUNT = 'OutDegreeCount'
6
7OUT_DEGREE_VALUE = 'OutDegreeValue'
8
9NA_COUNT = 'NACount'
10
11NA_VALUE = 'NAValue'
12
13MPC_VALUE = 'MPCValue'
14
15MPC_COUNT = 'MPCCount'
16
17METAMODEL = 'Meta Mode'
18
19STATE_ID = 'State Id'
20
21HUMAN_OUT_D_REP = '../input/humanOutput/R_20158_run_1.csv'
22
23HUMAN_MPC_REP = '../input/humanOutput/R_2015246_run_1.csv'
24
25HUMAN_NA_REP = '../input/humanOutput/R_2016176_run_1.csv'
diff --git a/Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py b/Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py
new file mode 100644
index 00000000..e0402519
--- /dev/null
+++ b/Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py
@@ -0,0 +1,169 @@
1import numpy as np
2import matplotlib.pyplot as plt
3from scipy import stats
4import glob
5import random
6import constants
7
8#
9# read csvfile returns outdegree, node activity, mpc
10# as matrix with the first row of values and second row of count
11#
12def readcsvfile(filename):
13
14 contents = {}
15 with open(filename) as f:
16 for i, line in enumerate(f):
17 arr = line.split(',')
18 # if there is no element in the line, continue
19 if len(line) < 0: continue
20 # else check for contents
21 # if it is MPC then use float
22 if arr[0] == constants.MPC_VALUE:
23 contents[constants.MPC_VALUE] = list(map(float, arr[1:]))
24 # meta models are string
25 elif(arr[0] == constants.METAMODEL):
26 contents[constants.METAMODEL] = arr[1:]
27 # all other contants are integer
28 else:
29 contents[arr[0]] = list(map(int, arr[1:]))
30 f.close()
31 return contents
32
33def checkAndReshape(arr):
34 if len(arr.shape) < 2:
35 arr = np.reshape(arr, (arr.shape[0],1))
36 return arr
37
38def readTrajectory(filename):
39 state_codes = []
40 with open(filename) as f:
41 for i, line in enumerate(f):
42 if(line == ''): continue
43 state_codes.append(int(line))
44 return state_codes
45#
46# take a matrix as input
47# return the sample array
48#
49def getsample(dataMatrix):
50 data = []
51 value = dataMatrix[0, :]
52 count = dataMatrix[1, :]
53 for i, v in enumerate(value):
54 for x in range(0, int(count[i])):
55 data.append(v)
56 return data
57
58def reproduceSample(values, counts):
59 arr = np.array([values, counts])
60 return getsample(arr)
61
62#
63# take an array of filenames as input
64# return the samples of outdegree, na, mpc
65#
66def getmetrics(filename):
67 contents = readcsvfile(filename)
68 outdegree_sample = reproduceSample(contents[constants.OUT_DEGREE_VALUE], contents[constants.OUT_DEGREE_COUNT])
69 na_sample = reproduceSample(contents[constants.NA_VALUE], contents[constants.NA_COUNT])
70 mpc_sample = reproduceSample(contents[constants.MPC_VALUE], contents[constants.MPC_COUNT])
71 return contents,outdegree_sample, na_sample, mpc_sample
72
73#
74# read number of files in the given path RANDOMLY
75#
76def readmultiplefiles(dirName, maxNumberOfFiles, shouldShuffle = True):
77 list_of_files = glob.glob(dirName + '*.csv') # create the list of file
78 if shouldShuffle:
79 random.shuffle(list_of_files)
80 #if the number of files is out of bound then just give the whole list
81 file_names = list_of_files[:maxNumberOfFiles]
82 # print(file_names)
83 return file_names
84
85
86def plotlines(x, y, ax):
87 l1, = ax.plot(x, y)
88
89
90def testgetsamplesfromfiles():
91 files = readmultiplefiles('../statistics/viatraOutput/', 2)
92 for file in files:
93 getmetrics(file)
94
95def probability(data):
96 sum = np.sum(data)
97 probabilityList = []
98 for d in data:
99 p = d/sum
100 probabilityList.append(p)
101 a = np.array(probabilityList)
102 return a
103
104
105def cumulativeProbability(p):
106 cdf = np.cumsum(p)
107 return cdf
108
109
110def plot():
111 fig, ax = plt.subplots()
112 fig, ax1 = plt.subplots()
113 fig, ax2 = plt.subplots()
114 fig, ax3 = plt.subplots()
115 fig, ax4 = plt.subplots()
116 fig, ax5 = plt.subplots()
117 list_of_files = readmultiplefiles('../statistics/iatraOutput/')
118 for file_name in list_of_files:
119 contents = readcsvfile(file_name)
120 outdegree = [contents[constants.OUT_DEGREE_VALUE], contents[constants.OUT_DEGREE_COUNT]]
121 na = [contents[constants.NA_VALUE], contents[constants.NA_COUNT]]
122 mpc = [contents[constants.MPC_VALUE], contents[constants.MPC_COUNT]]
123 outV = outdegree[0, :]
124 outC = outdegree[1, :]
125 outP = probability(outC)
126 outCumP = cumulativeProbability(outP)
127 plotlines(outV, outP, ax)
128 naV = na[0, :]
129 naC = na[1, :]
130 naP = probability(naC)
131 naCumP = cumulativeProbability(naP)
132 plotlines(naV, naP, ax1)
133 mpcV = mpc[0, :]
134 mpcC = mpc[1, :]
135 mpcP = probability(mpcC)
136 mpcCumP = cumulativeProbability(mpcP)
137 plotlines(mpcV, mpcP, ax2)
138 plotlines(outV, outCumP, ax3)
139 plotlines(naV, naCumP, ax4)
140 plotlines(mpcV, mpcCumP, ax5)
141 ax.set_xlabel('ourdegree')
142 ax.set_ylabel('pdf')
143 ax.grid()
144
145 ax1.set_xlabel('node activity')
146 ax1.set_ylabel('pdf')
147 ax1.grid()
148
149 ax2.set_xlabel('multiplex participation coefficient')
150 ax2.set_ylabel('pdf')
151 ax2.grid()
152
153 ax3.set_xlabel('ourdegree')
154 ax3.set_ylabel('cdf')
155 ax3.grid()
156
157 ax4.set_xlabel('node activity')
158 ax4.set_ylabel('cdf')
159 ax4.grid()
160
161 ax5.set_xlabel('multiplex participation coefficient')
162 ax5.set_ylabel('cdf')
163 ax5.grid()
164
165 plt.show()
166
167
168# plot()
169
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.classpath b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.classpath
new file mode 100644
index 00000000..1c96fe2f
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.classpath
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<classpath>
3 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
4 <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
5 <classpathentry kind="src" path="src"/>
6 <classpathentry kind="src" path="xtend-gen"/>
7 <classpathentry kind="output" path="bin"/>
8</classpath>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.gitignore b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.gitignore
new file mode 100644
index 00000000..ae3c1726
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.gitignore
@@ -0,0 +1 @@
/bin/
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.project b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.project
new file mode 100644
index 00000000..a9426a81
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.project
@@ -0,0 +1,34 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<projectDescription>
3 <name>ca.mcgill.ecse.dslreasoner.realistic.metrics</name>
4 <comment></comment>
5 <projects>
6 </projects>
7 <buildSpec>
8 <buildCommand>
9 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
10 <arguments>
11 </arguments>
12 </buildCommand>
13 <buildCommand>
14 <name>org.eclipse.jdt.core.javabuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.pde.ManifestBuilder</name>
20 <arguments>
21 </arguments>
22 </buildCommand>
23 <buildCommand>
24 <name>org.eclipse.pde.SchemaBuilder</name>
25 <arguments>
26 </arguments>
27 </buildCommand>
28 </buildSpec>
29 <natures>
30 <nature>org.eclipse.pde.PluginNature</nature>
31 <nature>org.eclipse.jdt.core.javanature</nature>
32 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
33 </natures>
34</projectDescription>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.settings/org.eclipse.jdt.core.prefs b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..0c68a61d
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
1eclipse.preferences.version=1
2org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4org.eclipse.jdt.core.compiler.compliance=1.8
5org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7org.eclipse.jdt.core.compiler.source=1.8
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/META-INF/MANIFEST.MF b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..b9c65c38
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
1Manifest-Version: 1.0
2Bundle-ManifestVersion: 2
3Bundle-Name: %pluginName
4Bundle-SymbolicName: ca.mcgill.ecse.dslreasoner.realistic.metrics;singleton:=true
5Bundle-Version: 1.0.0.qualifier
6Bundle-ClassPath: .
7Bundle-Vendor: %providerName
8Bundle-Localization: plugin
9Automatic-Module-Name: ca.mcgill.ecse.dslreasoner.realistic.metrics
10Bundle-RequiredExecutionEnvironment: JavaSE-1.8
11Export-Package: linkedList,
12 linkedList.impl,
13 linkedList.util,
14 simpleStatechart,
15 simpleStatechart.impl,
16 simpleStatechart.util
17Require-Bundle: org.eclipse.core.runtime,
18 org.eclipse.emf.ecore;bundle-version="2.14.0";visibility:=reexport,
19 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0",
20 Ecore-Plugin;bundle-version="1.0.0",
21 com.google.guava;bundle-version="21.0.0",
22 org.eclipse.viatra.query.runtime;bundle-version="2.1.0",
23 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
24 hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0",
25 org.eclipse.emf.ecore.xmi;bundle-version="2.14.0",
26 hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph;bundle-version="1.0.0",
27 org.eclipse.xtext.xbase.lib,
28 org.eclipse.xtend.lib,
29 org.eclipse.xtend.lib.macro,
30 org.eclipse.viatra.query.runtime.rete;bundle-version="2.1.0",
31 org.eclipse.viatra.query.runtime.localsearch;bundle-version="2.1.0",
32 org.eclipse.collections;bundle-version="9.2.0"
33Bundle-ActivationPolicy: lazy
34
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/build.properties b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/build.properties
new file mode 100644
index 00000000..4d3b1827
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/build.properties
@@ -0,0 +1,10 @@
1#
2
3bin.includes = .,\
4 model/,\
5 META-INF/,\
6 plugin.xml,\
7 plugin.properties
8jars.compile.order = .
9source.. = src/
10output.. = bin/
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/IRREALISTIC1NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/IRREALISTIC1NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..ef560678
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/IRREALISTIC1NEIGHBOURHOOD.gml
@@ -0,0 +1,440 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x -352.0
15 y -118.0
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[Entry class] (1)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x 319.0
40 y 34.0
41 w 137.5
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[State class] (4)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x 75.0
65 y -196.0
66 w 176.0
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[Statechart class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 node
84 [
85 id 3
86 label ""
87 graphics
88 [
89 x 90.0
90 y 247.0
91 w 137.5
92 h 40.0
93 type "roundrectangle"
94 fill "#FFCC00"
95 outline "#000000"
96 ]
97 LabelGraphics
98 [
99 ]
100 LabelGraphics
101 [
102 text "[State class] (1)"
103 fontSize 14
104 fontName "Dialog"
105 anchor "c"
106 ]
107 ]
108 edge
109 [
110 source 0
111 target 3
112 label "entry reference Entry"
113 graphics
114 [
115 fill "#000000"
116 targetArrow "standard"
117 Line
118 [
119 point
120 [
121 x -352.0
122 y -118.0
123 ]
124 point
125 [
126 x -362.0
127 y 247.0
128 ]
129 point
130 [
131 x 90.0
132 y 247.0
133 ]
134 ]
135 ]
136 edgeAnchor
137 [
138 xSource -0.14545454545454545
139 ]
140 LabelGraphics
141 [
142 text "entry reference Entry"
143 fontSize 12
144 fontName "Dialog"
145 configuration "AutoFlippingLabel"
146 contentWidth 116.048828125
147 contentHeight 18.701171875
148 model "six_pos"
149 position "head"
150 ]
151 LabelGraphics
152 [
153 text "[1]"
154 fontSize 12
155 fontName "Dialog"
156 configuration "AutoFlippingLabel"
157 contentWidth 17.341796875
158 contentHeight 18.701171875
159 model "six_pos"
160 position "stail"
161 ]
162 LabelGraphics
163 [
164 text "[1]"
165 fontSize 12
166 fontName "Dialog"
167 configuration "AutoFlippingLabel"
168 contentWidth 17.341796875
169 contentHeight 18.701171875
170 model "six_pos"
171 position "ttail"
172 ]
173 ]
174 edge
175 [
176 source 1
177 target 1
178 label "next reference State"
179 graphics
180 [
181 fill "#000000"
182 targetArrow "standard"
183 Line
184 [
185 point
186 [
187 x 319.0
188 y 34.0
189 ]
190 point
191 [
192 x 319.0
193 y -122.0
194 ]
195 point
196 [
197 x 319.0
198 y 34.0
199 ]
200 ]
201 ]
202 LabelGraphics
203 [
204 text "next reference State"
205 fontSize 12
206 fontName "Dialog"
207 configuration "AutoFlippingLabel"
208 contentWidth 112.064453125
209 contentHeight 18.701171875
210 model "six_pos"
211 position "head"
212 ]
213 LabelGraphics
214 [
215 text "[1, 1, 1]"
216 fontSize 12
217 fontName "Dialog"
218 configuration "AutoFlippingLabel"
219 contentWidth 44.025390625
220 contentHeight 18.701171875
221 model "six_pos"
222 position "stail"
223 ]
224 LabelGraphics
225 [
226 text "[1, 1, 0]"
227 fontSize 12
228 fontName "Dialog"
229 configuration "AutoFlippingLabel"
230 contentWidth 44.025390625
231 contentHeight 18.701171875
232 model "six_pos"
233 position "shead"
234 ]
235 ]
236 edge
237 [
238 source 2
239 target 3
240 label "state reference Statechart"
241 graphics
242 [
243 fill "#000000"
244 targetArrow "standard"
245 Line
246 [
247 point
248 [
249 x 75.0
250 y -196.0
251 ]
252 point
253 [
254 x 65.0
255 y 173.5
256 ]
257 point
258 [
259 x 90.0
260 y 173.5
261 ]
262 point
263 [
264 x 90.0
265 y 247.0
266 ]
267 ]
268 ]
269 edgeAnchor
270 [
271 xSource -0.11363636363636363
272 ]
273 LabelGraphics
274 [
275 text "state reference Statechart"
276 fontSize 12
277 fontName "Dialog"
278 configuration "AutoFlippingLabel"
279 contentWidth 142.076171875
280 contentHeight 18.701171875
281 model "six_pos"
282 position "head"
283 ]
284 LabelGraphics
285 [
286 text "[4, 1]"
287 fontSize 12
288 fontName "Dialog"
289 configuration "AutoFlippingLabel"
290 contentWidth 30.68359375
291 contentHeight 18.701171875
292 model "six_pos"
293 position "stail"
294 ]
295 LabelGraphics
296 [
297 text "[1]"
298 fontSize 12
299 fontName "Dialog"
300 configuration "AutoFlippingLabel"
301 contentWidth 17.341796875
302 contentHeight 18.701171875
303 model "six_pos"
304 position "ttail"
305 ]
306 ]
307 edge
308 [
309 source 2
310 target 0
311 label "entry reference Statechart"
312 graphics
313 [
314 fill "#000000"
315 targetArrow "standard"
316 Line
317 [
318 point
319 [
320 x 75.0
321 y -196.0
322 ]
323 point
324 [
325 x -377.0
326 y -196.0
327 ]
328 point
329 [
330 x -352.0
331 y -118.0
332 ]
333 ]
334 ]
335 edgeAnchor
336 [
337 xTarget -0.36363636363636365
338 ]
339 LabelGraphics
340 [
341 text "entry reference Statechart"
342 fontSize 12
343 fontName "Dialog"
344 configuration "AutoFlippingLabel"
345 contentWidth 142.73828125
346 contentHeight 18.701171875
347 model "six_pos"
348 position "head"
349 ]
350 LabelGraphics
351 [
352 text "[1]"
353 fontSize 12
354 fontName "Dialog"
355 configuration "AutoFlippingLabel"
356 contentWidth 17.341796875
357 contentHeight 18.701171875
358 model "six_pos"
359 position "stail"
360 ]
361 LabelGraphics
362 [
363 text "[1]"
364 fontSize 12
365 fontName "Dialog"
366 configuration "AutoFlippingLabel"
367 contentWidth 17.341796875
368 contentHeight 18.701171875
369 model "six_pos"
370 position "ttail"
371 ]
372 ]
373 edge
374 [
375 source 3
376 target 1
377 label "next reference State"
378 graphics
379 [
380 fill "#000000"
381 targetArrow "standard"
382 Line
383 [
384 point
385 [
386 x 90.0
387 y 247.0
388 ]
389 point
390 [
391 x 309.0
392 y 241.5
393 ]
394 point
395 [
396 x 319.0
397 y 34.0
398 ]
399 ]
400 ]
401 edgeAnchor
402 [
403 ySource -0.275
404 xTarget -0.14545454545454545
405 ]
406 LabelGraphics
407 [
408 text "next reference State"
409 fontSize 12
410 fontName "Dialog"
411 configuration "AutoFlippingLabel"
412 contentWidth 112.064453125
413 contentHeight 18.701171875
414 model "six_pos"
415 position "head"
416 ]
417 LabelGraphics
418 [
419 text "[1]"
420 fontSize 12
421 fontName "Dialog"
422 configuration "AutoFlippingLabel"
423 contentWidth 17.341796875
424 contentHeight 18.701171875
425 model "six_pos"
426 position "stail"
427 ]
428 LabelGraphics
429 [
430 text "[1, 0, 0]"
431 fontSize 12
432 fontName "Dialog"
433 configuration "AutoFlippingLabel"
434 contentWidth 44.025390625
435 contentHeight 18.701171875
436 model "six_pos"
437 position "ttail"
438 ]
439 ]
440]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/REALISTIC1NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/REALISTIC1NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..6df09856
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/REALISTIC1NEIGHBOURHOOD.gml
@@ -0,0 +1,520 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x -117.0
15 y -42.5
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[State class] (1)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x -357.0
40 y -128.0
41 w 137.5
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[Entry class] (1)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x -366.0
65 y 195.0
66 w 137.5
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[State class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 node
84 [
85 id 3
86 label ""
87 graphics
88 [
89 x -127.0
90 y 356.0
91 w 137.5
92 h 40.0
93 type "roundrectangle"
94 fill "#FFCC00"
95 outline "#000000"
96 ]
97 LabelGraphics
98 [
99 ]
100 LabelGraphics
101 [
102 text "[State class] (1)"
103 fontSize 14
104 fontName "Dialog"
105 anchor "c"
106 ]
107 ]
108 node
109 [
110 id 4
111 label ""
112 graphics
113 [
114 x 196.0
115 y 265.0
116 w 137.5
117 h 40.0
118 type "roundrectangle"
119 fill "#FFCC00"
120 outline "#000000"
121 ]
122 LabelGraphics
123 [
124 ]
125 LabelGraphics
126 [
127 text "[State class] (2)"
128 fontSize 14
129 fontName "Dialog"
130 anchor "c"
131 ]
132 ]
133 node
134 [
135 id 5
136 label ""
137 graphics
138 [
139 x 111.0
140 y -185.0
141 w 176.0
142 h 40.0
143 type "roundrectangle"
144 fill "#FFCC00"
145 outline "#000000"
146 ]
147 LabelGraphics
148 [
149 ]
150 LabelGraphics
151 [
152 text "[Statechart class] (1)"
153 fontSize 14
154 fontName "Dialog"
155 anchor "c"
156 ]
157 ]
158 edge
159 [
160 source 1
161 target 2
162 label "entry reference Entry"
163 graphics
164 [
165 fill "#000000"
166 targetArrow "standard"
167 ]
168 edgeAnchor
169 [
170 xSource -0.13090909090909092
171 ]
172 LabelGraphics
173 [
174 text "entry reference Entry"
175 fontSize 12
176 fontName "Dialog"
177 configuration "AutoFlippingLabel"
178 contentWidth 116.048828125
179 contentHeight 18.701171875
180 model "six_pos"
181 position "head"
182 ]
183 LabelGraphics
184 [
185 text "[1]"
186 fontSize 12
187 fontName "Dialog"
188 configuration "AutoFlippingLabel"
189 contentWidth 17.341796875
190 contentHeight 18.701171875
191 model "six_pos"
192 position "stail"
193 ]
194 LabelGraphics
195 [
196 text "[1]"
197 fontSize 12
198 fontName "Dialog"
199 configuration "AutoFlippingLabel"
200 contentWidth 17.341796875
201 contentHeight 18.701171875
202 model "six_pos"
203 position "ttail"
204 ]
205 ]
206 edge
207 [
208 source 3
209 target 0
210 label "next reference State"
211 graphics
212 [
213 fill "#000000"
214 targetArrow "standard"
215 ]
216 edgeAnchor
217 [
218 xTarget -0.14545454545454545
219 ]
220 LabelGraphics
221 [
222 text "next reference State"
223 fontSize 12
224 fontName "Dialog"
225 configuration "AutoFlippingLabel"
226 contentWidth 112.064453125
227 contentHeight 18.701171875
228 model "six_pos"
229 position "head"
230 ]
231 LabelGraphics
232 [
233 text "[2, 1, 1]"
234 fontSize 12
235 fontName "Dialog"
236 configuration "AutoFlippingLabel"
237 contentWidth 44.025390625
238 contentHeight 18.701171875
239 model "six_pos"
240 position "stail"
241 ]
242 LabelGraphics
243 [
244 text "[1]"
245 fontSize 12
246 fontName "Dialog"
247 configuration "AutoFlippingLabel"
248 contentWidth 17.341796875
249 contentHeight 18.701171875
250 model "six_pos"
251 position "ttail"
252 ]
253 ]
254 edge
255 [
256 source 2
257 target 3
258 label "next reference State"
259 graphics
260 [
261 fill "#000000"
262 targetArrow "standard"
263 Line
264 [
265 point
266 [
267 x -366.0
268 y 195.0
269 ]
270 point
271 [
272 x -390.0
273 y 215.0
274 ]
275 point
276 [
277 x -390.0
278 y 356.0
279 ]
280 point
281 [
282 x -127.0
283 y 356.0
284 ]
285 ]
286 ]
287 edgeAnchor
288 [
289 ySource 1.0
290 xTarget -0.2909090909090909
291 ]
292 LabelGraphics
293 [
294 text "next reference State"
295 fontSize 12
296 fontName "Dialog"
297 configuration "AutoFlippingLabel"
298 contentWidth 112.064453125
299 contentHeight 18.701171875
300 model "six_pos"
301 position "head"
302 ]
303 LabelGraphics
304 [
305 text "[1]"
306 fontSize 12
307 fontName "Dialog"
308 configuration "AutoFlippingLabel"
309 contentWidth 17.341796875
310 contentHeight 18.701171875
311 model "six_pos"
312 position "stail"
313 ]
314 LabelGraphics
315 [
316 text "[1]"
317 fontSize 12
318 fontName "Dialog"
319 configuration "AutoFlippingLabel"
320 contentWidth 17.341796875
321 contentHeight 18.701171875
322 model "six_pos"
323 position "ttail"
324 ]
325 ]
326 edge
327 [
328 source 4
329 target 3
330 label "next reference State"
331 graphics
332 [
333 fill "#000000"
334 targetArrow "standard"
335 Line
336 [
337 point
338 [
339 x 196.0
340 y 265.0
341 ]
342 point
343 [
344 x 196.0
345 y 356.0
346 ]
347 point
348 [
349 x -127.0
350 y 356.0
351 ]
352 ]
353 ]
354 LabelGraphics
355 [
356 text "next reference State"
357 fontSize 12
358 fontName "Dialog"
359 configuration "AutoFlippingLabel"
360 contentWidth 112.064453125
361 contentHeight 18.701171875
362 model "six_pos"
363 position "head"
364 ]
365 LabelGraphics
366 [
367 text "[1, 1]"
368 fontSize 12
369 fontName "Dialog"
370 configuration "AutoFlippingLabel"
371 contentWidth 30.68359375
372 contentHeight 18.701171875
373 model "six_pos"
374 position "stail"
375 ]
376 LabelGraphics
377 [
378 text "[1]"
379 fontSize 12
380 fontName "Dialog"
381 configuration "AutoFlippingLabel"
382 contentWidth 17.341796875
383 contentHeight 18.701171875
384 model "six_pos"
385 position "ttail"
386 ]
387 ]
388 edge
389 [
390 source 5
391 target 0
392 label "state reference Statechart"
393 graphics
394 [
395 fill "#000000"
396 targetArrow "standard"
397 Line
398 [
399 point
400 [
401 x 111.0
402 y -185.0
403 ]
404 point
405 [
406 x 111.0
407 y -42.5
408 ]
409 point
410 [
411 x -117.0
412 y -42.5
413 ]
414 ]
415 ]
416 edgeAnchor
417 [
418 xTarget 0.16
419 ]
420 LabelGraphics
421 [
422 text "state reference Statechart"
423 fontSize 12
424 fontName "Dialog"
425 configuration "AutoFlippingLabel"
426 contentWidth 142.076171875
427 contentHeight 18.701171875
428 model "six_pos"
429 position "head"
430 ]
431 LabelGraphics
432 [
433 text "[1, 2, 1, 1]"
434 fontSize 12
435 fontName "Dialog"
436 configuration "AutoFlippingLabel"
437 contentWidth 57.3671875
438 contentHeight 18.701171875
439 model "six_pos"
440 position "stail"
441 ]
442 LabelGraphics
443 [
444 text "[1]"
445 fontSize 12
446 fontName "Dialog"
447 configuration "AutoFlippingLabel"
448 contentWidth 17.341796875
449 contentHeight 18.701171875
450 model "six_pos"
451 position "ttail"
452 ]
453 ]
454 edge
455 [
456 source 5
457 target 1
458 label "entry reference Statechart"
459 graphics
460 [
461 fill "#000000"
462 targetArrow "standard"
463 Line
464 [
465 point
466 [
467 x 111.0
468 y -185.0
469 ]
470 point
471 [
472 x -346.0
473 y -185.0
474 ]
475 point
476 [
477 x -357.0
478 y -128.0
479 ]
480 ]
481 ]
482 edgeAnchor
483 [
484 xTarget 0.16
485 ]
486 LabelGraphics
487 [
488 text "entry reference Statechart"
489 fontSize 12
490 fontName "Dialog"
491 configuration "AutoFlippingLabel"
492 contentWidth 142.73828125
493 contentHeight 18.701171875
494 model "six_pos"
495 position "head"
496 ]
497 LabelGraphics
498 [
499 text "[1]"
500 fontSize 12
501 fontName "Dialog"
502 configuration "AutoFlippingLabel"
503 contentWidth 17.341796875
504 contentHeight 18.701171875
505 model "six_pos"
506 position "stail"
507 ]
508 LabelGraphics
509 [
510 text "[1]"
511 fontSize 12
512 fontName "Dialog"
513 configuration "AutoFlippingLabel"
514 contentWidth 17.341796875
515 contentHeight 18.701171875
516 model "six_pos"
517 position "ttail"
518 ]
519 ]
520]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleMODEL.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleMODEL.gml
new file mode 100644
index 00000000..2dd8a1d8
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleMODEL.gml
@@ -0,0 +1,752 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 41.800000000000004
9 h 26
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "true"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 "
30 fontSize 14
31 fontName "Consolas"
32 alignment "left"
33 anchor "tl"
34 borderDistance 6
35 ]
36 ]
37
38 node
39 [
40 id 1
41 graphics
42 [
43 w 50.6
44 h 26
45 type "rectangle"
46 fill "#FFFFFF"
47 fill2 "#FFFFFF"
48 outline "#000000"
49 ]
50 LabelGraphics
51 [
52 text "false"
53 outline "#000000"
54 fill "#FFFFFF"
55 fontSize 16
56 fontName "Monospace"
57 autoSizePolicy "node_width"
58 anchor "t"
59 borderDistance 0.0
60 ]
61 LabelGraphics
62 [
63 text "
64 "
65 fontSize 14
66 fontName "Consolas"
67 alignment "left"
68 anchor "tl"
69 borderDistance 6
70 ]
71 ]
72
73 node
74 [
75 id 2
76 graphics
77 [
78 w 115.50000000000001
79 h 40
80 type "rectangle"
81 fill "#FFFFFF"
82 fill2 "#FFFFFF"
83 outline "#000000"
84 ]
85 LabelGraphics
86 [
87 text "null"
88 outline "#000000"
89 fill "#FFFFFF"
90 fontSize 16
91 fontName "Monospace"
92 autoSizePolicy "node_width"
93 anchor "t"
94 borderDistance 0.0
95 ]
96 LabelGraphics
97 [
98 text "
99 Element class
100 "
101 fontSize 14
102 fontName "Consolas"
103 alignment "left"
104 anchor "tl"
105 borderDistance 6
106 ]
107 ]
108
109 node
110 [
111 id 3
112 graphics
113 [
114 w 115.50000000000001
115 h 40
116 type "rectangle"
117 fill "#FFFFFF"
118 fill2 "#FFFFFF"
119 outline "#000000"
120 ]
121 LabelGraphics
122 [
123 text "null"
124 outline "#000000"
125 fill "#FFFFFF"
126 fontSize 16
127 fontName "Monospace"
128 autoSizePolicy "node_width"
129 anchor "t"
130 borderDistance 0.0
131 ]
132 LabelGraphics
133 [
134 text "
135 Element class
136 "
137 fontSize 14
138 fontName "Consolas"
139 alignment "left"
140 anchor "tl"
141 borderDistance 6
142 ]
143 ]
144
145 node
146 [
147 id 4
148 graphics
149 [
150 w 107.80000000000001
151 h 40
152 type "rectangle"
153 fill "#FFFFFF"
154 fill2 "#FFFFFF"
155 outline "#000000"
156 ]
157 LabelGraphics
158 [
159 text "null"
160 outline "#000000"
161 fill "#FFFFFF"
162 fontSize 16
163 fontName "Monospace"
164 autoSizePolicy "node_width"
165 anchor "t"
166 borderDistance 0.0
167 ]
168 LabelGraphics
169 [
170 text "
171 Object class
172 "
173 fontSize 14
174 fontName "Consolas"
175 alignment "left"
176 anchor "tl"
177 borderDistance 6
178 ]
179 ]
180
181 node
182 [
183 id 5
184 graphics
185 [
186 w 115.50000000000001
187 h 40
188 type "rectangle"
189 fill "#FFFFFF"
190 fill2 "#FFFFFF"
191 outline "#000000"
192 ]
193 LabelGraphics
194 [
195 text "null"
196 outline "#000000"
197 fill "#FFFFFF"
198 fontSize 16
199 fontName "Monospace"
200 autoSizePolicy "node_width"
201 anchor "t"
202 borderDistance 0.0
203 ]
204 LabelGraphics
205 [
206 text "
207 Element class
208 "
209 fontSize 14
210 fontName "Consolas"
211 alignment "left"
212 anchor "tl"
213 borderDistance 6
214 ]
215 ]
216
217 node
218 [
219 id 6
220 graphics
221 [
222 w 107.80000000000001
223 h 40
224 type "rectangle"
225 fill "#FFFFFF"
226 fill2 "#FFFFFF"
227 outline "#000000"
228 ]
229 LabelGraphics
230 [
231 text "null"
232 outline "#000000"
233 fill "#FFFFFF"
234 fontSize 16
235 fontName "Monospace"
236 autoSizePolicy "node_width"
237 anchor "t"
238 borderDistance 0.0
239 ]
240 LabelGraphics
241 [
242 text "
243 Object class
244 "
245 fontSize 14
246 fontName "Consolas"
247 alignment "left"
248 anchor "tl"
249 borderDistance 6
250 ]
251 ]
252
253 node
254 [
255 id 7
256 graphics
257 [
258 w 115.50000000000001
259 h 40
260 type "rectangle"
261 fill "#FFFFFF"
262 fill2 "#FFFFFF"
263 outline "#000000"
264 ]
265 LabelGraphics
266 [
267 text "null"
268 outline "#000000"
269 fill "#FFFFFF"
270 fontSize 16
271 fontName "Monospace"
272 autoSizePolicy "node_width"
273 anchor "t"
274 borderDistance 0.0
275 ]
276 LabelGraphics
277 [
278 text "
279 Element class
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 107.80000000000001
295 h 40
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 Object class
316 "
317 fontSize 14
318 fontName "Consolas"
319 alignment "left"
320 anchor "tl"
321 borderDistance 6
322 ]
323 ]
324
325 node
326 [
327 id 9
328 graphics
329 [
330 w 115.50000000000001
331 h 40
332 type "rectangle"
333 fill "#FFFFFF"
334 fill2 "#FFFFFF"
335 outline "#000000"
336 ]
337 LabelGraphics
338 [
339 text "null"
340 outline "#000000"
341 fill "#FFFFFF"
342 fontSize 16
343 fontName "Monospace"
344 autoSizePolicy "node_width"
345 anchor "t"
346 borderDistance 0.0
347 ]
348 LabelGraphics
349 [
350 text "
351 Element class
352 "
353 fontSize 14
354 fontName "Consolas"
355 alignment "left"
356 anchor "tl"
357 borderDistance 6
358 ]
359 ]
360
361 node
362 [
363 id 10
364 graphics
365 [
366 w 107.80000000000001
367 h 40
368 type "rectangle"
369 fill "#FFFFFF"
370 fill2 "#FFFFFF"
371 outline "#000000"
372 ]
373 LabelGraphics
374 [
375 text "null"
376 outline "#000000"
377 fill "#FFFFFF"
378 fontSize 16
379 fontName "Monospace"
380 autoSizePolicy "node_width"
381 anchor "t"
382 borderDistance 0.0
383 ]
384 LabelGraphics
385 [
386 text "
387 Object class
388 "
389 fontSize 14
390 fontName "Consolas"
391 alignment "left"
392 anchor "tl"
393 borderDistance 6
394 ]
395 ]
396
397 node
398 [
399 id 11
400 graphics
401 [
402 w 115.50000000000001
403 h 40
404 type "rectangle"
405 fill "#FFFFFF"
406 fill2 "#FFFFFF"
407 outline "#000000"
408 ]
409 LabelGraphics
410 [
411 text "null"
412 outline "#000000"
413 fill "#FFFFFF"
414 fontSize 16
415 fontName "Monospace"
416 autoSizePolicy "node_width"
417 anchor "t"
418 borderDistance 0.0
419 ]
420 LabelGraphics
421 [
422 text "
423 Element class
424 "
425 fontSize 14
426 fontName "Consolas"
427 alignment "left"
428 anchor "tl"
429 borderDistance 6
430 ]
431 ]
432
433 node
434 [
435 id 12
436 graphics
437 [
438 w 112.2
439 h 26
440 type "rectangle"
441 fill "#FFFFFF"
442 fill2 "#FFFFFF"
443 outline "#000000"
444 ]
445 LabelGraphics
446 [
447 text "New Integers"
448 outline "#000000"
449 fill "#FFFFFF"
450 fontSize 16
451 fontName "Monospace"
452 autoSizePolicy "node_width"
453 anchor "t"
454 borderDistance 0.0
455 ]
456 LabelGraphics
457 [
458 text "
459 "
460 fontSize 14
461 fontName "Consolas"
462 alignment "left"
463 anchor "tl"
464 borderDistance 6
465 ]
466 ]
467
468 node
469 [
470 id 13
471 graphics
472 [
473 w 85.80000000000001
474 h 26
475 type "rectangle"
476 fill "#FFFFFF"
477 fill2 "#FFFFFF"
478 outline "#000000"
479 ]
480 LabelGraphics
481 [
482 text "New Reals"
483 outline "#000000"
484 fill "#FFFFFF"
485 fontSize 16
486 fontName "Monospace"
487 autoSizePolicy "node_width"
488 anchor "t"
489 borderDistance 0.0
490 ]
491 LabelGraphics
492 [
493 text "
494 "
495 fontSize 14
496 fontName "Consolas"
497 alignment "left"
498 anchor "tl"
499 borderDistance 6
500 ]
501 ]
502
503 node
504 [
505 id 14
506 graphics
507 [
508 w 103.4
509 h 26
510 type "rectangle"
511 fill "#FFFFFF"
512 fill2 "#FFFFFF"
513 outline "#000000"
514 ]
515 LabelGraphics
516 [
517 text "New Strings"
518 outline "#000000"
519 fill "#FFFFFF"
520 fontSize 16
521 fontName "Monospace"
522 autoSizePolicy "node_width"
523 anchor "t"
524 borderDistance 0.0
525 ]
526 LabelGraphics
527 [
528 text "
529 "
530 fontSize 14
531 fontName "Consolas"
532 alignment "left"
533 anchor "tl"
534 borderDistance 6
535 ]
536 ]
537
538 node
539 [
540 id 15
541 graphics
542 [
543 w 103.4
544 h 26
545 type "rectangle"
546 fill "#FFFFFF"
547 fill2 "#FFFFFF"
548 outline "#000000"
549 ]
550 LabelGraphics
551 [
552 text "New Objects"
553 outline "#000000"
554 fill "#FFFFFF"
555 fontSize 16
556 fontName "Monospace"
557 autoSizePolicy "node_width"
558 anchor "t"
559 borderDistance 0.0
560 ]
561 LabelGraphics
562 [
563 text "
564 "
565 fontSize 14
566 fontName "Consolas"
567 alignment "left"
568 anchor "tl"
569 borderDistance 6
570 ]
571 ]
572 edge
573 [
574 source 3
575 target 4
576 graphics
577 [
578 fill "#000000"
579 width 3
580 targetArrow "standard"
581 ]
582 LabelGraphics
583 [
584 text "value reference Element"
585 fontSize 14
586 fontName "Consolas"
587 configuration "AutoFlippingLabel"
588 model "six_pos"
589 position "thead"
590 ]
591 ]
592 edge
593 [
594 source 5
595 target 6
596 graphics
597 [
598 fill "#000000"
599 width 3
600 targetArrow "standard"
601 ]
602 LabelGraphics
603 [
604 text "value reference Element"
605 fontSize 14
606 fontName "Consolas"
607 configuration "AutoFlippingLabel"
608 model "six_pos"
609 position "thead"
610 ]
611 ]
612 edge
613 [
614 source 7
615 target 8
616 graphics
617 [
618 fill "#000000"
619 width 3
620 targetArrow "standard"
621 ]
622 LabelGraphics
623 [
624 text "value reference Element"
625 fontSize 14
626 fontName "Consolas"
627 configuration "AutoFlippingLabel"
628 model "six_pos"
629 position "thead"
630 ]
631 ]
632 edge
633 [
634 source 9
635 target 10
636 graphics
637 [
638 fill "#000000"
639 width 3
640 targetArrow "standard"
641 ]
642 LabelGraphics
643 [
644 text "value reference Element"
645 fontSize 14
646 fontName "Consolas"
647 configuration "AutoFlippingLabel"
648 model "six_pos"
649 position "thead"
650 ]
651 ]
652 edge
653 [
654 source 2
655 target 3
656 graphics
657 [
658 fill "#000000"
659 width 3
660 targetArrow "standard"
661 ]
662 LabelGraphics
663 [
664 text "next reference Element"
665 fontSize 14
666 fontName "Consolas"
667 configuration "AutoFlippingLabel"
668 model "six_pos"
669 position "thead"
670 ]
671 ]
672 edge
673 [
674 source 3
675 target 5
676 graphics
677 [
678 fill "#000000"
679 width 3
680 targetArrow "standard"
681 ]
682 LabelGraphics
683 [
684 text "next reference Element"
685 fontSize 14
686 fontName "Consolas"
687 configuration "AutoFlippingLabel"
688 model "six_pos"
689 position "thead"
690 ]
691 ]
692 edge
693 [
694 source 5
695 target 7
696 graphics
697 [
698 fill "#000000"
699 width 3
700 targetArrow "standard"
701 ]
702 LabelGraphics
703 [
704 text "next reference Element"
705 fontSize 14
706 fontName "Consolas"
707 configuration "AutoFlippingLabel"
708 model "six_pos"
709 position "thead"
710 ]
711 ]
712 edge
713 [
714 source 7
715 target 9
716 graphics
717 [
718 fill "#000000"
719 width 3
720 targetArrow "standard"
721 ]
722 LabelGraphics
723 [
724 text "next reference Element"
725 fontSize 14
726 fontName "Consolas"
727 configuration "AutoFlippingLabel"
728 model "six_pos"
729 position "thead"
730 ]
731 ]
732 edge
733 [
734 source 9
735 target 11
736 graphics
737 [
738 fill "#000000"
739 width 3
740 targetArrow "standard"
741 ]
742 LabelGraphics
743 [
744 text "next reference Element"
745 fontSize 14
746 fontName "Consolas"
747 configuration "AutoFlippingLabel"
748 model "six_pos"
749 position "thead"
750 ]
751 ]
752]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleNEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleNEIGHBOURHOOD.gml
new file mode 100644
index 00000000..125acc5c
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/cycleNEIGHBOURHOOD.gml
@@ -0,0 +1,210 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 152.9
9 h 40
10 type "roundrectangle"
11 fill "#FFCC00"
12 outline "#000000"
13 ]
14 LabelGraphics
15 [
16 ]
17 LabelGraphics
18 [
19 text "[Element class] (1)"
20 fontSize 14
21 fontName "Dialog"
22 ]
23 ]
24 node
25 [
26 id 1
27 graphics
28 [
29 w 145.20000000000002
30 h 40
31 type "roundrectangle"
32 fill "#FFCC00"
33 outline "#000000"
34 ]
35 LabelGraphics
36 [
37 ]
38 LabelGraphics
39 [
40 text "[Object class] (4)"
41 fontSize 14
42 fontName "Dialog"
43 ]
44 ]
45 node
46 [
47 id 2
48 graphics
49 [
50 w 152.9
51 h 40
52 type "roundrectangle"
53 fill "#FFCC00"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 ]
59 LabelGraphics
60 [
61 text "[Element class] (1)"
62 fontSize 14
63 fontName "Dialog"
64 ]
65 ]
66 node
67 [
68 id 3
69 graphics
70 [
71 w 152.9
72 h 40
73 type "roundrectangle"
74 fill "#FFCC00"
75 outline "#000000"
76 ]
77 LabelGraphics
78 [
79 ]
80 LabelGraphics
81 [
82 text "[Element class] (4)"
83 fontSize 14
84 fontName "Dialog"
85 ]
86 ]
87 edge
88 [
89 source 2
90 target 3
91 label "next reference Element"
92 graphics
93 [
94 fill "#000000"
95 targetArrow "standard"
96 Line
97 [
98 ]
99 ]
100 LabelGraphics
101 [
102 text "next reference Element"
103 fontSize 12
104 fontName "Dialog"
105 configuration "AutoFlippingLabel"
106 model "six_pos"
107 position "head"
108 ]
109 LabelGraphics
110 [
111 text "[1]"
112 fontSize 12
113 fontName "Dialog"
114 configuration "AutoFlippingLabel"
115 model "six_pos"
116 position "stail"
117 ]
118 LabelGraphics
119 [
120 text "[1, 0, 0]"
121 fontSize 12
122 fontName "Dialog"
123 configuration "AutoFlippingLabel"
124 model "six_pos"
125 position "ttail"
126 ]
127 ]
128 edge
129 [
130 source 3
131 target 3
132 label "next reference Element"
133 graphics
134 [
135 fill "#000000"
136 targetArrow "standard"
137 Line
138 [
139 ]
140 ]
141 LabelGraphics
142 [
143 text "next reference Element"
144 fontSize 12
145 fontName "Dialog"
146 configuration "AutoFlippingLabel"
147 model "six_pos"
148 position "head"
149 ]
150 LabelGraphics
151 [
152 text "[1, 1, 1]"
153 fontSize 12
154 fontName "Dialog"
155 configuration "AutoFlippingLabel"
156 model "six_pos"
157 position "stail"
158 ]
159 LabelGraphics
160 [
161 text "[1, 1, 0]"
162 fontSize 12
163 fontName "Dialog"
164 configuration "AutoFlippingLabel"
165 model "six_pos"
166 position "ttail"
167 ]
168 ]
169 edge
170 [
171 source 3
172 target 1
173 label "value reference Element"
174 graphics
175 [
176 fill "#000000"
177 targetArrow "standard"
178 Line
179 [
180 ]
181 ]
182 LabelGraphics
183 [
184 text "value reference Element"
185 fontSize 12
186 fontName "Dialog"
187 configuration "AutoFlippingLabel"
188 model "six_pos"
189 position "head"
190 ]
191 LabelGraphics
192 [
193 text "[1, 1, 1]"
194 fontSize 12
195 fontName "Dialog"
196 configuration "AutoFlippingLabel"
197 model "six_pos"
198 position "stail"
199 ]
200 LabelGraphics
201 [
202 text "[1]"
203 fontSize 12
204 fontName "Dialog"
205 configuration "AutoFlippingLabel"
206 model "six_pos"
207 position "ttail"
208 ]
209 ]
210]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModel.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModel.gml
new file mode 100644
index 00000000..cd7c028b
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModel.gml
@@ -0,0 +1,1891 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label "true"
12 graphics
13 [
14 x 832.9
15 y 301.0
16 w 41.800000000000004
17 h 26.0
18 type "rectangle"
19 fill "#FFFFFF"
20 fill2 "#FFFFFF"
21 outline "#000000"
22 ]
23 LabelGraphics
24 [
25 text "true"
26 outline "#000000"
27 fill "#FFFFFF"
28 fontSize 16
29 fontName "Monospace"
30 autoSizePolicy "node_width"
31 anchor "t"
32 borderDistance 0.0
33 ]
34 LabelGraphics
35 [
36 text "
37 "
38 fontSize 14
39 fontName "Consolas"
40 alignment "left"
41 anchor "tl"
42 borderDistance 6.0
43 ]
44 ]
45 node
46 [
47 id 1
48 label "false"
49 graphics
50 [
51 x 740.3
52 y 301.0
53 w 50.6
54 h 26.0
55 type "rectangle"
56 fill "#FFFFFF"
57 fill2 "#FFFFFF"
58 outline "#000000"
59 ]
60 LabelGraphics
61 [
62 text "false"
63 outline "#000000"
64 fill "#FFFFFF"
65 fontSize 16
66 fontName "Monospace"
67 autoSizePolicy "node_width"
68 anchor "t"
69 borderDistance 0.0
70 ]
71 LabelGraphics
72 [
73 text "
74 "
75 fontSize 14
76 fontName "Consolas"
77 alignment "left"
78 anchor "tl"
79 borderDistance 6.0
80 ]
81 ]
82 node
83 [
84 id 2
85 label "null"
86 graphics
87 [
88 x 401.79999999999995
89 y 546.0
90 w 184.8
91 h 54.0
92 type "rectangle"
93 fill "#FFFFFF"
94 fill2 "#FFFFFF"
95 outline "#000000"
96 ]
97 LabelGraphics
98 [
99 text "null"
100 outline "#000000"
101 fill "#FFFFFF"
102 fontSize 16
103 fontName "Monospace"
104 autoSizePolicy "node_width"
105 anchor "t"
106 borderDistance 0.0
107 ]
108 LabelGraphics
109 [
110 text "
111 Statechart class
112 CompositeElement class
113 "
114 fontSize 14
115 fontName "Consolas"
116 alignment "left"
117 anchor "tl"
118 borderDistance 6.0
119 ]
120 ]
121 node
122 [
123 id 3
124 label "null"
125 graphics
126 [
127 x 379.29999999999995
128 y 356.0
129 w 107.80000000000001
130 h 40.0
131 type "rectangle"
132 fill "#FFFFFF"
133 fill2 "#FFFFFF"
134 outline "#000000"
135 ]
136 LabelGraphics
137 [
138 text "null"
139 outline "#000000"
140 fill "#FFFFFF"
141 fontSize 16
142 fontName "Monospace"
143 autoSizePolicy "node_width"
144 anchor "t"
145 borderDistance 0.0
146 ]
147 LabelGraphics
148 [
149 text "
150 Region class
151 "
152 fontSize 14
153 fontName "Consolas"
154 alignment "left"
155 anchor "tl"
156 borderDistance 6.0
157 ]
158 ]
159 node
160 [
161 id 4
162 label "null"
163 graphics
164 [
165 x 522.8
166 y 412.0
167 w 146.3
168 h 68.0
169 type "rectangle"
170 fill "#FFFFFF"
171 fill2 "#FFFFFF"
172 outline "#000000"
173 ]
174 LabelGraphics
175 [
176 text "null"
177 outline "#000000"
178 fill "#FFFFFF"
179 fontSize 16
180 fontName "Monospace"
181 autoSizePolicy "node_width"
182 anchor "t"
183 borderDistance 0.0
184 ]
185 LabelGraphics
186 [
187 text "
188 Pseudostate class
189 Vertex class
190 Entry class
191 "
192 fontSize 14
193 fontName "Consolas"
194 alignment "left"
195 anchor "tl"
196 borderDistance 6.0
197 ]
198 ]
199 node
200 [
201 id 5
202 label "null"
203 graphics
204 [
205 x 413.8
206 y 251.0
207 w 138.60000000000002
208 h 40.0
209 type "rectangle"
210 fill "#FFFFFF"
211 fill2 "#FFFFFF"
212 outline "#000000"
213 ]
214 LabelGraphics
215 [
216 text "null"
217 outline "#000000"
218 fill "#FFFFFF"
219 fontSize 16
220 fontName "Monospace"
221 autoSizePolicy "node_width"
222 anchor "t"
223 borderDistance 0.0
224 ]
225 LabelGraphics
226 [
227 text "
228 Transition class
229 "
230 fontSize 14
231 fontName "Consolas"
232 alignment "left"
233 anchor "tl"
234 borderDistance 6.0
235 ]
236 ]
237 node
238 [
239 id 6
240 label "null"
241 graphics
242 [
243 x 300.8
244 y 148.0
245 w 184.8
246 h 82.0
247 type "rectangle"
248 fill "#FFFFFF"
249 fill2 "#FFFFFF"
250 outline "#000000"
251 ]
252 LabelGraphics
253 [
254 text "null"
255 outline "#000000"
256 fill "#FFFFFF"
257 fontSize 16
258 fontName "Monospace"
259 autoSizePolicy "node_width"
260 anchor "t"
261 borderDistance 0.0
262 ]
263 LabelGraphics
264 [
265 text "
266 Vertex class
267 State class
268 RegularState class
269 CompositeElement class
270 "
271 fontSize 14
272 fontName "Consolas"
273 alignment "left"
274 anchor "tl"
275 borderDistance 6.0
276 ]
277 ]
278 node
279 [
280 id 7
281 label "null"
282 graphics
283 [
284 x 168.8
285 y 34.0
286 w 138.60000000000002
287 h 40.0
288 type "rectangle"
289 fill "#FFFFFF"
290 fill2 "#FFFFFF"
291 outline "#000000"
292 ]
293 LabelGraphics
294 [
295 text "null"
296 outline "#000000"
297 fill "#FFFFFF"
298 fontSize 16
299 fontName "Monospace"
300 autoSizePolicy "node_width"
301 anchor "t"
302 borderDistance 0.0
303 ]
304 LabelGraphics
305 [
306 text "
307 Transition class
308 "
309 fontSize 14
310 fontName "Consolas"
311 alignment "left"
312 anchor "tl"
313 borderDistance 6.0
314 ]
315 ]
316 node
317 [
318 id 8
319 label "null"
320 graphics
321 [
322 x 233.3
323 y 231.0
324 w 184.8
325 h 82.0
326 type "rectangle"
327 fill "#FFFFFF"
328 fill2 "#FFFFFF"
329 outline "#000000"
330 ]
331 LabelGraphics
332 [
333 text "null"
334 outline "#000000"
335 fill "#FFFFFF"
336 fontSize 16
337 fontName "Monospace"
338 autoSizePolicy "node_width"
339 anchor "t"
340 borderDistance 0.0
341 ]
342 LabelGraphics
343 [
344 text "
345 Vertex class
346 State class
347 RegularState class
348 CompositeElement class
349 "
350 fontSize 14
351 fontName "Consolas"
352 alignment "left"
353 anchor "tl"
354 borderDistance 6.0
355 ]
356 ]
357 node
358 [
359 id 9
360 label "null"
361 graphics
362 [
363 x 309.3
364 y 20.0
365 w 138.60000000000002
366 h 40.0
367 type "rectangle"
368 fill "#FFFFFF"
369 fill2 "#FFFFFF"
370 outline "#000000"
371 ]
372 LabelGraphics
373 [
374 text "null"
375 outline "#000000"
376 fill "#FFFFFF"
377 fontSize 16
378 fontName "Monospace"
379 autoSizePolicy "node_width"
380 anchor "t"
381 borderDistance 0.0
382 ]
383 LabelGraphics
384 [
385 text "
386 Transition class
387 "
388 fontSize 14
389 fontName "Consolas"
390 alignment "left"
391 anchor "tl"
392 borderDistance 6.0
393 ]
394 ]
395 node
396 [
397 id 10
398 label "null"
399 graphics
400 [
401 x 100.80000000000001
402 y 148.0
403 w 138.60000000000002
404 h 40.0
405 type "rectangle"
406 fill "#FFFFFF"
407 fill2 "#FFFFFF"
408 outline "#000000"
409 ]
410 LabelGraphics
411 [
412 text "null"
413 outline "#000000"
414 fill "#FFFFFF"
415 fontSize 16
416 fontName "Monospace"
417 autoSizePolicy "node_width"
418 anchor "t"
419 borderDistance 0.0
420 ]
421 LabelGraphics
422 [
423 text "
424 Transition class
425 "
426 fontSize 14
427 fontName "Consolas"
428 alignment "left"
429 anchor "tl"
430 borderDistance 6.0
431 ]
432 ]
433 node
434 [
435 id 11
436 label "null"
437 graphics
438 [
439 x 69.30000000000001
440 y 395.0
441 w 138.60000000000002
442 h 40.0
443 type "rectangle"
444 fill "#FFFFFF"
445 fill2 "#FFFFFF"
446 outline "#000000"
447 ]
448 LabelGraphics
449 [
450 text "null"
451 outline "#000000"
452 fill "#FFFFFF"
453 fontSize 16
454 fontName "Monospace"
455 autoSizePolicy "node_width"
456 anchor "t"
457 borderDistance 0.0
458 ]
459 LabelGraphics
460 [
461 text "
462 Transition class
463 "
464 fontSize 14
465 fontName "Consolas"
466 alignment "left"
467 anchor "tl"
468 borderDistance 6.0
469 ]
470 ]
471 node
472 [
473 id 12
474 label "null"
475 graphics
476 [
477 x 428.3
478 y 86.0
479 w 138.60000000000002
480 h 40.0
481 type "rectangle"
482 fill "#FFFFFF"
483 fill2 "#FFFFFF"
484 outline "#000000"
485 ]
486 LabelGraphics
487 [
488 text "null"
489 outline "#000000"
490 fill "#FFFFFF"
491 fontSize 16
492 fontName "Monospace"
493 autoSizePolicy "node_width"
494 anchor "t"
495 borderDistance 0.0
496 ]
497 LabelGraphics
498 [
499 text "
500 Transition class
501 "
502 fontSize 14
503 fontName "Consolas"
504 alignment "left"
505 anchor "tl"
506 borderDistance 6.0
507 ]
508 ]
509 node
510 [
511 id 13
512 label "null"
513 graphics
514 [
515 x 231.8
516 y 355.0
517 w 184.8
518 h 82.0
519 type "rectangle"
520 fill "#FFFFFF"
521 fill2 "#FFFFFF"
522 outline "#000000"
523 ]
524 LabelGraphics
525 [
526 text "null"
527 outline "#000000"
528 fill "#FFFFFF"
529 fontSize 16
530 fontName "Monospace"
531 autoSizePolicy "node_width"
532 anchor "t"
533 borderDistance 0.0
534 ]
535 LabelGraphics
536 [
537 text "
538 Vertex class
539 State class
540 RegularState class
541 CompositeElement class
542 "
543 fontSize 14
544 fontName "Consolas"
545 alignment "left"
546 anchor "tl"
547 borderDistance 6.0
548 ]
549 ]
550 node
551 [
552 id 14
553 label "null"
554 graphics
555 [
556 x 298.3
557 y 420.0
558 w 138.60000000000002
559 h 40.0
560 type "rectangle"
561 fill "#FFFFFF"
562 fill2 "#FFFFFF"
563 outline "#000000"
564 ]
565 LabelGraphics
566 [
567 text "null"
568 outline "#000000"
569 fill "#FFFFFF"
570 fontSize 16
571 fontName "Monospace"
572 autoSizePolicy "node_width"
573 anchor "t"
574 borderDistance 0.0
575 ]
576 LabelGraphics
577 [
578 text "
579 Transition class
580 "
581 fontSize 14
582 fontName "Consolas"
583 alignment "left"
584 anchor "tl"
585 borderDistance 6.0
586 ]
587 ]
588 node
589 [
590 id 15
591 label "null"
592 graphics
593 [
594 x 194.8
595 y 502.0
596 w 184.8
597 h 82.0
598 type "rectangle"
599 fill "#FFFFFF"
600 fill2 "#FFFFFF"
601 outline "#000000"
602 ]
603 LabelGraphics
604 [
605 text "null"
606 outline "#000000"
607 fill "#FFFFFF"
608 fontSize 16
609 fontName "Monospace"
610 autoSizePolicy "node_width"
611 anchor "t"
612 borderDistance 0.0
613 ]
614 LabelGraphics
615 [
616 text "
617 Vertex class
618 State class
619 RegularState class
620 CompositeElement class
621 "
622 fontSize 14
623 fontName "Consolas"
624 alignment "left"
625 anchor "tl"
626 borderDistance 6.0
627 ]
628 ]
629 node
630 [
631 id 16
632 label "null"
633 graphics
634 [
635 x 100.30000000000001
636 y 293.0
637 w 138.60000000000002
638 h 40.0
639 type "rectangle"
640 fill "#FFFFFF"
641 fill2 "#FFFFFF"
642 outline "#000000"
643 ]
644 LabelGraphics
645 [
646 text "null"
647 outline "#000000"
648 fill "#FFFFFF"
649 fontSize 16
650 fontName "Monospace"
651 autoSizePolicy "node_width"
652 anchor "t"
653 borderDistance 0.0
654 ]
655 LabelGraphics
656 [
657 text "
658 Transition class
659 "
660 fontSize 14
661 fontName "Consolas"
662 alignment "left"
663 anchor "tl"
664 borderDistance 6.0
665 ]
666 ]
667 node
668 [
669 id 17
670 label "null"
671 graphics
672 [
673 x 576.8
674 y 240.0
675 w 184.8
676 h 82.0
677 type "rectangle"
678 fill "#FFFFFF"
679 fill2 "#FFFFFF"
680 outline "#000000"
681 ]
682 LabelGraphics
683 [
684 text "null"
685 outline "#000000"
686 fill "#FFFFFF"
687 fontSize 16
688 fontName "Monospace"
689 autoSizePolicy "node_width"
690 anchor "t"
691 borderDistance 0.0
692 ]
693 LabelGraphics
694 [
695 text "
696 Vertex class
697 State class
698 RegularState class
699 CompositeElement class
700 "
701 fontSize 14
702 fontName "Consolas"
703 alignment "left"
704 anchor "tl"
705 borderDistance 6.0
706 ]
707 ]
708 node
709 [
710 id 18
711 label "New Integers"
712 graphics
713 [
714 x 771.1
715 y 13.0
716 w 112.2
717 h 26.0
718 type "rectangle"
719 fill "#FFFFFF"
720 fill2 "#FFFFFF"
721 outline "#000000"
722 ]
723 LabelGraphics
724 [
725 text "New Integers"
726 outline "#000000"
727 fill "#FFFFFF"
728 fontSize 16
729 fontName "Monospace"
730 autoSizePolicy "node_width"
731 anchor "t"
732 borderDistance 0.0
733 ]
734 LabelGraphics
735 [
736 text "
737 "
738 fontSize 14
739 fontName "Consolas"
740 alignment "left"
741 anchor "tl"
742 borderDistance 6.0
743 ]
744 ]
745 node
746 [
747 id 19
748 label "New Reals"
749 graphics
750 [
751 x 757.9
752 y 229.0
753 w 85.80000000000001
754 h 26.0
755 type "rectangle"
756 fill "#FFFFFF"
757 fill2 "#FFFFFF"
758 outline "#000000"
759 ]
760 LabelGraphics
761 [
762 text "New Reals"
763 outline "#000000"
764 fill "#FFFFFF"
765 fontSize 16
766 fontName "Monospace"
767 autoSizePolicy "node_width"
768 anchor "t"
769 borderDistance 0.0
770 ]
771 LabelGraphics
772 [
773 text "
774 "
775 fontSize 14
776 fontName "Consolas"
777 alignment "left"
778 anchor "tl"
779 borderDistance 6.0
780 ]
781 ]
782 node
783 [
784 id 20
785 label "New Strings"
786 graphics
787 [
788 x 766.7
789 y 85.0
790 w 103.4
791 h 26.0
792 type "rectangle"
793 fill "#FFFFFF"
794 fill2 "#FFFFFF"
795 outline "#000000"
796 ]
797 LabelGraphics
798 [
799 text "New Strings"
800 outline "#000000"
801 fill "#FFFFFF"
802 fontSize 16
803 fontName "Monospace"
804 autoSizePolicy "node_width"
805 anchor "t"
806 borderDistance 0.0
807 ]
808 LabelGraphics
809 [
810 text "
811 "
812 fontSize 14
813 fontName "Consolas"
814 alignment "left"
815 anchor "tl"
816 borderDistance 6.0
817 ]
818 ]
819 node
820 [
821 id 21
822 label "New Objects"
823 graphics
824 [
825 x 766.7
826 y 157.0
827 w 103.4
828 h 26.0
829 type "rectangle"
830 fill "#FFFFFF"
831 fill2 "#FFFFFF"
832 outline "#000000"
833 ]
834 LabelGraphics
835 [
836 text "New Objects"
837 outline "#000000"
838 fill "#FFFFFF"
839 fontSize 16
840 fontName "Monospace"
841 autoSizePolicy "node_width"
842 anchor "t"
843 borderDistance 0.0
844 ]
845 LabelGraphics
846 [
847 text "
848 "
849 fontSize 14
850 fontName "Consolas"
851 alignment "left"
852 anchor "tl"
853 borderDistance 6.0
854 ]
855 ]
856 edge
857 [
858 source 6
859 target 5
860 label "incomingTransitions reference Vertex"
861 graphics
862 [
863 fill "#000000"
864 targetArrow "standard"
865 ]
866 edgeAnchor
867 [
868 xSource 0.08032754342061545
869 xTarget 0.10710339122748727
870 ]
871 LabelGraphics
872 [
873 text "incomingTransitions reference Vertex"
874 fontSize 14
875 fontName "Consolas"
876 configuration "AutoFlippingLabel"
877 contentWidth 281.1015625
878 contentHeight 18.0
879 model "six_pos"
880 position "thead"
881 ]
882 ]
883 edge
884 [
885 source 6
886 target 9
887 label "incomingTransitions reference Vertex"
888 graphics
889 [
890 fill "#000000"
891 targetArrow "standard"
892 ]
893 edgeAnchor
894 [
895 xSource -0.05423173536706701
896 xTarget -0.07230898048942268
897 ]
898 LabelGraphics
899 [
900 text "incomingTransitions reference Vertex"
901 fontSize 14
902 fontName "Consolas"
903 configuration "AutoFlippingLabel"
904 contentWidth 281.1015625
905 contentHeight 18.0
906 model "six_pos"
907 position "thead"
908 ]
909 ]
910 edge
911 [
912 source 6
913 target 16
914 label "incomingTransitions reference Vertex"
915 graphics
916 [
917 fill "#000000"
918 targetArrow "standard"
919 ]
920 edgeAnchor
921 [
922 xSource 0.09234115756532207
923 xTarget 0.12312154342042972
924 yTarget 2.2204460492503132E-17
925 ]
926 LabelGraphics
927 [
928 text "incomingTransitions reference Vertex"
929 fontSize 14
930 fontName "Consolas"
931 configuration "AutoFlippingLabel"
932 contentWidth 281.1015625
933 contentHeight 18.0
934 model "six_pos"
935 position "thead"
936 ]
937 ]
938 edge
939 [
940 source 8
941 target 7
942 label "incomingTransitions reference Vertex"
943 graphics
944 [
945 fill "#000000"
946 targetArrow "standard"
947 ]
948 edgeAnchor
949 [
950 xSource -0.056939112509911224
951 xTarget -0.07591881667988142
952 ]
953 LabelGraphics
954 [
955 text "incomingTransitions reference Vertex"
956 fontSize 14
957 fontName "Consolas"
958 configuration "AutoFlippingLabel"
959 contentWidth 281.1015625
960 contentHeight 18.0
961 model "six_pos"
962 position "thead"
963 ]
964 ]
965 edge
966 [
967 source 8
968 target 14
969 label "incomingTransitions reference Vertex"
970 graphics
971 [
972 fill "#000000"
973 targetArrow "standard"
974 ]
975 edgeAnchor
976 [
977 xSource 0.05722329714569708
978 xTarget 0.07629772952759617
979 ]
980 LabelGraphics
981 [
982 text "incomingTransitions reference Vertex"
983 fontSize 14
984 fontName "Consolas"
985 configuration "AutoFlippingLabel"
986 contentWidth 281.1015625
987 contentHeight 18.0
988 model "six_pos"
989 position "thead"
990 ]
991 ]
992 edge
993 [
994 source 13
995 target 10
996 label "incomingTransitions reference Vertex"
997 graphics
998 [
999 fill "#000000"
1000 targetArrow "standard"
1001 ]
1002 edgeAnchor
1003 [
1004 xSource -0.06403825675031763
1005 xTarget -0.08538434233375684
1006 ]
1007 LabelGraphics
1008 [
1009 text "incomingTransitions reference Vertex"
1010 fontSize 14
1011 fontName "Consolas"
1012 configuration "AutoFlippingLabel"
1013 contentWidth 281.1015625
1014 contentHeight 18.0
1015 model "six_pos"
1016 position "thead"
1017 ]
1018 ]
1019 edge
1020 [
1021 source 15
1022 target 11
1023 label "incomingTransitions reference Vertex"
1024 graphics
1025 [
1026 fill "#000000"
1027 targetArrow "standard"
1028 ]
1029 edgeAnchor
1030 [
1031 xSource -0.0834051215952323
1032 xTarget -0.11120682879364265
1033 ]
1034 LabelGraphics
1035 [
1036 text "incomingTransitions reference Vertex"
1037 fontSize 14
1038 fontName "Consolas"
1039 configuration "AutoFlippingLabel"
1040 contentWidth 281.1015625
1041 contentHeight 18.0
1042 model "six_pos"
1043 position "thead"
1044 ]
1045 ]
1046 edge
1047 [
1048 source 17
1049 target 12
1050 label "incomingTransitions reference Vertex"
1051 graphics
1052 [
1053 fill "#000000"
1054 targetArrow "standard"
1055 ]
1056 edgeAnchor
1057 [
1058 xSource -0.07517258170522839
1059 xTarget -0.10023010894030451
1060 ]
1061 LabelGraphics
1062 [
1063 text "incomingTransitions reference Vertex"
1064 fontSize 14
1065 fontName "Consolas"
1066 configuration "AutoFlippingLabel"
1067 contentWidth 281.1015625
1068 contentHeight 18.0
1069 model "six_pos"
1070 position "thead"
1071 ]
1072 ]
1073 edge
1074 [
1075 source 4
1076 target 5
1077 label "outgoingTransitions reference Vertex"
1078 graphics
1079 [
1080 width 3
1081 fill "#000000"
1082 targetArrow "standard"
1083 ]
1084 edgeAnchor
1085 [
1086 xSource -0.08254431858692544
1087 xTarget -0.08713011406397665
1088 ]
1089 LabelGraphics
1090 [
1091 text "outgoingTransitions reference Vertex"
1092 fontSize 14
1093 fontName "Consolas"
1094 configuration "AutoFlippingLabel"
1095 contentWidth 281.1015625
1096 contentHeight 18.0
1097 model "six_pos"
1098 position "thead"
1099 ]
1100 ]
1101 edge
1102 [
1103 source 6
1104 target 7
1105 label "outgoingTransitions reference Vertex"
1106 graphics
1107 [
1108 width 3
1109 fill "#000000"
1110 targetArrow "standard"
1111 ]
1112 edgeAnchor
1113 [
1114 xSource -0.08278902855860473
1115 xTarget -0.11038537141147287
1116 ]
1117 LabelGraphics
1118 [
1119 text "outgoingTransitions reference Vertex"
1120 fontSize 14
1121 fontName "Consolas"
1122 configuration "AutoFlippingLabel"
1123 contentWidth 281.1015625
1124 contentHeight 18.0
1125 model "six_pos"
1126 position "thead"
1127 ]
1128 ]
1129 edge
1130 [
1131 source 8
1132 target 9
1133 label "outgoingTransitions reference Vertex"
1134 graphics
1135 [
1136 width 3
1137 fill "#000000"
1138 targetArrow "standard"
1139 ]
1140 edgeAnchor
1141 [
1142 xSource -0.05751572768585484
1143 xTarget -0.07668763691447326
1144 ]
1145 LabelGraphics
1146 [
1147 text "outgoingTransitions reference Vertex"
1148 fontSize 14
1149 fontName "Consolas"
1150 configuration "AutoFlippingLabel"
1151 contentWidth 281.1015625
1152 contentHeight 18.0
1153 model "six_pos"
1154 position "thead"
1155 ]
1156 ]
1157 edge
1158 [
1159 source 8
1160 target 10
1161 label "outgoingTransitions reference Vertex"
1162 graphics
1163 [
1164 width 3
1165 fill "#000000"
1166 targetArrow "standard"
1167 ]
1168 edgeAnchor
1169 [
1170 xSource -0.10193355770368039
1171 xTarget -0.13591141027157383
1172 ]
1173 LabelGraphics
1174 [
1175 text "outgoingTransitions reference Vertex"
1176 fontSize 14
1177 fontName "Consolas"
1178 configuration "AutoFlippingLabel"
1179 contentWidth 281.1015625
1180 contentHeight 18.0
1181 model "six_pos"
1182 position "thead"
1183 ]
1184 ]
1185 edge
1186 [
1187 source 8
1188 target 11
1189 label "outgoingTransitions reference Vertex"
1190 graphics
1191 [
1192 width 3
1193 fill "#000000"
1194 targetArrow "standard"
1195 ]
1196 edgeAnchor
1197 [
1198 xSource 0.07652670792062202
1199 xTarget 0.10203561056082977
1200 ]
1201 LabelGraphics
1202 [
1203 text "outgoingTransitions reference Vertex"
1204 fontSize 14
1205 fontName "Consolas"
1206 configuration "AutoFlippingLabel"
1207 contentWidth 281.1015625
1208 contentHeight 18.0
1209 model "six_pos"
1210 position "thead"
1211 ]
1212 ]
1213 edge
1214 [
1215 source 8
1216 target 12
1217 label "outgoingTransitions reference Vertex"
1218 graphics
1219 [
1220 width 3
1221 fill "#000000"
1222 targetArrow "standard"
1223 ]
1224 edgeAnchor
1225 [
1226 xSource -0.09068594476953899
1227 xTarget -0.1209145930260524
1228 ]
1229 LabelGraphics
1230 [
1231 text "outgoingTransitions reference Vertex"
1232 fontSize 14
1233 fontName "Consolas"
1234 configuration "AutoFlippingLabel"
1235 contentWidth 281.1015625
1236 contentHeight 18.0
1237 model "six_pos"
1238 position "thead"
1239 ]
1240 ]
1241 edge
1242 [
1243 source 13
1244 target 14
1245 label "outgoingTransitions reference Vertex"
1246 graphics
1247 [
1248 width 3
1249 fill "#000000"
1250 targetArrow "standard"
1251 ]
1252 edgeAnchor
1253 [
1254 xSource 0.07741474435720763
1255 xTarget 0.10321965914294319
1256 ]
1257 LabelGraphics
1258 [
1259 text "outgoingTransitions reference Vertex"
1260 fontSize 14
1261 fontName "Consolas"
1262 configuration "AutoFlippingLabel"
1263 contentWidth 281.1015625
1264 contentHeight 18.0
1265 model "six_pos"
1266 position "thead"
1267 ]
1268 ]
1269 edge
1270 [
1271 source 15
1272 target 16
1273 label "outgoingTransitions reference Vertex"
1274 graphics
1275 [
1276 width 3
1277 fill "#000000"
1278 targetArrow "standard"
1279 ]
1280 edgeAnchor
1281 [
1282 xSource -0.059386954907372135
1283 xTarget -0.07918260654316284
1284 ]
1285 LabelGraphics
1286 [
1287 text "outgoingTransitions reference Vertex"
1288 fontSize 14
1289 fontName "Consolas"
1290 configuration "AutoFlippingLabel"
1291 contentWidth 281.1015625
1292 contentHeight 18.0
1293 model "six_pos"
1294 position "thead"
1295 ]
1296 ]
1297 edge
1298 [
1299 source 3
1300 target 4
1301 label "vertices reference Region"
1302 graphics
1303 [
1304 width 3
1305 fill "#000000"
1306 targetArrow "standard"
1307 ]
1308 LabelGraphics
1309 [
1310 text "vertices reference Region"
1311 fontSize 14
1312 fontName "Consolas"
1313 configuration "AutoFlippingLabel"
1314 contentWidth 196.431640625
1315 contentHeight 18.0
1316 model "six_pos"
1317 position "thead"
1318 ]
1319 ]
1320 edge
1321 [
1322 source 3
1323 target 6
1324 label "vertices reference Region"
1325 graphics
1326 [
1327 width 3
1328 fill "#000000"
1329 targetArrow "standard"
1330 ]
1331 LabelGraphics
1332 [
1333 text "vertices reference Region"
1334 fontSize 14
1335 fontName "Consolas"
1336 configuration "AutoFlippingLabel"
1337 contentWidth 196.431640625
1338 contentHeight 18.0
1339 model "six_pos"
1340 position "thead"
1341 ]
1342 ]
1343 edge
1344 [
1345 source 3
1346 target 8
1347 label "vertices reference Region"
1348 graphics
1349 [
1350 width 3
1351 fill "#000000"
1352 targetArrow "standard"
1353 ]
1354 LabelGraphics
1355 [
1356 text "vertices reference Region"
1357 fontSize 14
1358 fontName "Consolas"
1359 configuration "AutoFlippingLabel"
1360 contentWidth 196.431640625
1361 contentHeight 18.0
1362 model "six_pos"
1363 position "thead"
1364 ]
1365 ]
1366 edge
1367 [
1368 source 3
1369 target 13
1370 label "vertices reference Region"
1371 graphics
1372 [
1373 width 3
1374 fill "#000000"
1375 targetArrow "standard"
1376 ]
1377 LabelGraphics
1378 [
1379 text "vertices reference Region"
1380 fontSize 14
1381 fontName "Consolas"
1382 configuration "AutoFlippingLabel"
1383 contentWidth 196.431640625
1384 contentHeight 18.0
1385 model "six_pos"
1386 position "thead"
1387 ]
1388 ]
1389 edge
1390 [
1391 source 3
1392 target 15
1393 label "vertices reference Region"
1394 graphics
1395 [
1396 width 3
1397 fill "#000000"
1398 targetArrow "standard"
1399 ]
1400 LabelGraphics
1401 [
1402 text "vertices reference Region"
1403 fontSize 14
1404 fontName "Consolas"
1405 configuration "AutoFlippingLabel"
1406 contentWidth 196.431640625
1407 contentHeight 18.0
1408 model "six_pos"
1409 position "thead"
1410 ]
1411 ]
1412 edge
1413 [
1414 source 3
1415 target 17
1416 label "vertices reference Region"
1417 graphics
1418 [
1419 width 3
1420 fill "#000000"
1421 targetArrow "standard"
1422 ]
1423 LabelGraphics
1424 [
1425 text "vertices reference Region"
1426 fontSize 14
1427 fontName "Consolas"
1428 configuration "AutoFlippingLabel"
1429 contentWidth 196.431640625
1430 contentHeight 18.0
1431 model "six_pos"
1432 position "thead"
1433 ]
1434 ]
1435 edge
1436 [
1437 source 5
1438 target 6
1439 label "target reference Transition"
1440 graphics
1441 [
1442 fill "#000000"
1443 targetArrow "standard"
1444 ]
1445 edgeAnchor
1446 [
1447 xSource -0.10710339122748727
1448 xTarget -0.08032754342061535
1449 ]
1450 LabelGraphics
1451 [
1452 text "target reference Transition"
1453 fontSize 14
1454 fontName "Consolas"
1455 configuration "AutoFlippingLabel"
1456 contentWidth 211.826171875
1457 contentHeight 18.0
1458 model "six_pos"
1459 position "thead"
1460 ]
1461 ]
1462 edge
1463 [
1464 source 7
1465 target 8
1466 label "target reference Transition"
1467 graphics
1468 [
1469 fill "#000000"
1470 targetArrow "standard"
1471 ]
1472 edgeAnchor
1473 [
1474 xSource 0.07591881667988142
1475 xTarget 0.056939112509911224
1476 ]
1477 LabelGraphics
1478 [
1479 text "target reference Transition"
1480 fontSize 14
1481 fontName "Consolas"
1482 configuration "AutoFlippingLabel"
1483 contentWidth 211.826171875
1484 contentHeight 18.0
1485 model "six_pos"
1486 position "thead"
1487 ]
1488 ]
1489 edge
1490 [
1491 source 9
1492 target 6
1493 label "target reference Transition"
1494 graphics
1495 [
1496 fill "#000000"
1497 targetArrow "standard"
1498 ]
1499 edgeAnchor
1500 [
1501 xSource 0.07230898048942265
1502 xTarget 0.05423173536706701
1503 ]
1504 LabelGraphics
1505 [
1506 text "target reference Transition"
1507 fontSize 14
1508 fontName "Consolas"
1509 configuration "AutoFlippingLabel"
1510 contentWidth 211.826171875
1511 contentHeight 18.0
1512 model "six_pos"
1513 position "thead"
1514 ]
1515 ]
1516 edge
1517 [
1518 source 10
1519 target 13
1520 label "target reference Transition"
1521 graphics
1522 [
1523 fill "#000000"
1524 targetArrow "standard"
1525 ]
1526 edgeAnchor
1527 [
1528 xSource 0.08538434233375643
1529 xTarget 0.06403825675031717
1530 ]
1531 LabelGraphics
1532 [
1533 text "target reference Transition"
1534 fontSize 14
1535 fontName "Consolas"
1536 configuration "AutoFlippingLabel"
1537 contentWidth 211.826171875
1538 contentHeight 18.0
1539 model "six_pos"
1540 position "thead"
1541 ]
1542 ]
1543 edge
1544 [
1545 source 11
1546 target 15
1547 label "target reference Transition"
1548 graphics
1549 [
1550 fill "#000000"
1551 targetArrow "standard"
1552 ]
1553 edgeAnchor
1554 [
1555 xSource 0.11120682879364265
1556 xTarget 0.0834051215952323
1557 ]
1558 LabelGraphics
1559 [
1560 text "target reference Transition"
1561 fontSize 14
1562 fontName "Consolas"
1563 configuration "AutoFlippingLabel"
1564 contentWidth 211.826171875
1565 contentHeight 18.0
1566 model "six_pos"
1567 position "thead"
1568 ]
1569 ]
1570 edge
1571 [
1572 source 12
1573 target 17
1574 label "target reference Transition"
1575 graphics
1576 [
1577 fill "#000000"
1578 targetArrow "standard"
1579 ]
1580 edgeAnchor
1581 [
1582 xSource 0.10023010894030451
1583 xTarget 0.07517258170522809
1584 ]
1585 LabelGraphics
1586 [
1587 text "target reference Transition"
1588 fontSize 14
1589 fontName "Consolas"
1590 configuration "AutoFlippingLabel"
1591 contentWidth 211.826171875
1592 contentHeight 18.0
1593 model "six_pos"
1594 position "thead"
1595 ]
1596 ]
1597 edge
1598 [
1599 source 14
1600 target 8
1601 label "target reference Transition"
1602 graphics
1603 [
1604 fill "#000000"
1605 targetArrow "standard"
1606 ]
1607 edgeAnchor
1608 [
1609 xSource -0.0762977295275961
1610 xTarget -0.05722329714569708
1611 ]
1612 LabelGraphics
1613 [
1614 text "target reference Transition"
1615 fontSize 14
1616 fontName "Consolas"
1617 configuration "AutoFlippingLabel"
1618 contentWidth 211.826171875
1619 contentHeight 18.0
1620 model "six_pos"
1621 position "thead"
1622 ]
1623 ]
1624 edge
1625 [
1626 source 16
1627 target 6
1628 label "target reference Transition"
1629 graphics
1630 [
1631 fill "#000000"
1632 targetArrow "standard"
1633 ]
1634 edgeAnchor
1635 [
1636 xSource -0.12312154342042972
1637 xTarget -0.09234115756532262
1638 ]
1639 LabelGraphics
1640 [
1641 text "target reference Transition"
1642 fontSize 14
1643 fontName "Consolas"
1644 configuration "AutoFlippingLabel"
1645 contentWidth 211.826171875
1646 contentHeight 18.0
1647 model "six_pos"
1648 position "thead"
1649 ]
1650 ]
1651 edge
1652 [
1653 source 5
1654 target 4
1655 label "source reference Transition"
1656 graphics
1657 [
1658 fill "#000000"
1659 targetArrow "standard"
1660 ]
1661 edgeAnchor
1662 [
1663 xSource 0.08713011406397665
1664 xTarget 0.08254431858692544
1665 ]
1666 LabelGraphics
1667 [
1668 text "source reference Transition"
1669 fontSize 14
1670 fontName "Consolas"
1671 configuration "AutoFlippingLabel"
1672 contentWidth 211.826171875
1673 contentHeight 18.0
1674 model "six_pos"
1675 position "thead"
1676 ]
1677 ]
1678 edge
1679 [
1680 source 7
1681 target 6
1682 label "source reference Transition"
1683 graphics
1684 [
1685 fill "#000000"
1686 targetArrow "standard"
1687 ]
1688 edgeAnchor
1689 [
1690 xSource 0.11038537141147287
1691 xTarget 0.08278902855860439
1692 ]
1693 LabelGraphics
1694 [
1695 text "source reference Transition"
1696 fontSize 14
1697 fontName "Consolas"
1698 configuration "AutoFlippingLabel"
1699 contentWidth 211.826171875
1700 contentHeight 18.0
1701 model "six_pos"
1702 position "thead"
1703 ]
1704 ]
1705 edge
1706 [
1707 source 9
1708 target 8
1709 label "source reference Transition"
1710 graphics
1711 [
1712 fill "#000000"
1713 targetArrow "standard"
1714 ]
1715 edgeAnchor
1716 [
1717 xSource 0.07668763691447301
1718 xTarget 0.05751572768585469
1719 ]
1720 LabelGraphics
1721 [
1722 text "source reference Transition"
1723 fontSize 14
1724 fontName "Consolas"
1725 configuration "AutoFlippingLabel"
1726 contentWidth 211.826171875
1727 contentHeight 18.0
1728 model "six_pos"
1729 position "thead"
1730 ]
1731 ]
1732 edge
1733 [
1734 source 10
1735 target 8
1736 label "source reference Transition"
1737 graphics
1738 [
1739 fill "#000000"
1740 targetArrow "standard"
1741 ]
1742 edgeAnchor
1743 [
1744 xSource 0.13591141027157425
1745 xTarget 0.10193355770368054
1746 ]
1747 LabelGraphics
1748 [
1749 text "source reference Transition"
1750 fontSize 14
1751 fontName "Consolas"
1752 configuration "AutoFlippingLabel"
1753 contentWidth 211.826171875
1754 contentHeight 18.0
1755 model "six_pos"
1756 position "thead"
1757 ]
1758 ]
1759 edge
1760 [
1761 source 11
1762 target 8
1763 label "source reference Transition"
1764 graphics
1765 [
1766 fill "#000000"
1767 targetArrow "standard"
1768 ]
1769 edgeAnchor
1770 [
1771 xSource -0.10203561056082977
1772 xTarget -0.07652670792062218
1773 ]
1774 LabelGraphics
1775 [
1776 text "source reference Transition"
1777 fontSize 14
1778 fontName "Consolas"
1779 configuration "AutoFlippingLabel"
1780 contentWidth 211.826171875
1781 contentHeight 18.0
1782 model "six_pos"
1783 position "thead"
1784 ]
1785 ]
1786 edge
1787 [
1788 source 12
1789 target 8
1790 label "source reference Transition"
1791 graphics
1792 [
1793 fill "#000000"
1794 targetArrow "standard"
1795 ]
1796 edgeAnchor
1797 [
1798 xSource 0.12091459302605259
1799 xTarget 0.0906859447695393
1800 ]
1801 LabelGraphics
1802 [
1803 text "source reference Transition"
1804 fontSize 14
1805 fontName "Consolas"
1806 configuration "AutoFlippingLabel"
1807 contentWidth 211.826171875
1808 contentHeight 18.0
1809 model "six_pos"
1810 position "thead"
1811 ]
1812 ]
1813 edge
1814 [
1815 source 14
1816 target 13
1817 label "source reference Transition"
1818 graphics
1819 [
1820 fill "#000000"
1821 targetArrow "standard"
1822 ]
1823 edgeAnchor
1824 [
1825 xSource -0.10321965914294329
1826 ySource -7.105427357601002E-16
1827 xTarget -0.07741474435720733
1828 ]
1829 LabelGraphics
1830 [
1831 text "source reference Transition"
1832 fontSize 14
1833 fontName "Consolas"
1834 configuration "AutoFlippingLabel"
1835 contentWidth 211.826171875
1836 contentHeight 18.0
1837 model "six_pos"
1838 position "thead"
1839 ]
1840 ]
1841 edge
1842 [
1843 source 16
1844 target 15
1845 label "source reference Transition"
1846 graphics
1847 [
1848 fill "#000000"
1849 targetArrow "standard"
1850 ]
1851 edgeAnchor
1852 [
1853 xSource 0.07918260654316284
1854 xTarget 0.059386954907372135
1855 ]
1856 LabelGraphics
1857 [
1858 text "source reference Transition"
1859 fontSize 14
1860 fontName "Consolas"
1861 configuration "AutoFlippingLabel"
1862 contentWidth 211.826171875
1863 contentHeight 18.0
1864 model "six_pos"
1865 position "thead"
1866 ]
1867 ]
1868 edge
1869 [
1870 source 2
1871 target 3
1872 label "regions reference CompositeElement"
1873 graphics
1874 [
1875 width 3
1876 fill "#000000"
1877 targetArrow "standard"
1878 ]
1879 LabelGraphics
1880 [
1881 text "regions reference CompositeElement"
1882 fontSize 14
1883 fontName "Consolas"
1884 configuration "AutoFlippingLabel"
1885 contentWidth 265.70703125
1886 contentHeight 18.0
1887 model "six_pos"
1888 position "thead"
1889 ]
1890 ]
1891]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelMODEL.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelMODEL.gml
new file mode 100644
index 00000000..31575ae8
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelMODEL.gml
@@ -0,0 +1,1562 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 41.800000000000004
9 h 26
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "true"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 "
30 fontSize 14
31 fontName "Consolas"
32 alignment "left"
33 anchor "tl"
34 borderDistance 6
35 ]
36 ]
37
38 node
39 [
40 id 1
41 graphics
42 [
43 w 50.6
44 h 26
45 type "rectangle"
46 fill "#FFFFFF"
47 fill2 "#FFFFFF"
48 outline "#000000"
49 ]
50 LabelGraphics
51 [
52 text "false"
53 outline "#000000"
54 fill "#FFFFFF"
55 fontSize 16
56 fontName "Monospace"
57 autoSizePolicy "node_width"
58 anchor "t"
59 borderDistance 0.0
60 ]
61 LabelGraphics
62 [
63 text "
64 "
65 fontSize 14
66 fontName "Consolas"
67 alignment "left"
68 anchor "tl"
69 borderDistance 6
70 ]
71 ]
72
73 node
74 [
75 id 2
76 graphics
77 [
78 w 184.8
79 h 54
80 type "rectangle"
81 fill "#FFFFFF"
82 fill2 "#FFFFFF"
83 outline "#000000"
84 ]
85 LabelGraphics
86 [
87 text "null"
88 outline "#000000"
89 fill "#FFFFFF"
90 fontSize 16
91 fontName "Monospace"
92 autoSizePolicy "node_width"
93 anchor "t"
94 borderDistance 0.0
95 ]
96 LabelGraphics
97 [
98 text "
99 Statechart class
100 CompositeElement class
101 "
102 fontSize 14
103 fontName "Consolas"
104 alignment "left"
105 anchor "tl"
106 borderDistance 6
107 ]
108 ]
109
110 node
111 [
112 id 3
113 graphics
114 [
115 w 107.80000000000001
116 h 40
117 type "rectangle"
118 fill "#FFFFFF"
119 fill2 "#FFFFFF"
120 outline "#000000"
121 ]
122 LabelGraphics
123 [
124 text "null"
125 outline "#000000"
126 fill "#FFFFFF"
127 fontSize 16
128 fontName "Monospace"
129 autoSizePolicy "node_width"
130 anchor "t"
131 borderDistance 0.0
132 ]
133 LabelGraphics
134 [
135 text "
136 Region class
137 "
138 fontSize 14
139 fontName "Consolas"
140 alignment "left"
141 anchor "tl"
142 borderDistance 6
143 ]
144 ]
145
146 node
147 [
148 id 4
149 graphics
150 [
151 w 146.3
152 h 68
153 type "rectangle"
154 fill "#FFFFFF"
155 fill2 "#FFFFFF"
156 outline "#000000"
157 ]
158 LabelGraphics
159 [
160 text "null"
161 outline "#000000"
162 fill "#FFFFFF"
163 fontSize 16
164 fontName "Monospace"
165 autoSizePolicy "node_width"
166 anchor "t"
167 borderDistance 0.0
168 ]
169 LabelGraphics
170 [
171 text "
172 Pseudostate class
173 Vertex class
174 Entry class
175 "
176 fontSize 14
177 fontName "Consolas"
178 alignment "left"
179 anchor "tl"
180 borderDistance 6
181 ]
182 ]
183
184 node
185 [
186 id 5
187 graphics
188 [
189 w 138.60000000000002
190 h 40
191 type "rectangle"
192 fill "#FFFFFF"
193 fill2 "#FFFFFF"
194 outline "#000000"
195 ]
196 LabelGraphics
197 [
198 text "null"
199 outline "#000000"
200 fill "#FFFFFF"
201 fontSize 16
202 fontName "Monospace"
203 autoSizePolicy "node_width"
204 anchor "t"
205 borderDistance 0.0
206 ]
207 LabelGraphics
208 [
209 text "
210 Transition class
211 "
212 fontSize 14
213 fontName "Consolas"
214 alignment "left"
215 anchor "tl"
216 borderDistance 6
217 ]
218 ]
219
220 node
221 [
222 id 6
223 graphics
224 [
225 w 184.8
226 h 82
227 type "rectangle"
228 fill "#FFFFFF"
229 fill2 "#FFFFFF"
230 outline "#000000"
231 ]
232 LabelGraphics
233 [
234 text "null"
235 outline "#000000"
236 fill "#FFFFFF"
237 fontSize 16
238 fontName "Monospace"
239 autoSizePolicy "node_width"
240 anchor "t"
241 borderDistance 0.0
242 ]
243 LabelGraphics
244 [
245 text "
246 Vertex class
247 State class
248 RegularState class
249 CompositeElement class
250 "
251 fontSize 14
252 fontName "Consolas"
253 alignment "left"
254 anchor "tl"
255 borderDistance 6
256 ]
257 ]
258
259 node
260 [
261 id 7
262 graphics
263 [
264 w 138.60000000000002
265 h 40
266 type "rectangle"
267 fill "#FFFFFF"
268 fill2 "#FFFFFF"
269 outline "#000000"
270 ]
271 LabelGraphics
272 [
273 text "null"
274 outline "#000000"
275 fill "#FFFFFF"
276 fontSize 16
277 fontName "Monospace"
278 autoSizePolicy "node_width"
279 anchor "t"
280 borderDistance 0.0
281 ]
282 LabelGraphics
283 [
284 text "
285 Transition class
286 "
287 fontSize 14
288 fontName "Consolas"
289 alignment "left"
290 anchor "tl"
291 borderDistance 6
292 ]
293 ]
294
295 node
296 [
297 id 8
298 graphics
299 [
300 w 184.8
301 h 82
302 type "rectangle"
303 fill "#FFFFFF"
304 fill2 "#FFFFFF"
305 outline "#000000"
306 ]
307 LabelGraphics
308 [
309 text "null"
310 outline "#000000"
311 fill "#FFFFFF"
312 fontSize 16
313 fontName "Monospace"
314 autoSizePolicy "node_width"
315 anchor "t"
316 borderDistance 0.0
317 ]
318 LabelGraphics
319 [
320 text "
321 Vertex class
322 State class
323 RegularState class
324 CompositeElement class
325 "
326 fontSize 14
327 fontName "Consolas"
328 alignment "left"
329 anchor "tl"
330 borderDistance 6
331 ]
332 ]
333
334 node
335 [
336 id 9
337 graphics
338 [
339 w 138.60000000000002
340 h 40
341 type "rectangle"
342 fill "#FFFFFF"
343 fill2 "#FFFFFF"
344 outline "#000000"
345 ]
346 LabelGraphics
347 [
348 text "null"
349 outline "#000000"
350 fill "#FFFFFF"
351 fontSize 16
352 fontName "Monospace"
353 autoSizePolicy "node_width"
354 anchor "t"
355 borderDistance 0.0
356 ]
357 LabelGraphics
358 [
359 text "
360 Transition class
361 "
362 fontSize 14
363 fontName "Consolas"
364 alignment "left"
365 anchor "tl"
366 borderDistance 6
367 ]
368 ]
369
370 node
371 [
372 id 10
373 graphics
374 [
375 w 138.60000000000002
376 h 40
377 type "rectangle"
378 fill "#FFFFFF"
379 fill2 "#FFFFFF"
380 outline "#000000"
381 ]
382 LabelGraphics
383 [
384 text "null"
385 outline "#000000"
386 fill "#FFFFFF"
387 fontSize 16
388 fontName "Monospace"
389 autoSizePolicy "node_width"
390 anchor "t"
391 borderDistance 0.0
392 ]
393 LabelGraphics
394 [
395 text "
396 Transition class
397 "
398 fontSize 14
399 fontName "Consolas"
400 alignment "left"
401 anchor "tl"
402 borderDistance 6
403 ]
404 ]
405
406 node
407 [
408 id 11
409 graphics
410 [
411 w 138.60000000000002
412 h 40
413 type "rectangle"
414 fill "#FFFFFF"
415 fill2 "#FFFFFF"
416 outline "#000000"
417 ]
418 LabelGraphics
419 [
420 text "null"
421 outline "#000000"
422 fill "#FFFFFF"
423 fontSize 16
424 fontName "Monospace"
425 autoSizePolicy "node_width"
426 anchor "t"
427 borderDistance 0.0
428 ]
429 LabelGraphics
430 [
431 text "
432 Transition class
433 "
434 fontSize 14
435 fontName "Consolas"
436 alignment "left"
437 anchor "tl"
438 borderDistance 6
439 ]
440 ]
441
442 node
443 [
444 id 12
445 graphics
446 [
447 w 138.60000000000002
448 h 40
449 type "rectangle"
450 fill "#FFFFFF"
451 fill2 "#FFFFFF"
452 outline "#000000"
453 ]
454 LabelGraphics
455 [
456 text "null"
457 outline "#000000"
458 fill "#FFFFFF"
459 fontSize 16
460 fontName "Monospace"
461 autoSizePolicy "node_width"
462 anchor "t"
463 borderDistance 0.0
464 ]
465 LabelGraphics
466 [
467 text "
468 Transition class
469 "
470 fontSize 14
471 fontName "Consolas"
472 alignment "left"
473 anchor "tl"
474 borderDistance 6
475 ]
476 ]
477
478 node
479 [
480 id 13
481 graphics
482 [
483 w 184.8
484 h 82
485 type "rectangle"
486 fill "#FFFFFF"
487 fill2 "#FFFFFF"
488 outline "#000000"
489 ]
490 LabelGraphics
491 [
492 text "null"
493 outline "#000000"
494 fill "#FFFFFF"
495 fontSize 16
496 fontName "Monospace"
497 autoSizePolicy "node_width"
498 anchor "t"
499 borderDistance 0.0
500 ]
501 LabelGraphics
502 [
503 text "
504 Vertex class
505 State class
506 RegularState class
507 CompositeElement class
508 "
509 fontSize 14
510 fontName "Consolas"
511 alignment "left"
512 anchor "tl"
513 borderDistance 6
514 ]
515 ]
516
517 node
518 [
519 id 14
520 graphics
521 [
522 w 138.60000000000002
523 h 40
524 type "rectangle"
525 fill "#FFFFFF"
526 fill2 "#FFFFFF"
527 outline "#000000"
528 ]
529 LabelGraphics
530 [
531 text "null"
532 outline "#000000"
533 fill "#FFFFFF"
534 fontSize 16
535 fontName "Monospace"
536 autoSizePolicy "node_width"
537 anchor "t"
538 borderDistance 0.0
539 ]
540 LabelGraphics
541 [
542 text "
543 Transition class
544 "
545 fontSize 14
546 fontName "Consolas"
547 alignment "left"
548 anchor "tl"
549 borderDistance 6
550 ]
551 ]
552
553 node
554 [
555 id 15
556 graphics
557 [
558 w 184.8
559 h 82
560 type "rectangle"
561 fill "#FFFFFF"
562 fill2 "#FFFFFF"
563 outline "#000000"
564 ]
565 LabelGraphics
566 [
567 text "null"
568 outline "#000000"
569 fill "#FFFFFF"
570 fontSize 16
571 fontName "Monospace"
572 autoSizePolicy "node_width"
573 anchor "t"
574 borderDistance 0.0
575 ]
576 LabelGraphics
577 [
578 text "
579 Vertex class
580 State class
581 RegularState class
582 CompositeElement class
583 "
584 fontSize 14
585 fontName "Consolas"
586 alignment "left"
587 anchor "tl"
588 borderDistance 6
589 ]
590 ]
591
592 node
593 [
594 id 16
595 graphics
596 [
597 w 138.60000000000002
598 h 40
599 type "rectangle"
600 fill "#FFFFFF"
601 fill2 "#FFFFFF"
602 outline "#000000"
603 ]
604 LabelGraphics
605 [
606 text "null"
607 outline "#000000"
608 fill "#FFFFFF"
609 fontSize 16
610 fontName "Monospace"
611 autoSizePolicy "node_width"
612 anchor "t"
613 borderDistance 0.0
614 ]
615 LabelGraphics
616 [
617 text "
618 Transition class
619 "
620 fontSize 14
621 fontName "Consolas"
622 alignment "left"
623 anchor "tl"
624 borderDistance 6
625 ]
626 ]
627
628 node
629 [
630 id 17
631 graphics
632 [
633 w 184.8
634 h 82
635 type "rectangle"
636 fill "#FFFFFF"
637 fill2 "#FFFFFF"
638 outline "#000000"
639 ]
640 LabelGraphics
641 [
642 text "null"
643 outline "#000000"
644 fill "#FFFFFF"
645 fontSize 16
646 fontName "Monospace"
647 autoSizePolicy "node_width"
648 anchor "t"
649 borderDistance 0.0
650 ]
651 LabelGraphics
652 [
653 text "
654 Vertex class
655 State class
656 RegularState class
657 CompositeElement class
658 "
659 fontSize 14
660 fontName "Consolas"
661 alignment "left"
662 anchor "tl"
663 borderDistance 6
664 ]
665 ]
666
667 node
668 [
669 id 18
670 graphics
671 [
672 w 112.2
673 h 26
674 type "rectangle"
675 fill "#FFFFFF"
676 fill2 "#FFFFFF"
677 outline "#000000"
678 ]
679 LabelGraphics
680 [
681 text "New Integers"
682 outline "#000000"
683 fill "#FFFFFF"
684 fontSize 16
685 fontName "Monospace"
686 autoSizePolicy "node_width"
687 anchor "t"
688 borderDistance 0.0
689 ]
690 LabelGraphics
691 [
692 text "
693 "
694 fontSize 14
695 fontName "Consolas"
696 alignment "left"
697 anchor "tl"
698 borderDistance 6
699 ]
700 ]
701
702 node
703 [
704 id 19
705 graphics
706 [
707 w 85.80000000000001
708 h 26
709 type "rectangle"
710 fill "#FFFFFF"
711 fill2 "#FFFFFF"
712 outline "#000000"
713 ]
714 LabelGraphics
715 [
716 text "New Reals"
717 outline "#000000"
718 fill "#FFFFFF"
719 fontSize 16
720 fontName "Monospace"
721 autoSizePolicy "node_width"
722 anchor "t"
723 borderDistance 0.0
724 ]
725 LabelGraphics
726 [
727 text "
728 "
729 fontSize 14
730 fontName "Consolas"
731 alignment "left"
732 anchor "tl"
733 borderDistance 6
734 ]
735 ]
736
737 node
738 [
739 id 20
740 graphics
741 [
742 w 103.4
743 h 26
744 type "rectangle"
745 fill "#FFFFFF"
746 fill2 "#FFFFFF"
747 outline "#000000"
748 ]
749 LabelGraphics
750 [
751 text "New Strings"
752 outline "#000000"
753 fill "#FFFFFF"
754 fontSize 16
755 fontName "Monospace"
756 autoSizePolicy "node_width"
757 anchor "t"
758 borderDistance 0.0
759 ]
760 LabelGraphics
761 [
762 text "
763 "
764 fontSize 14
765 fontName "Consolas"
766 alignment "left"
767 anchor "tl"
768 borderDistance 6
769 ]
770 ]
771
772 node
773 [
774 id 21
775 graphics
776 [
777 w 103.4
778 h 26
779 type "rectangle"
780 fill "#FFFFFF"
781 fill2 "#FFFFFF"
782 outline "#000000"
783 ]
784 LabelGraphics
785 [
786 text "New Objects"
787 outline "#000000"
788 fill "#FFFFFF"
789 fontSize 16
790 fontName "Monospace"
791 autoSizePolicy "node_width"
792 anchor "t"
793 borderDistance 0.0
794 ]
795 LabelGraphics
796 [
797 text "
798 "
799 fontSize 14
800 fontName "Consolas"
801 alignment "left"
802 anchor "tl"
803 borderDistance 6
804 ]
805 ]
806 edge
807 [
808 source 6
809 target 5
810 graphics
811 [
812 fill "#000000"
813 targetArrow "standard"
814 ]
815 LabelGraphics
816 [
817 text "incomingTransitions reference Vertex"
818 fontSize 14
819 fontName "Consolas"
820 configuration "AutoFlippingLabel"
821 model "six_pos"
822 position "thead"
823 ]
824 ]
825 edge
826 [
827 source 6
828 target 9
829 graphics
830 [
831 fill "#000000"
832 targetArrow "standard"
833 ]
834 LabelGraphics
835 [
836 text "incomingTransitions reference Vertex"
837 fontSize 14
838 fontName "Consolas"
839 configuration "AutoFlippingLabel"
840 model "six_pos"
841 position "thead"
842 ]
843 ]
844 edge
845 [
846 source 6
847 target 16
848 graphics
849 [
850 fill "#000000"
851 targetArrow "standard"
852 ]
853 LabelGraphics
854 [
855 text "incomingTransitions reference Vertex"
856 fontSize 14
857 fontName "Consolas"
858 configuration "AutoFlippingLabel"
859 model "six_pos"
860 position "thead"
861 ]
862 ]
863 edge
864 [
865 source 8
866 target 7
867 graphics
868 [
869 fill "#000000"
870 targetArrow "standard"
871 ]
872 LabelGraphics
873 [
874 text "incomingTransitions reference Vertex"
875 fontSize 14
876 fontName "Consolas"
877 configuration "AutoFlippingLabel"
878 model "six_pos"
879 position "thead"
880 ]
881 ]
882 edge
883 [
884 source 8
885 target 14
886 graphics
887 [
888 fill "#000000"
889 targetArrow "standard"
890 ]
891 LabelGraphics
892 [
893 text "incomingTransitions reference Vertex"
894 fontSize 14
895 fontName "Consolas"
896 configuration "AutoFlippingLabel"
897 model "six_pos"
898 position "thead"
899 ]
900 ]
901 edge
902 [
903 source 13
904 target 10
905 graphics
906 [
907 fill "#000000"
908 targetArrow "standard"
909 ]
910 LabelGraphics
911 [
912 text "incomingTransitions reference Vertex"
913 fontSize 14
914 fontName "Consolas"
915 configuration "AutoFlippingLabel"
916 model "six_pos"
917 position "thead"
918 ]
919 ]
920 edge
921 [
922 source 15
923 target 11
924 graphics
925 [
926 fill "#000000"
927 targetArrow "standard"
928 ]
929 LabelGraphics
930 [
931 text "incomingTransitions reference Vertex"
932 fontSize 14
933 fontName "Consolas"
934 configuration "AutoFlippingLabel"
935 model "six_pos"
936 position "thead"
937 ]
938 ]
939 edge
940 [
941 source 17
942 target 12
943 graphics
944 [
945 fill "#000000"
946 targetArrow "standard"
947 ]
948 LabelGraphics
949 [
950 text "incomingTransitions reference Vertex"
951 fontSize 14
952 fontName "Consolas"
953 configuration "AutoFlippingLabel"
954 model "six_pos"
955 position "thead"
956 ]
957 ]
958 edge
959 [
960 source 4
961 target 5
962 graphics
963 [
964 fill "#000000"
965 width 3
966 targetArrow "standard"
967 ]
968 LabelGraphics
969 [
970 text "outgoingTransitions reference Vertex"
971 fontSize 14
972 fontName "Consolas"
973 configuration "AutoFlippingLabel"
974 model "six_pos"
975 position "thead"
976 ]
977 ]
978 edge
979 [
980 source 6
981 target 7
982 graphics
983 [
984 fill "#000000"
985 width 3
986 targetArrow "standard"
987 ]
988 LabelGraphics
989 [
990 text "outgoingTransitions reference Vertex"
991 fontSize 14
992 fontName "Consolas"
993 configuration "AutoFlippingLabel"
994 model "six_pos"
995 position "thead"
996 ]
997 ]
998 edge
999 [
1000 source 8
1001 target 9
1002 graphics
1003 [
1004 fill "#000000"
1005 width 3
1006 targetArrow "standard"
1007 ]
1008 LabelGraphics
1009 [
1010 text "outgoingTransitions reference Vertex"
1011 fontSize 14
1012 fontName "Consolas"
1013 configuration "AutoFlippingLabel"
1014 model "six_pos"
1015 position "thead"
1016 ]
1017 ]
1018 edge
1019 [
1020 source 8
1021 target 10
1022 graphics
1023 [
1024 fill "#000000"
1025 width 3
1026 targetArrow "standard"
1027 ]
1028 LabelGraphics
1029 [
1030 text "outgoingTransitions reference Vertex"
1031 fontSize 14
1032 fontName "Consolas"
1033 configuration "AutoFlippingLabel"
1034 model "six_pos"
1035 position "thead"
1036 ]
1037 ]
1038 edge
1039 [
1040 source 8
1041 target 11
1042 graphics
1043 [
1044 fill "#000000"
1045 width 3
1046 targetArrow "standard"
1047 ]
1048 LabelGraphics
1049 [
1050 text "outgoingTransitions reference Vertex"
1051 fontSize 14
1052 fontName "Consolas"
1053 configuration "AutoFlippingLabel"
1054 model "six_pos"
1055 position "thead"
1056 ]
1057 ]
1058 edge
1059 [
1060 source 8
1061 target 12
1062 graphics
1063 [
1064 fill "#000000"
1065 width 3
1066 targetArrow "standard"
1067 ]
1068 LabelGraphics
1069 [
1070 text "outgoingTransitions reference Vertex"
1071 fontSize 14
1072 fontName "Consolas"
1073 configuration "AutoFlippingLabel"
1074 model "six_pos"
1075 position "thead"
1076 ]
1077 ]
1078 edge
1079 [
1080 source 13
1081 target 14
1082 graphics
1083 [
1084 fill "#000000"
1085 width 3
1086 targetArrow "standard"
1087 ]
1088 LabelGraphics
1089 [
1090 text "outgoingTransitions reference Vertex"
1091 fontSize 14
1092 fontName "Consolas"
1093 configuration "AutoFlippingLabel"
1094 model "six_pos"
1095 position "thead"
1096 ]
1097 ]
1098 edge
1099 [
1100 source 15
1101 target 16
1102 graphics
1103 [
1104 fill "#000000"
1105 width 3
1106 targetArrow "standard"
1107 ]
1108 LabelGraphics
1109 [
1110 text "outgoingTransitions reference Vertex"
1111 fontSize 14
1112 fontName "Consolas"
1113 configuration "AutoFlippingLabel"
1114 model "six_pos"
1115 position "thead"
1116 ]
1117 ]
1118 edge
1119 [
1120 source 3
1121 target 4
1122 graphics
1123 [
1124 fill "#000000"
1125 width 3
1126 targetArrow "standard"
1127 ]
1128 LabelGraphics
1129 [
1130 text "vertices reference Region"
1131 fontSize 14
1132 fontName "Consolas"
1133 configuration "AutoFlippingLabel"
1134 model "six_pos"
1135 position "thead"
1136 ]
1137 ]
1138 edge
1139 [
1140 source 3
1141 target 6
1142 graphics
1143 [
1144 fill "#000000"
1145 width 3
1146 targetArrow "standard"
1147 ]
1148 LabelGraphics
1149 [
1150 text "vertices reference Region"
1151 fontSize 14
1152 fontName "Consolas"
1153 configuration "AutoFlippingLabel"
1154 model "six_pos"
1155 position "thead"
1156 ]
1157 ]
1158 edge
1159 [
1160 source 3
1161 target 8
1162 graphics
1163 [
1164 fill "#000000"
1165 width 3
1166 targetArrow "standard"
1167 ]
1168 LabelGraphics
1169 [
1170 text "vertices reference Region"
1171 fontSize 14
1172 fontName "Consolas"
1173 configuration "AutoFlippingLabel"
1174 model "six_pos"
1175 position "thead"
1176 ]
1177 ]
1178 edge
1179 [
1180 source 3
1181 target 13
1182 graphics
1183 [
1184 fill "#000000"
1185 width 3
1186 targetArrow "standard"
1187 ]
1188 LabelGraphics
1189 [
1190 text "vertices reference Region"
1191 fontSize 14
1192 fontName "Consolas"
1193 configuration "AutoFlippingLabel"
1194 model "six_pos"
1195 position "thead"
1196 ]
1197 ]
1198 edge
1199 [
1200 source 3
1201 target 15
1202 graphics
1203 [
1204 fill "#000000"
1205 width 3
1206 targetArrow "standard"
1207 ]
1208 LabelGraphics
1209 [
1210 text "vertices reference Region"
1211 fontSize 14
1212 fontName "Consolas"
1213 configuration "AutoFlippingLabel"
1214 model "six_pos"
1215 position "thead"
1216 ]
1217 ]
1218 edge
1219 [
1220 source 3
1221 target 17
1222 graphics
1223 [
1224 fill "#000000"
1225 width 3
1226 targetArrow "standard"
1227 ]
1228 LabelGraphics
1229 [
1230 text "vertices reference Region"
1231 fontSize 14
1232 fontName "Consolas"
1233 configuration "AutoFlippingLabel"
1234 model "six_pos"
1235 position "thead"
1236 ]
1237 ]
1238 edge
1239 [
1240 source 5
1241 target 6
1242 graphics
1243 [
1244 fill "#000000"
1245 targetArrow "standard"
1246 ]
1247 LabelGraphics
1248 [
1249 text "target reference Transition"
1250 fontSize 14
1251 fontName "Consolas"
1252 configuration "AutoFlippingLabel"
1253 model "six_pos"
1254 position "thead"
1255 ]
1256 ]
1257 edge
1258 [
1259 source 7
1260 target 8
1261 graphics
1262 [
1263 fill "#000000"
1264 targetArrow "standard"
1265 ]
1266 LabelGraphics
1267 [
1268 text "target reference Transition"
1269 fontSize 14
1270 fontName "Consolas"
1271 configuration "AutoFlippingLabel"
1272 model "six_pos"
1273 position "thead"
1274 ]
1275 ]
1276 edge
1277 [
1278 source 9
1279 target 6
1280 graphics
1281 [
1282 fill "#000000"
1283 targetArrow "standard"
1284 ]
1285 LabelGraphics
1286 [
1287 text "target reference Transition"
1288 fontSize 14
1289 fontName "Consolas"
1290 configuration "AutoFlippingLabel"
1291 model "six_pos"
1292 position "thead"
1293 ]
1294 ]
1295 edge
1296 [
1297 source 10
1298 target 13
1299 graphics
1300 [
1301 fill "#000000"
1302 targetArrow "standard"
1303 ]
1304 LabelGraphics
1305 [
1306 text "target reference Transition"
1307 fontSize 14
1308 fontName "Consolas"
1309 configuration "AutoFlippingLabel"
1310 model "six_pos"
1311 position "thead"
1312 ]
1313 ]
1314 edge
1315 [
1316 source 11
1317 target 15
1318 graphics
1319 [
1320 fill "#000000"
1321 targetArrow "standard"
1322 ]
1323 LabelGraphics
1324 [
1325 text "target reference Transition"
1326 fontSize 14
1327 fontName "Consolas"
1328 configuration "AutoFlippingLabel"
1329 model "six_pos"
1330 position "thead"
1331 ]
1332 ]
1333 edge
1334 [
1335 source 12
1336 target 17
1337 graphics
1338 [
1339 fill "#000000"
1340 targetArrow "standard"
1341 ]
1342 LabelGraphics
1343 [
1344 text "target reference Transition"
1345 fontSize 14
1346 fontName "Consolas"
1347 configuration "AutoFlippingLabel"
1348 model "six_pos"
1349 position "thead"
1350 ]
1351 ]
1352 edge
1353 [
1354 source 14
1355 target 8
1356 graphics
1357 [
1358 fill "#000000"
1359 targetArrow "standard"
1360 ]
1361 LabelGraphics
1362 [
1363 text "target reference Transition"
1364 fontSize 14
1365 fontName "Consolas"
1366 configuration "AutoFlippingLabel"
1367 model "six_pos"
1368 position "thead"
1369 ]
1370 ]
1371 edge
1372 [
1373 source 16
1374 target 6
1375 graphics
1376 [
1377 fill "#000000"
1378 targetArrow "standard"
1379 ]
1380 LabelGraphics
1381 [
1382 text "target reference Transition"
1383 fontSize 14
1384 fontName "Consolas"
1385 configuration "AutoFlippingLabel"
1386 model "six_pos"
1387 position "thead"
1388 ]
1389 ]
1390 edge
1391 [
1392 source 5
1393 target 4
1394 graphics
1395 [
1396 fill "#000000"
1397 targetArrow "standard"
1398 ]
1399 LabelGraphics
1400 [
1401 text "source reference Transition"
1402 fontSize 14
1403 fontName "Consolas"
1404 configuration "AutoFlippingLabel"
1405 model "six_pos"
1406 position "thead"
1407 ]
1408 ]
1409 edge
1410 [
1411 source 7
1412 target 6
1413 graphics
1414 [
1415 fill "#000000"
1416 targetArrow "standard"
1417 ]
1418 LabelGraphics
1419 [
1420 text "source reference Transition"
1421 fontSize 14
1422 fontName "Consolas"
1423 configuration "AutoFlippingLabel"
1424 model "six_pos"
1425 position "thead"
1426 ]
1427 ]
1428 edge
1429 [
1430 source 9
1431 target 8
1432 graphics
1433 [
1434 fill "#000000"
1435 targetArrow "standard"
1436 ]
1437 LabelGraphics
1438 [
1439 text "source reference Transition"
1440 fontSize 14
1441 fontName "Consolas"
1442 configuration "AutoFlippingLabel"
1443 model "six_pos"
1444 position "thead"
1445 ]
1446 ]
1447 edge
1448 [
1449 source 10
1450 target 8
1451 graphics
1452 [
1453 fill "#000000"
1454 targetArrow "standard"
1455 ]
1456 LabelGraphics
1457 [
1458 text "source reference Transition"
1459 fontSize 14
1460 fontName "Consolas"
1461 configuration "AutoFlippingLabel"
1462 model "six_pos"
1463 position "thead"
1464 ]
1465 ]
1466 edge
1467 [
1468 source 11
1469 target 8
1470 graphics
1471 [
1472 fill "#000000"
1473 targetArrow "standard"
1474 ]
1475 LabelGraphics
1476 [
1477 text "source reference Transition"
1478 fontSize 14
1479 fontName "Consolas"
1480 configuration "AutoFlippingLabel"
1481 model "six_pos"
1482 position "thead"
1483 ]
1484 ]
1485 edge
1486 [
1487 source 12
1488 target 8
1489 graphics
1490 [
1491 fill "#000000"
1492 targetArrow "standard"
1493 ]
1494 LabelGraphics
1495 [
1496 text "source reference Transition"
1497 fontSize 14
1498 fontName "Consolas"
1499 configuration "AutoFlippingLabel"
1500 model "six_pos"
1501 position "thead"
1502 ]
1503 ]
1504 edge
1505 [
1506 source 14
1507 target 13
1508 graphics
1509 [
1510 fill "#000000"
1511 targetArrow "standard"
1512 ]
1513 LabelGraphics
1514 [
1515 text "source reference Transition"
1516 fontSize 14
1517 fontName "Consolas"
1518 configuration "AutoFlippingLabel"
1519 model "six_pos"
1520 position "thead"
1521 ]
1522 ]
1523 edge
1524 [
1525 source 16
1526 target 15
1527 graphics
1528 [
1529 fill "#000000"
1530 targetArrow "standard"
1531 ]
1532 LabelGraphics
1533 [
1534 text "source reference Transition"
1535 fontSize 14
1536 fontName "Consolas"
1537 configuration "AutoFlippingLabel"
1538 model "six_pos"
1539 position "thead"
1540 ]
1541 ]
1542 edge
1543 [
1544 source 2
1545 target 3
1546 graphics
1547 [
1548 fill "#000000"
1549 width 3
1550 targetArrow "standard"
1551 ]
1552 LabelGraphics
1553 [
1554 text "regions reference CompositeElement"
1555 fontSize 14
1556 fontName "Consolas"
1557 configuration "AutoFlippingLabel"
1558 model "six_pos"
1559 position "thead"
1560 ]
1561 ]
1562]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelNEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelNEIGHBOURHOOD.gml
new file mode 100644
index 00000000..b0f17c49
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/realisticModelNEIGHBOURHOOD.gml
@@ -0,0 +1,724 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 176.0
9 h 40
10 type "roundrectangle"
11 fill "#FFCC00"
12 outline "#000000"
13 ]
14 LabelGraphics
15 [
16 ]
17 LabelGraphics
18 [
19 text "[Transition class] (7)"
20 fontSize 14
21 fontName "Dialog"
22 ]
23 ]
24 node
25 [
26 id 1
27 graphics
28 [
29 w 584.1
30 h 40
31 type "roundrectangle"
32 fill "#FFCC00"
33 outline "#000000"
34 ]
35 LabelGraphics
36 [
37 ]
38 LabelGraphics
39 [
40 text "[State class, CompositeElement class, Vertex class, RegularState class] (1)"
41 fontSize 14
42 fontName "Dialog"
43 ]
44 ]
45 node
46 [
47 id 2
48 graphics
49 [
50 w 360.8
51 h 40
52 type "roundrectangle"
53 fill "#FFCC00"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 ]
59 LabelGraphics
60 [
61 text "[Statechart class, CompositeElement class] (1)"
62 fontSize 14
63 fontName "Dialog"
64 ]
65 ]
66 node
67 [
68 id 3
69 graphics
70 [
71 w 584.1
72 h 40
73 type "roundrectangle"
74 fill "#FFCC00"
75 outline "#000000"
76 ]
77 LabelGraphics
78 [
79 ]
80 LabelGraphics
81 [
82 text "[State class, CompositeElement class, Vertex class, RegularState class] (1)"
83 fontSize 14
84 fontName "Dialog"
85 ]
86 ]
87 node
88 [
89 id 4
90 graphics
91 [
92 w 584.1
93 h 40
94 type "roundrectangle"
95 fill "#FFCC00"
96 outline "#000000"
97 ]
98 LabelGraphics
99 [
100 ]
101 LabelGraphics
102 [
103 text "[State class, CompositeElement class, Vertex class, RegularState class] (1)"
104 fontSize 14
105 fontName "Dialog"
106 ]
107 ]
108 node
109 [
110 id 5
111 graphics
112 [
113 w 584.1
114 h 40
115 type "roundrectangle"
116 fill "#FFCC00"
117 outline "#000000"
118 ]
119 LabelGraphics
120 [
121 ]
122 LabelGraphics
123 [
124 text "[State class, CompositeElement class, Vertex class, RegularState class] (2)"
125 fontSize 14
126 fontName "Dialog"
127 ]
128 ]
129 node
130 [
131 id 6
132 graphics
133 [
134 w 391.6
135 h 40
136 type "roundrectangle"
137 fill "#FFCC00"
138 outline "#000000"
139 ]
140 LabelGraphics
141 [
142 ]
143 LabelGraphics
144 [
145 text "[Pseudostate class, Entry class, Vertex class] (1)"
146 fontSize 14
147 fontName "Dialog"
148 ]
149 ]
150 node
151 [
152 id 7
153 graphics
154 [
155 w 145.20000000000002
156 h 40
157 type "roundrectangle"
158 fill "#FFCC00"
159 outline "#000000"
160 ]
161 LabelGraphics
162 [
163 ]
164 LabelGraphics
165 [
166 text "[Region class] (1)"
167 fontSize 14
168 fontName "Dialog"
169 ]
170 ]
171 node
172 [
173 id 8
174 graphics
175 [
176 w 176.0
177 h 40
178 type "roundrectangle"
179 fill "#FFCC00"
180 outline "#000000"
181 ]
182 LabelGraphics
183 [
184 ]
185 LabelGraphics
186 [
187 text "[Transition class] (1)"
188 fontSize 14
189 fontName "Dialog"
190 ]
191 ]
192 edge
193 [
194 source 2
195 target 7
196 label "regions reference CompositeElement"
197 graphics
198 [
199 fill "#000000"
200 targetArrow "standard"
201 ]
202 LabelGraphics
203 [
204 text "regions reference CompositeElement"
205 fontSize 12
206 fontName "Dialog"
207 configuration "AutoFlippingLabel"
208 model "six_pos"
209 position "head"
210 ]
211 LabelGraphics
212 [
213 text "[1]"
214 fontSize 12
215 fontName "Dialog"
216 configuration "AutoFlippingLabel"
217 model "six_pos"
218 position "stail"
219 ]
220 LabelGraphics
221 [
222 text "[1]"
223 fontSize 12
224 fontName "Dialog"
225 configuration "AutoFlippingLabel"
226 model "six_pos"
227 position "ttail"
228 ]
229 ]
230 edge
231 [
232 source 5
233 target 0
234 label "incomingTransitions reference Vertex"
235 graphics
236 [
237 fill "#000000"
238 targetArrow "standard"
239 ]
240 LabelGraphics
241 [
242 text "incomingTransitions reference Vertex"
243 fontSize 12
244 fontName "Dialog"
245 configuration "AutoFlippingLabel"
246 model "six_pos"
247 position "head"
248 ]
249 LabelGraphics
250 [
251 text "[1]"
252 fontSize 12
253 fontName "Dialog"
254 configuration "AutoFlippingLabel"
255 model "six_pos"
256 position "stail"
257 ]
258 LabelGraphics
259 [
260 text "[1, 0, 0, 0, 0, 0, 1]"
261 fontSize 12
262 fontName "Dialog"
263 configuration "AutoFlippingLabel"
264 model "six_pos"
265 position "ttail"
266 ]
267 ]
268 edge
269 [
270 source 5
271 target 0
272 label "outgoingTransitions reference Vertex"
273 graphics
274 [
275 fill "#000000"
276 targetArrow "standard"
277 ]
278 LabelGraphics
279 [
280 text "outgoingTransitions reference Vertex"
281 fontSize 12
282 fontName "Dialog"
283 configuration "AutoFlippingLabel"
284 model "six_pos"
285 position "head"
286 ]
287 LabelGraphics
288 [
289 text "[1]"
290 fontSize 12
291 fontName "Dialog"
292 configuration "AutoFlippingLabel"
293 model "six_pos"
294 position "stail"
295 ]
296 LabelGraphics
297 [
298 text "[1, 1, 0, 0, 0, 0, 1, 1]"
299 fontSize 12
300 fontName "Dialog"
301 configuration "AutoFlippingLabel"
302 model "six_pos"
303 position "ttail"
304 ]
305 ]
306 edge
307 [
308 source 4
309 target 0
310 label "incomingTransitions reference Vertex"
311 graphics
312 [
313 fill "#000000"
314 targetArrow "standard"
315 ]
316 LabelGraphics
317 [
318 text "incomingTransitions reference Vertex"
319 fontSize 12
320 fontName "Dialog"
321 configuration "AutoFlippingLabel"
322 model "six_pos"
323 position "head"
324 ]
325 LabelGraphics
326 [
327 text "[2]"
328 fontSize 12
329 fontName "Dialog"
330 configuration "AutoFlippingLabel"
331 model "six_pos"
332 position "stail"
333 ]
334 LabelGraphics
335 [
336 text "[1, 1, 0, 0, 0, 0, 1, 1]"
337 fontSize 12
338 fontName "Dialog"
339 configuration "AutoFlippingLabel"
340 model "six_pos"
341 position "ttail"
342 ]
343 ]
344 edge
345 [
346 source 4
347 target 0
348 label "outgoingTransitions reference Vertex"
349 graphics
350 [
351 fill "#000000"
352 targetArrow "standard"
353 ]
354 LabelGraphics
355 [
356 text "outgoingTransitions reference Vertex"
357 fontSize 12
358 fontName "Dialog"
359 configuration "AutoFlippingLabel"
360 model "six_pos"
361 position "head"
362 ]
363 LabelGraphics
364 [
365 text "[4]"
366 fontSize 12
367 fontName "Dialog"
368 configuration "AutoFlippingLabel"
369 model "six_pos"
370 position "stail"
371 ]
372 LabelGraphics
373 [
374 text "[1, 1, 1, 0, 0, 0, 1, 1, 1]"
375 fontSize 12
376 fontName "Dialog"
377 configuration "AutoFlippingLabel"
378 model "six_pos"
379 position "ttail"
380 ]
381 ]
382 edge
383 [
384 source 3
385 target 0
386 label "incomingTransitions reference Vertex"
387 graphics
388 [
389 fill "#000000"
390 targetArrow "standard"
391 ]
392 LabelGraphics
393 [
394 text "incomingTransitions reference Vertex"
395 fontSize 12
396 fontName "Dialog"
397 configuration "AutoFlippingLabel"
398 model "six_pos"
399 position "head"
400 ]
401 LabelGraphics
402 [
403 text "[1, 2]"
404 fontSize 12
405 fontName "Dialog"
406 configuration "AutoFlippingLabel"
407 model "six_pos"
408 position "stail"
409 ]
410 LabelGraphics
411 [
412 text "[1, 1, 0, 0, 0, 0, 1, 1]"
413 fontSize 12
414 fontName "Dialog"
415 configuration "AutoFlippingLabel"
416 model "six_pos"
417 position "ttail"
418 ]
419 ]
420 edge
421 [
422 source 3
423 target 0
424 label "outgoingTransitions reference Vertex"
425 graphics
426 [
427 fill "#000000"
428 targetArrow "standard"
429 ]
430 LabelGraphics
431 [
432 text "outgoingTransitions reference Vertex"
433 fontSize 12
434 fontName "Dialog"
435 configuration "AutoFlippingLabel"
436 model "six_pos"
437 position "head"
438 ]
439 LabelGraphics
440 [
441 text "[1]"
442 fontSize 12
443 fontName "Dialog"
444 configuration "AutoFlippingLabel"
445 model "six_pos"
446 position "stail"
447 ]
448 LabelGraphics
449 [
450 text "[1, 0, 0, 0, 0, 0, 1]"
451 fontSize 12
452 fontName "Dialog"
453 configuration "AutoFlippingLabel"
454 model "six_pos"
455 position "ttail"
456 ]
457 ]
458 edge
459 [
460 source 6
461 target 8
462 label "outgoingTransitions reference Vertex"
463 graphics
464 [
465 fill "#000000"
466 targetArrow "standard"
467 ]
468 LabelGraphics
469 [
470 text "outgoingTransitions reference Vertex"
471 fontSize 12
472 fontName "Dialog"
473 configuration "AutoFlippingLabel"
474 model "six_pos"
475 position "head"
476 ]
477 LabelGraphics
478 [
479 text "[1]"
480 fontSize 12
481 fontName "Dialog"
482 configuration "AutoFlippingLabel"
483 model "six_pos"
484 position "stail"
485 ]
486 LabelGraphics
487 [
488 text "[1]"
489 fontSize 12
490 fontName "Dialog"
491 configuration "AutoFlippingLabel"
492 model "six_pos"
493 position "ttail"
494 ]
495 ]
496 edge
497 [
498 source 7
499 target 6
500 label "vertices reference Region"
501 graphics
502 [
503 fill "#000000"
504 targetArrow "standard"
505 ]
506 LabelGraphics
507 [
508 text "vertices reference Region"
509 fontSize 12
510 fontName "Dialog"
511 configuration "AutoFlippingLabel"
512 model "six_pos"
513 position "head"
514 ]
515 LabelGraphics
516 [
517 text "[1, 1, 1, 2, 1]"
518 fontSize 12
519 fontName "Dialog"
520 configuration "AutoFlippingLabel"
521 model "six_pos"
522 position "stail"
523 ]
524 LabelGraphics
525 [
526 text "[1]"
527 fontSize 12
528 fontName "Dialog"
529 configuration "AutoFlippingLabel"
530 model "six_pos"
531 position "ttail"
532 ]
533 ]
534 edge
535 [
536 source 0
537 target 1
538 label "target reference Transition"
539 graphics
540 [
541 fill "#000000"
542 targetArrow "standard"
543 ]
544 LabelGraphics
545 [
546 text "target reference Transition"
547 fontSize 12
548 fontName "Dialog"
549 configuration "AutoFlippingLabel"
550 model "six_pos"
551 position "head"
552 ]
553 LabelGraphics
554 [
555 text "[1, 1, 1, 1, 1, 1]"
556 fontSize 12
557 fontName "Dialog"
558 configuration "AutoFlippingLabel"
559 model "six_pos"
560 position "stail"
561 ]
562 LabelGraphics
563 [
564 text "[1, 2]"
565 fontSize 12
566 fontName "Dialog"
567 configuration "AutoFlippingLabel"
568 model "six_pos"
569 position "ttail"
570 ]
571 ]
572 edge
573 [
574 source 0
575 target 4
576 label "source reference Transition"
577 graphics
578 [
579 fill "#000000"
580 targetArrow "standard"
581 ]
582 LabelGraphics
583 [
584 text "source reference Transition"
585 fontSize 12
586 fontName "Dialog"
587 configuration "AutoFlippingLabel"
588 model "six_pos"
589 position "head"
590 ]
591 LabelGraphics
592 [
593 text "[1, 1, 1, 1, 1, 1]"
594 fontSize 12
595 fontName "Dialog"
596 configuration "AutoFlippingLabel"
597 model "six_pos"
598 position "stail"
599 ]
600 LabelGraphics
601 [
602 text "[4]"
603 fontSize 12
604 fontName "Dialog"
605 configuration "AutoFlippingLabel"
606 model "six_pos"
607 position "ttail"
608 ]
609 ]
610 edge
611 [
612 source 1
613 target 0
614 label "incomingTransitions reference Vertex"
615 graphics
616 [
617 fill "#000000"
618 targetArrow "standard"
619 ]
620 LabelGraphics
621 [
622 text "incomingTransitions reference Vertex"
623 fontSize 12
624 fontName "Dialog"
625 configuration "AutoFlippingLabel"
626 model "six_pos"
627 position "head"
628 ]
629 LabelGraphics
630 [
631 text "[1]"
632 fontSize 12
633 fontName "Dialog"
634 configuration "AutoFlippingLabel"
635 model "six_pos"
636 position "stail"
637 ]
638 LabelGraphics
639 [
640 text "[1, 0, 0, 0, 0, 0]"
641 fontSize 12
642 fontName "Dialog"
643 configuration "AutoFlippingLabel"
644 model "six_pos"
645 position "ttail"
646 ]
647 ]
648 edge
649 [
650 source 8
651 target 3
652 label "target reference Transition"
653 graphics
654 [
655 fill "#000000"
656 targetArrow "standard"
657 ]
658 LabelGraphics
659 [
660 text "target reference Transition"
661 fontSize 12
662 fontName "Dialog"
663 configuration "AutoFlippingLabel"
664 model "six_pos"
665 position "head"
666 ]
667 LabelGraphics
668 [
669 text "[1]"
670 fontSize 12
671 fontName "Dialog"
672 configuration "AutoFlippingLabel"
673 model "six_pos"
674 position "stail"
675 ]
676 LabelGraphics
677 [
678 text "[1]"
679 fontSize 12
680 fontName "Dialog"
681 configuration "AutoFlippingLabel"
682 model "six_pos"
683 position "ttail"
684 ]
685 ]
686 edge
687 [
688 source 8
689 target 6
690 label "source reference Transition"
691 graphics
692 [
693 fill "#000000"
694 targetArrow "standard"
695 ]
696 LabelGraphics
697 [
698 text "source reference Transition"
699 fontSize 12
700 fontName "Dialog"
701 configuration "AutoFlippingLabel"
702 model "six_pos"
703 position "head"
704 ]
705 LabelGraphics
706 [
707 text "[1]"
708 fontSize 12
709 fontName "Dialog"
710 configuration "AutoFlippingLabel"
711 model "six_pos"
712 position "stail"
713 ]
714 LabelGraphics
715 [
716 text "[1]"
717 fontSize 12
718 fontName "Dialog"
719 configuration "AutoFlippingLabel"
720 model "six_pos"
721 position "ttail"
722 ]
723 ]
724]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLMODEL.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLMODEL.gml
new file mode 100644
index 00000000..aad12394
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLMODEL.gml
@@ -0,0 +1,696 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 41.800000000000004
9 h 26
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "true"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 "
30 fontSize 14
31 fontName "Consolas"
32 alignment "left"
33 anchor "tl"
34 borderDistance 6
35 ]
36 ]
37
38 node
39 [
40 id 1
41 graphics
42 [
43 w 50.6
44 h 26
45 type "rectangle"
46 fill "#FFFFFF"
47 fill2 "#FFFFFF"
48 outline "#000000"
49 ]
50 LabelGraphics
51 [
52 text "false"
53 outline "#000000"
54 fill "#FFFFFF"
55 fontSize 16
56 fontName "Monospace"
57 autoSizePolicy "node_width"
58 anchor "t"
59 borderDistance 0.0
60 ]
61 LabelGraphics
62 [
63 text "
64 "
65 fontSize 14
66 fontName "Consolas"
67 alignment "left"
68 anchor "tl"
69 borderDistance 6
70 ]
71 ]
72
73 node
74 [
75 id 2
76 graphics
77 [
78 w 92.4
79 h 40
80 type "rectangle"
81 fill "#FFFFFF"
82 fill2 "#FFFFFF"
83 outline "#000000"
84 ]
85 LabelGraphics
86 [
87 text "null"
88 outline "#000000"
89 fill "#FFFFFF"
90 fontSize 16
91 fontName "Monospace"
92 autoSizePolicy "node_width"
93 anchor "t"
94 borderDistance 0.0
95 ]
96 LabelGraphics
97 [
98 text "
99 List class
100 "
101 fontSize 14
102 fontName "Consolas"
103 alignment "left"
104 anchor "tl"
105 borderDistance 6
106 ]
107 ]
108
109 node
110 [
111 id 3
112 graphics
113 [
114 w 115.50000000000001
115 h 40
116 type "rectangle"
117 fill "#FFFFFF"
118 fill2 "#FFFFFF"
119 outline "#000000"
120 ]
121 LabelGraphics
122 [
123 text "null"
124 outline "#000000"
125 fill "#FFFFFF"
126 fontSize 16
127 fontName "Monospace"
128 autoSizePolicy "node_width"
129 anchor "t"
130 borderDistance 0.0
131 ]
132 LabelGraphics
133 [
134 text "
135 Element class
136 "
137 fontSize 14
138 fontName "Consolas"
139 alignment "left"
140 anchor "tl"
141 borderDistance 6
142 ]
143 ]
144
145 node
146 [
147 id 4
148 graphics
149 [
150 w 107.80000000000001
151 h 40
152 type "rectangle"
153 fill "#FFFFFF"
154 fill2 "#FFFFFF"
155 outline "#000000"
156 ]
157 LabelGraphics
158 [
159 text "null"
160 outline "#000000"
161 fill "#FFFFFF"
162 fontSize 16
163 fontName "Monospace"
164 autoSizePolicy "node_width"
165 anchor "t"
166 borderDistance 0.0
167 ]
168 LabelGraphics
169 [
170 text "
171 Object class
172 "
173 fontSize 14
174 fontName "Consolas"
175 alignment "left"
176 anchor "tl"
177 borderDistance 6
178 ]
179 ]
180
181 node
182 [
183 id 5
184 graphics
185 [
186 w 115.50000000000001
187 h 40
188 type "rectangle"
189 fill "#FFFFFF"
190 fill2 "#FFFFFF"
191 outline "#000000"
192 ]
193 LabelGraphics
194 [
195 text "null"
196 outline "#000000"
197 fill "#FFFFFF"
198 fontSize 16
199 fontName "Monospace"
200 autoSizePolicy "node_width"
201 anchor "t"
202 borderDistance 0.0
203 ]
204 LabelGraphics
205 [
206 text "
207 Element class
208 "
209 fontSize 14
210 fontName "Consolas"
211 alignment "left"
212 anchor "tl"
213 borderDistance 6
214 ]
215 ]
216
217 node
218 [
219 id 6
220 graphics
221 [
222 w 107.80000000000001
223 h 40
224 type "rectangle"
225 fill "#FFFFFF"
226 fill2 "#FFFFFF"
227 outline "#000000"
228 ]
229 LabelGraphics
230 [
231 text "null"
232 outline "#000000"
233 fill "#FFFFFF"
234 fontSize 16
235 fontName "Monospace"
236 autoSizePolicy "node_width"
237 anchor "t"
238 borderDistance 0.0
239 ]
240 LabelGraphics
241 [
242 text "
243 Object class
244 "
245 fontSize 14
246 fontName "Consolas"
247 alignment "left"
248 anchor "tl"
249 borderDistance 6
250 ]
251 ]
252
253 node
254 [
255 id 7
256 graphics
257 [
258 w 115.50000000000001
259 h 40
260 type "rectangle"
261 fill "#FFFFFF"
262 fill2 "#FFFFFF"
263 outline "#000000"
264 ]
265 LabelGraphics
266 [
267 text "null"
268 outline "#000000"
269 fill "#FFFFFF"
270 fontSize 16
271 fontName "Monospace"
272 autoSizePolicy "node_width"
273 anchor "t"
274 borderDistance 0.0
275 ]
276 LabelGraphics
277 [
278 text "
279 Element class
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 107.80000000000001
295 h 40
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 Object class
316 "
317 fontSize 14
318 fontName "Consolas"
319 alignment "left"
320 anchor "tl"
321 borderDistance 6
322 ]
323 ]
324
325 node
326 [
327 id 9
328 graphics
329 [
330 w 115.50000000000001
331 h 40
332 type "rectangle"
333 fill "#FFFFFF"
334 fill2 "#FFFFFF"
335 outline "#000000"
336 ]
337 LabelGraphics
338 [
339 text "null"
340 outline "#000000"
341 fill "#FFFFFF"
342 fontSize 16
343 fontName "Monospace"
344 autoSizePolicy "node_width"
345 anchor "t"
346 borderDistance 0.0
347 ]
348 LabelGraphics
349 [
350 text "
351 Element class
352 "
353 fontSize 14
354 fontName "Consolas"
355 alignment "left"
356 anchor "tl"
357 borderDistance 6
358 ]
359 ]
360
361 node
362 [
363 id 10
364 graphics
365 [
366 w 107.80000000000001
367 h 40
368 type "rectangle"
369 fill "#FFFFFF"
370 fill2 "#FFFFFF"
371 outline "#000000"
372 ]
373 LabelGraphics
374 [
375 text "null"
376 outline "#000000"
377 fill "#FFFFFF"
378 fontSize 16
379 fontName "Monospace"
380 autoSizePolicy "node_width"
381 anchor "t"
382 borderDistance 0.0
383 ]
384 LabelGraphics
385 [
386 text "
387 Object class
388 "
389 fontSize 14
390 fontName "Consolas"
391 alignment "left"
392 anchor "tl"
393 borderDistance 6
394 ]
395 ]
396
397 node
398 [
399 id 11
400 graphics
401 [
402 w 112.2
403 h 26
404 type "rectangle"
405 fill "#FFFFFF"
406 fill2 "#FFFFFF"
407 outline "#000000"
408 ]
409 LabelGraphics
410 [
411 text "New Integers"
412 outline "#000000"
413 fill "#FFFFFF"
414 fontSize 16
415 fontName "Monospace"
416 autoSizePolicy "node_width"
417 anchor "t"
418 borderDistance 0.0
419 ]
420 LabelGraphics
421 [
422 text "
423 "
424 fontSize 14
425 fontName "Consolas"
426 alignment "left"
427 anchor "tl"
428 borderDistance 6
429 ]
430 ]
431
432 node
433 [
434 id 12
435 graphics
436 [
437 w 85.80000000000001
438 h 26
439 type "rectangle"
440 fill "#FFFFFF"
441 fill2 "#FFFFFF"
442 outline "#000000"
443 ]
444 LabelGraphics
445 [
446 text "New Reals"
447 outline "#000000"
448 fill "#FFFFFF"
449 fontSize 16
450 fontName "Monospace"
451 autoSizePolicy "node_width"
452 anchor "t"
453 borderDistance 0.0
454 ]
455 LabelGraphics
456 [
457 text "
458 "
459 fontSize 14
460 fontName "Consolas"
461 alignment "left"
462 anchor "tl"
463 borderDistance 6
464 ]
465 ]
466
467 node
468 [
469 id 13
470 graphics
471 [
472 w 103.4
473 h 26
474 type "rectangle"
475 fill "#FFFFFF"
476 fill2 "#FFFFFF"
477 outline "#000000"
478 ]
479 LabelGraphics
480 [
481 text "New Strings"
482 outline "#000000"
483 fill "#FFFFFF"
484 fontSize 16
485 fontName "Monospace"
486 autoSizePolicy "node_width"
487 anchor "t"
488 borderDistance 0.0
489 ]
490 LabelGraphics
491 [
492 text "
493 "
494 fontSize 14
495 fontName "Consolas"
496 alignment "left"
497 anchor "tl"
498 borderDistance 6
499 ]
500 ]
501
502 node
503 [
504 id 14
505 graphics
506 [
507 w 103.4
508 h 26
509 type "rectangle"
510 fill "#FFFFFF"
511 fill2 "#FFFFFF"
512 outline "#000000"
513 ]
514 LabelGraphics
515 [
516 text "New Objects"
517 outline "#000000"
518 fill "#FFFFFF"
519 fontSize 16
520 fontName "Monospace"
521 autoSizePolicy "node_width"
522 anchor "t"
523 borderDistance 0.0
524 ]
525 LabelGraphics
526 [
527 text "
528 "
529 fontSize 14
530 fontName "Consolas"
531 alignment "left"
532 anchor "tl"
533 borderDistance 6
534 ]
535 ]
536 edge
537 [
538 source 2
539 target 3
540 graphics
541 [
542 fill "#000000"
543 width 3
544 targetArrow "standard"
545 ]
546 LabelGraphics
547 [
548 text "first reference List"
549 fontSize 14
550 fontName "Consolas"
551 configuration "AutoFlippingLabel"
552 model "six_pos"
553 position "thead"
554 ]
555 ]
556 edge
557 [
558 source 3
559 target 4
560 graphics
561 [
562 fill "#000000"
563 width 3
564 targetArrow "standard"
565 ]
566 LabelGraphics
567 [
568 text "value reference Element"
569 fontSize 14
570 fontName "Consolas"
571 configuration "AutoFlippingLabel"
572 model "six_pos"
573 position "thead"
574 ]
575 ]
576 edge
577 [
578 source 5
579 target 6
580 graphics
581 [
582 fill "#000000"
583 width 3
584 targetArrow "standard"
585 ]
586 LabelGraphics
587 [
588 text "value reference Element"
589 fontSize 14
590 fontName "Consolas"
591 configuration "AutoFlippingLabel"
592 model "six_pos"
593 position "thead"
594 ]
595 ]
596 edge
597 [
598 source 7
599 target 8
600 graphics
601 [
602 fill "#000000"
603 width 3
604 targetArrow "standard"
605 ]
606 LabelGraphics
607 [
608 text "value reference Element"
609 fontSize 14
610 fontName "Consolas"
611 configuration "AutoFlippingLabel"
612 model "six_pos"
613 position "thead"
614 ]
615 ]
616 edge
617 [
618 source 9
619 target 10
620 graphics
621 [
622 fill "#000000"
623 width 3
624 targetArrow "standard"
625 ]
626 LabelGraphics
627 [
628 text "value reference Element"
629 fontSize 14
630 fontName "Consolas"
631 configuration "AutoFlippingLabel"
632 model "six_pos"
633 position "thead"
634 ]
635 ]
636 edge
637 [
638 source 3
639 target 5
640 graphics
641 [
642 fill "#000000"
643 width 3
644 targetArrow "standard"
645 ]
646 LabelGraphics
647 [
648 text "next reference Element"
649 fontSize 14
650 fontName "Consolas"
651 configuration "AutoFlippingLabel"
652 model "six_pos"
653 position "thead"
654 ]
655 ]
656 edge
657 [
658 source 5
659 target 7
660 graphics
661 [
662 fill "#000000"
663 width 3
664 targetArrow "standard"
665 ]
666 LabelGraphics
667 [
668 text "next reference Element"
669 fontSize 14
670 fontName "Consolas"
671 configuration "AutoFlippingLabel"
672 model "six_pos"
673 position "thead"
674 ]
675 ]
676 edge
677 [
678 source 7
679 target 9
680 graphics
681 [
682 fill "#000000"
683 width 3
684 targetArrow "standard"
685 ]
686 LabelGraphics
687 [
688 text "next reference Element"
689 fontSize 14
690 fontName "Consolas"
691 configuration "AutoFlippingLabel"
692 model "six_pos"
693 position "thead"
694 ]
695 ]
696]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLNEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLNEIGHBOURHOOD.gml
new file mode 100644
index 00000000..2ad22a58
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleLLNEIGHBOURHOOD.gml
@@ -0,0 +1,336 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 145.20000000000002
9 h 40
10 type "roundrectangle"
11 fill "#FFCC00"
12 outline "#000000"
13 ]
14 LabelGraphics
15 [
16 ]
17 LabelGraphics
18 [
19 text "[Object class] (4)"
20 fontSize 14
21 fontName "Dialog"
22 ]
23 ]
24 node
25 [
26 id 1
27 graphics
28 [
29 w 129.8
30 h 40
31 type "roundrectangle"
32 fill "#FFCC00"
33 outline "#000000"
34 ]
35 LabelGraphics
36 [
37 ]
38 LabelGraphics
39 [
40 text "[List class] (1)"
41 fontSize 14
42 fontName "Dialog"
43 ]
44 ]
45 node
46 [
47 id 2
48 graphics
49 [
50 w 152.9
51 h 40
52 type "roundrectangle"
53 fill "#FFCC00"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 ]
59 LabelGraphics
60 [
61 text "[Element class] (1)"
62 fontSize 14
63 fontName "Dialog"
64 ]
65 ]
66 node
67 [
68 id 3
69 graphics
70 [
71 w 152.9
72 h 40
73 type "roundrectangle"
74 fill "#FFCC00"
75 outline "#000000"
76 ]
77 LabelGraphics
78 [
79 ]
80 LabelGraphics
81 [
82 text "[Element class] (1)"
83 fontSize 14
84 fontName "Dialog"
85 ]
86 ]
87 node
88 [
89 id 4
90 graphics
91 [
92 w 152.9
93 h 40
94 type "roundrectangle"
95 fill "#FFCC00"
96 outline "#000000"
97 ]
98 LabelGraphics
99 [
100 ]
101 LabelGraphics
102 [
103 text "[Element class] (2)"
104 fontSize 14
105 fontName "Dialog"
106 ]
107 ]
108 edge
109 [
110 source 1
111 target 2
112 label "first reference List"
113 graphics
114 [
115 fill "#000000"
116 targetArrow "standard"
117 ]
118 LabelGraphics
119 [
120 text "first reference List"
121 fontSize 12
122 fontName "Dialog"
123 configuration "AutoFlippingLabel"
124 model "six_pos"
125 position "head"
126 ]
127 LabelGraphics
128 [
129 text "[1]"
130 fontSize 12
131 fontName "Dialog"
132 configuration "AutoFlippingLabel"
133 model "six_pos"
134 position "stail"
135 ]
136 LabelGraphics
137 [
138 text "[1]"
139 fontSize 12
140 fontName "Dialog"
141 configuration "AutoFlippingLabel"
142 model "six_pos"
143 position "ttail"
144 ]
145 ]
146 edge
147 [
148 source 2
149 target 4
150 label "next reference Element"
151 graphics
152 [
153 fill "#000000"
154 targetArrow "standard"
155 ]
156 LabelGraphics
157 [
158 text "next reference Element"
159 fontSize 12
160 fontName "Dialog"
161 configuration "AutoFlippingLabel"
162 model "six_pos"
163 position "head"
164 ]
165 LabelGraphics
166 [
167 text "[1]"
168 fontSize 12
169 fontName "Dialog"
170 configuration "AutoFlippingLabel"
171 model "six_pos"
172 position "stail"
173 ]
174 LabelGraphics
175 [
176 text "[1, 0]"
177 fontSize 12
178 fontName "Dialog"
179 configuration "AutoFlippingLabel"
180 model "six_pos"
181 position "ttail"
182 ]
183 ]
184 edge
185 [
186 source 2
187 target 0
188 label "value reference Element"
189 graphics
190 [
191 fill "#000000"
192 targetArrow "standard"
193 ]
194 LabelGraphics
195 [
196 text "value reference Element"
197 fontSize 12
198 fontName "Dialog"
199 configuration "AutoFlippingLabel"
200 model "six_pos"
201 position "head"
202 ]
203 LabelGraphics
204 [
205 text "[1]"
206 fontSize 12
207 fontName "Dialog"
208 configuration "AutoFlippingLabel"
209 model "six_pos"
210 position "stail"
211 ]
212 LabelGraphics
213 [
214 text "[1, 0, 0]"
215 fontSize 12
216 fontName "Dialog"
217 configuration "AutoFlippingLabel"
218 model "six_pos"
219 position "ttail"
220 ]
221 ]
222 edge
223 [
224 source 3
225 target 0
226 label "value reference Element"
227 graphics
228 [
229 fill "#000000"
230 targetArrow "standard"
231 ]
232 LabelGraphics
233 [
234 text "value reference Element"
235 fontSize 12
236 fontName "Dialog"
237 configuration "AutoFlippingLabel"
238 model "six_pos"
239 position "head"
240 ]
241 LabelGraphics
242 [
243 text "[1]"
244 fontSize 12
245 fontName "Dialog"
246 configuration "AutoFlippingLabel"
247 model "six_pos"
248 position "stail"
249 ]
250 LabelGraphics
251 [
252 text "[1, 0, 0]"
253 fontSize 12
254 fontName "Dialog"
255 configuration "AutoFlippingLabel"
256 model "six_pos"
257 position "ttail"
258 ]
259 ]
260 edge
261 [
262 source 4
263 target 3
264 label "next reference Element"
265 graphics
266 [
267 fill "#000000"
268 targetArrow "standard"
269 ]
270 LabelGraphics
271 [
272 text "next reference Element"
273 fontSize 12
274 fontName "Dialog"
275 configuration "AutoFlippingLabel"
276 model "six_pos"
277 position "head"
278 ]
279 LabelGraphics
280 [
281 text "[1, 1]"
282 fontSize 12
283 fontName "Dialog"
284 configuration "AutoFlippingLabel"
285 model "six_pos"
286 position "stail"
287 ]
288 LabelGraphics
289 [
290 text "[1]"
291 fontSize 12
292 fontName "Dialog"
293 configuration "AutoFlippingLabel"
294 model "six_pos"
295 position "ttail"
296 ]
297 ]
298 edge
299 [
300 source 4
301 target 0
302 label "value reference Element"
303 graphics
304 [
305 fill "#000000"
306 targetArrow "standard"
307 ]
308 LabelGraphics
309 [
310 text "value reference Element"
311 fontSize 12
312 fontName "Dialog"
313 configuration "AutoFlippingLabel"
314 model "six_pos"
315 position "head"
316 ]
317 LabelGraphics
318 [
319 text "[1, 1]"
320 fontSize 12
321 fontName "Dialog"
322 configuration "AutoFlippingLabel"
323 model "six_pos"
324 position "stail"
325 ]
326 LabelGraphics
327 [
328 text "[1, 0, 0]"
329 fontSize 12
330 fontName "Dialog"
331 configuration "AutoFlippingLabel"
332 model "six_pos"
333 position "ttail"
334 ]
335 ]
336]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic0NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic0NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..0cfc9216
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic0NEIGHBOURHOOD.gml
@@ -0,0 +1,304 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x 95.0
15 y -28.0
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[State class] (5)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x 357.0
40 y -28.0
41 w 176.0
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[Statechart class] (1)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x -158.0
65 y -28.0
66 w 137.5
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[Entry class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 edge
84 [
85 source 0
86 target 0
87 label "next reference State"
88 graphics
89 [
90 fill "#000000"
91 targetArrow "standard"
92 Line
93 [
94 point
95 [
96 x 95.0
97 y -28.0
98 ]
99 point
100 [
101 x 105.0
102 y -199.0
103 ]
104 point
105 [
106 x 95.0
107 y -28.0
108 ]
109 ]
110 ]
111 LabelGraphics
112 [
113 text "next reference State"
114 fontSize 12
115 fontName "Dialog"
116 configuration "AutoFlippingLabel"
117 contentWidth 112.064453125
118 contentHeight 18.701171875
119 model "six_pos"
120 position "head"
121 ]
122 LabelGraphics
123 [
124 text "[1, 1]"
125 fontSize 12
126 fontName "Dialog"
127 configuration "AutoFlippingLabel"
128 contentWidth 30.68359375
129 contentHeight 18.701171875
130 model "six_pos"
131 position "stail"
132 ]
133 LabelGraphics
134 [
135 text "[1, 1]"
136 fontSize 12
137 fontName "Dialog"
138 configuration "AutoFlippingLabel"
139 contentWidth 30.68359375
140 contentHeight 18.701171875
141 model "six_pos"
142 position "shead"
143 ]
144 ]
145 edge
146 [
147 source 1
148 target 0
149 label "state reference Statechart"
150 graphics
151 [
152 fill "#000000"
153 targetArrow "standard"
154 ]
155 LabelGraphics
156 [
157 text "state reference Statechart"
158 fontSize 12
159 fontName "Dialog"
160 configuration "AutoFlippingLabel"
161 contentWidth 142.076171875
162 contentHeight 18.701171875
163 model "six_pos"
164 position "head"
165 ]
166 LabelGraphics
167 [
168 text "[5]"
169 fontSize 12
170 fontName "Dialog"
171 configuration "AutoFlippingLabel"
172 contentWidth 17.341796875
173 contentHeight 18.701171875
174 model "six_pos"
175 position "stail"
176 ]
177 LabelGraphics
178 [
179 text "[1, 1]"
180 fontSize 12
181 fontName "Dialog"
182 configuration "AutoFlippingLabel"
183 contentWidth 30.68359375
184 contentHeight 18.701171875
185 model "six_pos"
186 position "ttail"
187 ]
188 ]
189 edge
190 [
191 source 1
192 target 2
193 label "entry reference Statechart"
194 graphics
195 [
196 fill "#000000"
197 targetArrow "standard"
198 Line
199 [
200 point
201 [
202 x 357.0
203 y -28.0
204 ]
205 point
206 [
207 x 357.0
208 y 130.0
209 ]
210 point
211 [
212 x -158.0
213 y 130.0
214 ]
215 point
216 [
217 x -158.0
218 y -28.0
219 ]
220 ]
221 ]
222 edgeAnchor
223 [
224 ySource 1.0
225 ]
226 LabelGraphics
227 [
228 text "entry reference Statechart"
229 fontSize 12
230 fontName "Dialog"
231 configuration "AutoFlippingLabel"
232 contentWidth 142.73828125
233 contentHeight 18.701171875
234 model "six_pos"
235 position "head"
236 ]
237 LabelGraphics
238 [
239 text "[1]"
240 fontSize 12
241 fontName "Dialog"
242 configuration "AutoFlippingLabel"
243 contentWidth 17.341796875
244 contentHeight 18.701171875
245 model "six_pos"
246 position "stail"
247 ]
248 LabelGraphics
249 [
250 text "[1]"
251 fontSize 12
252 fontName "Dialog"
253 configuration "AutoFlippingLabel"
254 contentWidth 17.341796875
255 contentHeight 18.701171875
256 model "six_pos"
257 position "ttail"
258 ]
259 ]
260 edge
261 [
262 source 2
263 target 0
264 label "entry reference Entry"
265 graphics
266 [
267 fill "#000000"
268 targetArrow "standard"
269 ]
270 LabelGraphics
271 [
272 text "entry reference Entry"
273 fontSize 12
274 fontName "Dialog"
275 configuration "AutoFlippingLabel"
276 contentWidth 116.048828125
277 contentHeight 18.701171875
278 model "six_pos"
279 position "head"
280 ]
281 LabelGraphics
282 [
283 text "[1]"
284 fontSize 12
285 fontName "Dialog"
286 configuration "AutoFlippingLabel"
287 contentWidth 17.341796875
288 contentHeight 18.701171875
289 model "six_pos"
290 position "stail"
291 ]
292 LabelGraphics
293 [
294 text "[1, 0]"
295 fontSize 12
296 fontName "Dialog"
297 configuration "AutoFlippingLabel"
298 contentWidth 30.68359375
299 contentHeight 18.701171875
300 model "six_pos"
301 position "ttail"
302 ]
303 ]
304]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic1NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic1NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..868b39c5
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic1NEIGHBOURHOOD.gml
@@ -0,0 +1,374 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 137.5
9 h 40
10 type "roundrectangle"
11 fill "#FFCC00"
12 outline "#000000"
13 ]
14 LabelGraphics
15 [
16 ]
17 LabelGraphics
18 [
19 text "[Entry class] (1)"
20 fontSize 14
21 fontName "Dialog"
22 ]
23 ]
24 node
25 [
26 id 1
27 graphics
28 [
29 w 137.5
30 h 40
31 type "roundrectangle"
32 fill "#FFCC00"
33 outline "#000000"
34 ]
35 LabelGraphics
36 [
37 ]
38 LabelGraphics
39 [
40 text "[State class] (4)"
41 fontSize 14
42 fontName "Dialog"
43 ]
44 ]
45 node
46 [
47 id 2
48 graphics
49 [
50 w 176.0
51 h 40
52 type "roundrectangle"
53 fill "#FFCC00"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 ]
59 LabelGraphics
60 [
61 text "[Statechart class] (1)"
62 fontSize 14
63 fontName "Dialog"
64 ]
65 ]
66 node
67 [
68 id 3
69 graphics
70 [
71 w 137.5
72 h 40
73 type "roundrectangle"
74 fill "#FFCC00"
75 outline "#000000"
76 ]
77 LabelGraphics
78 [
79 ]
80 LabelGraphics
81 [
82 text "[State class] (1)"
83 fontSize 14
84 fontName "Dialog"
85 ]
86 ]
87 edge
88 [
89 source 0
90 target 3
91 label "entry reference Entry"
92 graphics
93 [
94 fill "#000000"
95 targetArrow "standard"
96 Line
97 [
98 ]
99 ]
100 LabelGraphics
101 [
102 text "entry reference Entry"
103 fontSize 12
104 fontName "Dialog"
105 configuration "AutoFlippingLabel"
106 model "six_pos"
107 position "head"
108 ]
109 LabelGraphics
110 [
111 text "[1]"
112 fontSize 12
113 fontName "Dialog"
114 configuration "AutoFlippingLabel"
115 model "six_pos"
116 position "stail"
117 ]
118 LabelGraphics
119 [
120 text "[1]"
121 fontSize 12
122 fontName "Dialog"
123 configuration "AutoFlippingLabel"
124 model "six_pos"
125 position "ttail"
126 ]
127 ]
128 edge
129 [
130 source 1
131 target 3
132 label "next reference State"
133 graphics
134 [
135 fill "#000000"
136 targetArrow "standard"
137 Line
138 [
139 ]
140 ]
141 LabelGraphics
142 [
143 text "next reference State"
144 fontSize 12
145 fontName "Dialog"
146 configuration "AutoFlippingLabel"
147 model "six_pos"
148 position "head"
149 ]
150 LabelGraphics
151 [
152 text "[1, 0, 0]"
153 fontSize 12
154 fontName "Dialog"
155 configuration "AutoFlippingLabel"
156 model "six_pos"
157 position "stail"
158 ]
159 LabelGraphics
160 [
161 text "[1, 1, 1]"
162 fontSize 12
163 fontName "Dialog"
164 configuration "AutoFlippingLabel"
165 model "six_pos"
166 position "ttail"
167 ]
168 ]
169 edge
170 [
171 source 1
172 target 1
173 label "next reference State"
174 graphics
175 [
176 fill "#000000"
177 targetArrow "standard"
178 Line
179 [
180 ]
181 ]
182 LabelGraphics
183 [
184 text "next reference State"
185 fontSize 12
186 fontName "Dialog"
187 configuration "AutoFlippingLabel"
188 model "six_pos"
189 position "head"
190 ]
191 LabelGraphics
192 [
193 text "[1, 1, 0]"
194 fontSize 12
195 fontName "Dialog"
196 configuration "AutoFlippingLabel"
197 model "six_pos"
198 position "stail"
199 ]
200 LabelGraphics
201 [
202 text "[1, 1, 1]"
203 fontSize 12
204 fontName "Dialog"
205 configuration "AutoFlippingLabel"
206 model "six_pos"
207 position "ttail"
208 ]
209 ]
210 edge
211 [
212 source 2
213 target 3
214 label "state reference Statechart"
215 graphics
216 [
217 fill "#000000"
218 targetArrow "standard"
219 Line
220 [
221 ]
222 ]
223 LabelGraphics
224 [
225 text "state reference Statechart"
226 fontSize 12
227 fontName "Dialog"
228 configuration "AutoFlippingLabel"
229 model "six_pos"
230 position "head"
231 ]
232 LabelGraphics
233 [
234 text "[1]"
235 fontSize 12
236 fontName "Dialog"
237 configuration "AutoFlippingLabel"
238 model "six_pos"
239 position "stail"
240 ]
241 LabelGraphics
242 [
243 text "[1, 1, 1, 1]"
244 fontSize 12
245 fontName "Dialog"
246 configuration "AutoFlippingLabel"
247 model "six_pos"
248 position "ttail"
249 ]
250 ]
251 edge
252 [
253 source 2
254 target 0
255 label "entry reference Statechart"
256 graphics
257 [
258 fill "#000000"
259 targetArrow "standard"
260 Line
261 [
262 ]
263 ]
264 LabelGraphics
265 [
266 text "entry reference Statechart"
267 fontSize 12
268 fontName "Dialog"
269 configuration "AutoFlippingLabel"
270 model "six_pos"
271 position "head"
272 ]
273 LabelGraphics
274 [
275 text "[1]"
276 fontSize 12
277 fontName "Dialog"
278 configuration "AutoFlippingLabel"
279 model "six_pos"
280 position "stail"
281 ]
282 LabelGraphics
283 [
284 text "[1]"
285 fontSize 12
286 fontName "Dialog"
287 configuration "AutoFlippingLabel"
288 model "six_pos"
289 position "ttail"
290 ]
291 ]
292 edge
293 [
294 source 2
295 target 1
296 label "state reference Statechart"
297 graphics
298 [
299 fill "#000000"
300 targetArrow "standard"
301 Line
302 [
303 ]
304 ]
305 LabelGraphics
306 [
307 text "state reference Statechart"
308 fontSize 12
309 fontName "Dialog"
310 configuration "AutoFlippingLabel"
311 model "six_pos"
312 position "head"
313 ]
314 LabelGraphics
315 [
316 text "[4]"
317 fontSize 12
318 fontName "Dialog"
319 configuration "AutoFlippingLabel"
320 model "six_pos"
321 position "stail"
322 ]
323 LabelGraphics
324 [
325 text "[1, 1, 1, 1]"
326 fontSize 12
327 fontName "Dialog"
328 configuration "AutoFlippingLabel"
329 model "six_pos"
330 position "ttail"
331 ]
332 ]
333 edge
334 [
335 source 3
336 target 1
337 label "next reference State"
338 graphics
339 [
340 fill "#000000"
341 targetArrow "standard"
342 Line
343 [
344 ]
345 ]
346 LabelGraphics
347 [
348 text "next reference State"
349 fontSize 12
350 fontName "Dialog"
351 configuration "AutoFlippingLabel"
352 model "six_pos"
353 position "head"
354 ]
355 LabelGraphics
356 [
357 text "[1]"
358 fontSize 12
359 fontName "Dialog"
360 configuration "AutoFlippingLabel"
361 model "six_pos"
362 position "stail"
363 ]
364 LabelGraphics
365 [
366 text "[1, 0, 0]"
367 fontSize 12
368 fontName "Dialog"
369 configuration "AutoFlippingLabel"
370 model "six_pos"
371 position "ttail"
372 ]
373 ]
374]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic2NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic2NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..4fe07a99
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic2NEIGHBOURHOOD.gml
@@ -0,0 +1,560 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x -316.0
15 y 303.0
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[State class] (1)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x 49.0
40 y -220.0
41 w 176.0
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[Statechart class] (1)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x -280.0
65 y 100.0
66 w 137.5
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[State class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 node
84 [
85 id 3
86 label ""
87 graphics
88 [
89 x 156.0
90 y 100.0
91 w 137.5
92 h 40.0
93 type "roundrectangle"
94 fill "#FFCC00"
95 outline "#000000"
96 ]
97 LabelGraphics
98 [
99 ]
100 LabelGraphics
101 [
102 text "[State class] (1)"
103 fontSize 14
104 fontName "Dialog"
105 anchor "c"
106 ]
107 ]
108 node
109 [
110 id 4
111 label ""
112 graphics
113 [
114 x -270.0
115 y -92.0
116 w 137.5
117 h 40.0
118 type "roundrectangle"
119 fill "#FFCC00"
120 outline "#000000"
121 ]
122 LabelGraphics
123 [
124 ]
125 LabelGraphics
126 [
127 text "[Entry class] (1)"
128 fontSize 14
129 fontName "Dialog"
130 anchor "c"
131 ]
132 ]
133 node
134 [
135 id 5
136 label ""
137 graphics
138 [
139 x 425.0
140 y -220.0
141 w 137.5
142 h 40.0
143 type "roundrectangle"
144 fill "#FFCC00"
145 outline "#000000"
146 ]
147 LabelGraphics
148 [
149 ]
150 LabelGraphics
151 [
152 text "[State class] (2)"
153 fontSize 14
154 fontName "Dialog"
155 anchor "c"
156 ]
157 ]
158 edge
159 [
160 source 0
161 target 2
162 label "next reference State"
163 graphics
164 [
165 fill "#000000"
166 targetArrow "standard"
167 Line
168 [
169 point
170 [
171 x -316.0
172 y 303.0
173 ]
174 point
175 [
176 x -280.0
177 y 198.5
178 ]
179 point
180 [
181 x -292.0
182 y 198.5
183 ]
184 point
185 [
186 x -280.0
187 y 100.0
188 ]
189 ]
190 ]
191 edgeAnchor
192 [
193 xSource 0.5236363636363637
194 xTarget -0.17454545454545456
195 ]
196 LabelGraphics
197 [
198 text "next reference State"
199 fontSize 12
200 fontName "Dialog"
201 configuration "AutoFlippingLabel"
202 contentWidth 112.064453125
203 contentHeight 18.701171875
204 model "six_pos"
205 position "head"
206 ]
207 LabelGraphics
208 [
209 text "[1]"
210 fontSize 12
211 fontName "Dialog"
212 configuration "AutoFlippingLabel"
213 contentWidth 17.341796875
214 contentHeight 18.701171875
215 model "six_pos"
216 position "stail"
217 ]
218 LabelGraphics
219 [
220 text "[1]"
221 fontSize 12
222 fontName "Dialog"
223 configuration "AutoFlippingLabel"
224 contentWidth 17.341796875
225 contentHeight 18.701171875
226 model "six_pos"
227 position "ttail"
228 ]
229 ]
230 edge
231 [
232 source 1
233 target 5
234 label "state reference Statechart"
235 graphics
236 [
237 fill "#000000"
238 targetArrow "standard"
239 ]
240 edgeAnchor
241 [
242 xSource -0.625
243 ]
244 LabelGraphics
245 [
246 text "state reference Statechart"
247 fontSize 12
248 fontName "Dialog"
249 configuration "AutoFlippingLabel"
250 contentWidth 142.076171875
251 contentHeight 18.701171875
252 model "six_pos"
253 position "head"
254 ]
255 LabelGraphics
256 [
257 text "[1, 1, 1, 2]"
258 fontSize 12
259 fontName "Dialog"
260 configuration "AutoFlippingLabel"
261 contentWidth 57.3671875
262 contentHeight 18.701171875
263 model "six_pos"
264 position "stail"
265 ]
266 LabelGraphics
267 [
268 text "[1, 1]"
269 fontSize 12
270 fontName "Dialog"
271 configuration "AutoFlippingLabel"
272 contentWidth 30.68359375
273 contentHeight 18.701171875
274 model "six_pos"
275 position "ttail"
276 ]
277 ]
278 edge
279 [
280 source 1
281 target 4
282 label "entry reference Statechart"
283 graphics
284 [
285 fill "#000000"
286 targetArrow "standard"
287 Line
288 [
289 point
290 [
291 x 49.0
292 y -220.0
293 ]
294 point
295 [
296 x -270.0
297 y -220.0
298 ]
299 point
300 [
301 x -270.0
302 y -92.0
303 ]
304 ]
305 ]
306 LabelGraphics
307 [
308 text "entry reference Statechart"
309 fontSize 12
310 fontName "Dialog"
311 configuration "AutoFlippingLabel"
312 contentWidth 142.73828125
313 contentHeight 18.701171875
314 model "six_pos"
315 position "head"
316 ]
317 LabelGraphics
318 [
319 text "[1]"
320 fontSize 12
321 fontName "Dialog"
322 configuration "AutoFlippingLabel"
323 contentWidth 17.341796875
324 contentHeight 18.701171875
325 model "six_pos"
326 position "stail"
327 ]
328 LabelGraphics
329 [
330 text "[1]"
331 fontSize 12
332 fontName "Dialog"
333 configuration "AutoFlippingLabel"
334 contentWidth 17.341796875
335 contentHeight 18.701171875
336 model "six_pos"
337 position "ttail"
338 ]
339 ]
340 edge
341 [
342 source 2
343 target 3
344 label "next reference State"
345 graphics
346 [
347 fill "#000000"
348 targetArrow "standard"
349 ]
350 LabelGraphics
351 [
352 text "next reference State"
353 fontSize 12
354 fontName "Dialog"
355 configuration "AutoFlippingLabel"
356 contentWidth 112.064453125
357 contentHeight 18.701171875
358 model "six_pos"
359 position "head"
360 ]
361 LabelGraphics
362 [
363 text "[1]"
364 fontSize 12
365 fontName "Dialog"
366 configuration "AutoFlippingLabel"
367 contentWidth 17.341796875
368 contentHeight 18.701171875
369 model "six_pos"
370 position "stail"
371 ]
372 LabelGraphics
373 [
374 text "[1]"
375 fontSize 12
376 fontName "Dialog"
377 configuration "AutoFlippingLabel"
378 contentWidth 17.341796875
379 contentHeight 18.701171875
380 model "six_pos"
381 position "ttail"
382 ]
383 ]
384 edge
385 [
386 source 3
387 target 5
388 label "next reference State"
389 graphics
390 [
391 fill "#000000"
392 targetArrow "standard"
393 Line
394 [
395 point
396 [
397 x 156.0
398 y 100.0
399 ]
400 point
401 [
402 x 425.0
403 y 100.0
404 ]
405 point
406 [
407 x 425.0
408 y -220.0
409 ]
410 ]
411 ]
412 edgeAnchor
413 [
414 xSource -0.8
415 ]
416 LabelGraphics
417 [
418 text "next reference State"
419 fontSize 12
420 fontName "Dialog"
421 configuration "AutoFlippingLabel"
422 contentWidth 112.064453125
423 contentHeight 18.701171875
424 model "six_pos"
425 position "head"
426 ]
427 LabelGraphics
428 [
429 text "[1]"
430 fontSize 12
431 fontName "Dialog"
432 configuration "AutoFlippingLabel"
433 contentWidth 17.341796875
434 contentHeight 18.701171875
435 model "six_pos"
436 position "stail"
437 ]
438 LabelGraphics
439 [
440 text "[1, 0]"
441 fontSize 12
442 fontName "Dialog"
443 configuration "AutoFlippingLabel"
444 contentWidth 30.68359375
445 contentHeight 18.701171875
446 model "six_pos"
447 position "ttail"
448 ]
449 ]
450 edge
451 [
452 source 4
453 target 2
454 label "entry reference Entry"
455 graphics
456 [
457 fill "#000000"
458 targetArrow "standard"
459 ]
460 edgeAnchor
461 [
462 xTarget 0.14545454545454545
463 ]
464 LabelGraphics
465 [
466 text "entry reference Entry"
467 fontSize 12
468 fontName "Dialog"
469 configuration "AutoFlippingLabel"
470 contentWidth 116.048828125
471 contentHeight 18.701171875
472 model "six_pos"
473 position "head"
474 ]
475 LabelGraphics
476 [
477 text "[1]"
478 fontSize 12
479 fontName "Dialog"
480 configuration "AutoFlippingLabel"
481 contentWidth 17.341796875
482 contentHeight 18.701171875
483 model "six_pos"
484 position "stail"
485 ]
486 LabelGraphics
487 [
488 text "[1]"
489 fontSize 12
490 fontName "Dialog"
491 configuration "AutoFlippingLabel"
492 contentWidth 17.341796875
493 contentHeight 18.701171875
494 model "six_pos"
495 position "ttail"
496 ]
497 ]
498 edge
499 [
500 source 5
501 target 5
502 label "next reference State"
503 graphics
504 [
505 fill "#000000"
506 targetArrow "standard"
507 Line
508 [
509 point
510 [
511 x 425.0
512 y -220.0
513 ]
514 point
515 [
516 x 425.0
517 y -270.0
518 ]
519 point
520 [
521 x 425.0
522 y -220.0
523 ]
524 ]
525 ]
526 LabelGraphics
527 [
528 text "next reference State"
529 fontSize 12
530 fontName "Dialog"
531 configuration "AutoFlippingLabel"
532 contentWidth 112.064453125
533 contentHeight 18.701171875
534 model "six_pos"
535 position "head"
536 ]
537 LabelGraphics
538 [
539 text "[1, 1]"
540 fontSize 12
541 fontName "Dialog"
542 configuration "AutoFlippingLabel"
543 contentWidth 30.68359375
544 contentHeight 18.701171875
545 model "six_pos"
546 position "stail"
547 ]
548 LabelGraphics
549 [
550 text "[1, 0]"
551 fontSize 12
552 fontName "Dialog"
553 configuration "AutoFlippingLabel"
554 contentWidth 30.68359375
555 contentHeight 18.701171875
556 model "six_pos"
557 position "ttail"
558 ]
559 ]
560]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic3NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic3NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..4c6b4ee5
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealistic3NEIGHBOURHOOD.gml
@@ -0,0 +1,639 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x 332.0
15 y 59.0
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[State class] (1)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x 38.0
40 y -148.0
41 w 137.5
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[State class] (1)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x -247.0
65 y -148.0
66 w 137.5
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[Entry class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 node
84 [
85 id 3
86 label ""
87 graphics
88 [
89 x 23.0
90 y -252.0
91 w 176.0
92 h 40.0
93 type "roundrectangle"
94 fill "#FFCC00"
95 outline "#000000"
96 ]
97 LabelGraphics
98 [
99 ]
100 LabelGraphics
101 [
102 text "[Statechart class] (1)"
103 fontSize 14
104 fontName "Dialog"
105 anchor "c"
106 ]
107 ]
108 node
109 [
110 id 4
111 label ""
112 graphics
113 [
114 x 340.0
115 y 259.0
116 w 137.5
117 h 40.0
118 type "roundrectangle"
119 fill "#FFCC00"
120 outline "#000000"
121 ]
122 LabelGraphics
123 [
124 ]
125 LabelGraphics
126 [
127 text "[State class] (1)"
128 fontSize 14
129 fontName "Dialog"
130 anchor "c"
131 ]
132 ]
133 node
134 [
135 id 5
136 label ""
137 graphics
138 [
139 x 340.0
140 y -141.0
141 w 137.5
142 h 40.0
143 type "roundrectangle"
144 fill "#FFCC00"
145 outline "#000000"
146 ]
147 LabelGraphics
148 [
149 ]
150 LabelGraphics
151 [
152 text "[State class] (1)"
153 fontSize 14
154 fontName "Dialog"
155 anchor "c"
156 ]
157 ]
158 node
159 [
160 id 6
161 label ""
162 graphics
163 [
164 x -282.0
165 y 153.0
166 w 137.5
167 h 40.0
168 type "roundrectangle"
169 fill "#FFCC00"
170 outline "#000000"
171 ]
172 LabelGraphics
173 [
174 ]
175 LabelGraphics
176 [
177 text "[State class] (1)"
178 fontSize 14
179 fontName "Dialog"
180 anchor "c"
181 ]
182 ]
183 edge
184 [
185 source 4
186 target 6
187 label "next reference State"
188 graphics
189 [
190 fill "#000000"
191 targetArrow "standard"
192 Line
193 [
194 point
195 [
196 x 340.0
197 y 259.0
198 ]
199 point
200 [
201 x 377.5
202 y 325.5
203 ]
204 point
205 [
206 x -262.0
207 y 325.5
208 ]
209 point
210 [
211 x -262.0
212 y 278.75
213 ]
214 point
215 [
216 x -282.0
217 y 278.75
218 ]
219 point
220 [
221 x -282.0
222 y 153.0
223 ]
224 ]
225 ]
226 edgeAnchor
227 [
228 xSource 0.5454545454545454
229 ySource 0.975
230 ]
231 LabelGraphics
232 [
233 text "next reference State"
234 fontSize 12
235 fontName "Dialog"
236 configuration "AutoFlippingLabel"
237 contentWidth 112.064453125
238 contentHeight 18.701171875
239 model "six_pos"
240 position "head"
241 ]
242 LabelGraphics
243 [
244 text "[1]"
245 fontSize 12
246 fontName "Dialog"
247 configuration "AutoFlippingLabel"
248 contentWidth 17.341796875
249 contentHeight 18.701171875
250 model "six_pos"
251 position "stail"
252 ]
253 LabelGraphics
254 [
255 text "[1]"
256 fontSize 12
257 fontName "Dialog"
258 configuration "AutoFlippingLabel"
259 contentWidth 17.341796875
260 contentHeight 18.701171875
261 model "six_pos"
262 position "ttail"
263 ]
264 ]
265 edge
266 [
267 source 0
268 target 4
269 label "next reference State"
270 graphics
271 [
272 fill "#000000"
273 targetArrow "standard"
274 ]
275 edgeAnchor
276 [
277 xSource 0.11636363636363636
278 ySource 0.225
279 ]
280 LabelGraphics
281 [
282 text "next reference State"
283 fontSize 12
284 fontName "Dialog"
285 configuration "AutoFlippingLabel"
286 contentWidth 112.064453125
287 contentHeight 18.701171875
288 model "six_pos"
289 position "head"
290 ]
291 LabelGraphics
292 [
293 text "[1]"
294 fontSize 12
295 fontName "Dialog"
296 configuration "AutoFlippingLabel"
297 contentWidth 17.341796875
298 contentHeight 18.701171875
299 model "six_pos"
300 position "stail"
301 ]
302 LabelGraphics
303 [
304 text "[1]"
305 fontSize 12
306 fontName "Dialog"
307 configuration "AutoFlippingLabel"
308 contentWidth 17.341796875
309 contentHeight 18.701171875
310 model "six_pos"
311 position "ttail"
312 ]
313 ]
314 edge
315 [
316 source 1
317 target 5
318 label "next reference State"
319 graphics
320 [
321 fill "#000000"
322 targetArrow "standard"
323 ]
324 edgeAnchor
325 [
326 xSource 0.2690909090909091
327 ySource 0.35
328 ]
329 LabelGraphics
330 [
331 text "next reference State"
332 fontSize 12
333 fontName "Dialog"
334 configuration "AutoFlippingLabel"
335 contentWidth 112.064453125
336 contentHeight 18.701171875
337 model "six_pos"
338 position "head"
339 ]
340 LabelGraphics
341 [
342 text "[1]"
343 fontSize 12
344 fontName "Dialog"
345 configuration "AutoFlippingLabel"
346 contentWidth 17.341796875
347 contentHeight 18.701171875
348 model "six_pos"
349 position "stail"
350 ]
351 LabelGraphics
352 [
353 text "[1]"
354 fontSize 12
355 fontName "Dialog"
356 configuration "AutoFlippingLabel"
357 contentWidth 17.341796875
358 contentHeight 18.701171875
359 model "six_pos"
360 position "ttail"
361 ]
362 ]
363 edge
364 [
365 source 5
366 target 0
367 label "next reference State"
368 graphics
369 [
370 fill "#000000"
371 targetArrow "standard"
372 ]
373 edgeAnchor
374 [
375 xTarget 0.11636363636363636
376 ]
377 LabelGraphics
378 [
379 text "next reference State"
380 fontSize 12
381 fontName "Dialog"
382 configuration "AutoFlippingLabel"
383 contentWidth 112.064453125
384 contentHeight 18.701171875
385 model "six_pos"
386 position "head"
387 ]
388 LabelGraphics
389 [
390 text "[1]"
391 fontSize 12
392 fontName "Dialog"
393 configuration "AutoFlippingLabel"
394 contentWidth 17.341796875
395 contentHeight 18.701171875
396 model "six_pos"
397 position "stail"
398 ]
399 LabelGraphics
400 [
401 text "[1]"
402 fontSize 12
403 fontName "Dialog"
404 configuration "AutoFlippingLabel"
405 contentWidth 17.341796875
406 contentHeight 18.701171875
407 model "six_pos"
408 position "ttail"
409 ]
410 ]
411 edge
412 [
413 source 2
414 target 6
415 label "entry reference Entry"
416 graphics
417 [
418 fill "#000000"
419 targetArrow "standard"
420 ]
421 edgeAnchor
422 [
423 xSource -0.509090909090909
424 ]
425 LabelGraphics
426 [
427 text "entry reference Entry"
428 fontSize 12
429 fontName "Dialog"
430 configuration "AutoFlippingLabel"
431 contentWidth 116.048828125
432 contentHeight 18.701171875
433 model "six_pos"
434 position "head"
435 ]
436 LabelGraphics
437 [
438 text "[1]"
439 fontSize 12
440 fontName "Dialog"
441 configuration "AutoFlippingLabel"
442 contentWidth 17.341796875
443 contentHeight 18.701171875
444 model "six_pos"
445 position "stail"
446 ]
447 LabelGraphics
448 [
449 text "[1]"
450 fontSize 12
451 fontName "Dialog"
452 configuration "AutoFlippingLabel"
453 contentWidth 17.341796875
454 contentHeight 18.701171875
455 model "six_pos"
456 position "ttail"
457 ]
458 ]
459 edge
460 [
461 source 3
462 target 1
463 label "state reference Statechart"
464 graphics
465 [
466 fill "#000000"
467 targetArrow "standard"
468 ]
469 edgeAnchor
470 [
471 xTarget -0.21818181818181817
472 ]
473 LabelGraphics
474 [
475 text "state reference Statechart"
476 fontSize 12
477 fontName "Dialog"
478 configuration "AutoFlippingLabel"
479 contentWidth 142.076171875
480 contentHeight 18.701171875
481 model "six_pos"
482 position "head"
483 ]
484 LabelGraphics
485 [
486 text "[1, 1, 1, 1, 1]"
487 fontSize 12
488 fontName "Dialog"
489 configuration "AutoFlippingLabel"
490 contentWidth 70.708984375
491 contentHeight 18.701171875
492 model "six_pos"
493 position "stail"
494 ]
495 LabelGraphics
496 [
497 text "[1]"
498 fontSize 12
499 fontName "Dialog"
500 configuration "AutoFlippingLabel"
501 contentWidth 17.341796875
502 contentHeight 18.701171875
503 model "six_pos"
504 position "ttail"
505 ]
506 ]
507 edge
508 [
509 source 3
510 target 2
511 label "entry reference Statechart"
512 graphics
513 [
514 fill "#000000"
515 targetArrow "standard"
516 Line
517 [
518 point
519 [
520 x 23.0
521 y -252.0
522 ]
523 point
524 [
525 x -247.0
526 y -252.0
527 ]
528 point
529 [
530 x -247.0
531 y -148.0
532 ]
533 ]
534 ]
535 edgeAnchor
536 [
537 yTarget -1.0
538 ]
539 LabelGraphics
540 [
541 text "entry reference Statechart"
542 fontSize 12
543 fontName "Dialog"
544 configuration "AutoFlippingLabel"
545 contentWidth 142.73828125
546 contentHeight 18.701171875
547 model "six_pos"
548 position "head"
549 ]
550 LabelGraphics
551 [
552 text "[1]"
553 fontSize 12
554 fontName "Dialog"
555 configuration "AutoFlippingLabel"
556 contentWidth 17.341796875
557 contentHeight 18.701171875
558 model "six_pos"
559 position "stail"
560 ]
561 LabelGraphics
562 [
563 text "[1]"
564 fontSize 12
565 fontName "Dialog"
566 configuration "AutoFlippingLabel"
567 contentWidth 17.341796875
568 contentHeight 18.701171875
569 model "six_pos"
570 position "ttail"
571 ]
572 ]
573 edge
574 [
575 source 6
576 target 1
577 label "next reference State"
578 graphics
579 [
580 fill "#000000"
581 targetArrow "standard"
582 Line
583 [
584 point
585 [
586 x -282.0
587 y 153.0
588 ]
589 point
590 [
591 x 3.0
592 y 153.0
593 ]
594 point
595 [
596 x 38.0
597 y -148.0
598 ]
599 ]
600 ]
601 edgeAnchor
602 [
603 xTarget -0.509090909090909
604 ]
605 LabelGraphics
606 [
607 text "next reference State"
608 fontSize 12
609 fontName "Dialog"
610 configuration "AutoFlippingLabel"
611 contentWidth 112.064453125
612 contentHeight 18.701171875
613 model "six_pos"
614 position "head"
615 ]
616 LabelGraphics
617 [
618 text "[1]"
619 fontSize 12
620 fontName "Dialog"
621 configuration "AutoFlippingLabel"
622 contentWidth 17.341796875
623 contentHeight 18.701171875
624 model "six_pos"
625 position "stail"
626 ]
627 LabelGraphics
628 [
629 text "[1]"
630 fontSize 12
631 fontName "Dialog"
632 configuration "AutoFlippingLabel"
633 contentWidth 17.341796875
634 contentHeight 18.701171875
635 model "six_pos"
636 position "ttail"
637 ]
638 ]
639]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealisticMODEL.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealisticMODEL.gml
new file mode 100644
index 00000000..5102dc66
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCIrrealisticMODEL.gml
@@ -0,0 +1,698 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 41.800000000000004
9 h 26
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "true"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 "
30 fontSize 14
31 fontName "Consolas"
32 alignment "left"
33 anchor "tl"
34 borderDistance 6
35 ]
36 ]
37
38 node
39 [
40 id 1
41 graphics
42 [
43 w 50.6
44 h 26
45 type "rectangle"
46 fill "#FFFFFF"
47 fill2 "#FFFFFF"
48 outline "#000000"
49 ]
50 LabelGraphics
51 [
52 text "false"
53 outline "#000000"
54 fill "#FFFFFF"
55 fontSize 16
56 fontName "Monospace"
57 autoSizePolicy "node_width"
58 anchor "t"
59 borderDistance 0.0
60 ]
61 LabelGraphics
62 [
63 text "
64 "
65 fontSize 14
66 fontName "Consolas"
67 alignment "left"
68 anchor "tl"
69 borderDistance 6
70 ]
71 ]
72
73 node
74 [
75 id 2
76 graphics
77 [
78 w 138.60000000000002
79 h 40
80 type "rectangle"
81 fill "#FFFFFF"
82 fill2 "#FFFFFF"
83 outline "#000000"
84 ]
85 LabelGraphics
86 [
87 text "null"
88 outline "#000000"
89 fill "#FFFFFF"
90 fontSize 16
91 fontName "Monospace"
92 autoSizePolicy "node_width"
93 anchor "t"
94 borderDistance 0.0
95 ]
96 LabelGraphics
97 [
98 text "
99 Statechart class
100 "
101 fontSize 14
102 fontName "Consolas"
103 alignment "left"
104 anchor "tl"
105 borderDistance 6
106 ]
107 ]
108
109 node
110 [
111 id 3
112 graphics
113 [
114 w 100.10000000000001
115 h 40
116 type "rectangle"
117 fill "#FFFFFF"
118 fill2 "#FFFFFF"
119 outline "#000000"
120 ]
121 LabelGraphics
122 [
123 text "null"
124 outline "#000000"
125 fill "#FFFFFF"
126 fontSize 16
127 fontName "Monospace"
128 autoSizePolicy "node_width"
129 anchor "t"
130 borderDistance 0.0
131 ]
132 LabelGraphics
133 [
134 text "
135 State class
136 "
137 fontSize 14
138 fontName "Consolas"
139 alignment "left"
140 anchor "tl"
141 borderDistance 6
142 ]
143 ]
144
145 node
146 [
147 id 4
148 graphics
149 [
150 w 100.10000000000001
151 h 40
152 type "rectangle"
153 fill "#FFFFFF"
154 fill2 "#FFFFFF"
155 outline "#000000"
156 ]
157 LabelGraphics
158 [
159 text "null"
160 outline "#000000"
161 fill "#FFFFFF"
162 fontSize 16
163 fontName "Monospace"
164 autoSizePolicy "node_width"
165 anchor "t"
166 borderDistance 0.0
167 ]
168 LabelGraphics
169 [
170 text "
171 State class
172 "
173 fontSize 14
174 fontName "Consolas"
175 alignment "left"
176 anchor "tl"
177 borderDistance 6
178 ]
179 ]
180
181 node
182 [
183 id 5
184 graphics
185 [
186 w 100.10000000000001
187 h 40
188 type "rectangle"
189 fill "#FFFFFF"
190 fill2 "#FFFFFF"
191 outline "#000000"
192 ]
193 LabelGraphics
194 [
195 text "null"
196 outline "#000000"
197 fill "#FFFFFF"
198 fontSize 16
199 fontName "Monospace"
200 autoSizePolicy "node_width"
201 anchor "t"
202 borderDistance 0.0
203 ]
204 LabelGraphics
205 [
206 text "
207 State class
208 "
209 fontSize 14
210 fontName "Consolas"
211 alignment "left"
212 anchor "tl"
213 borderDistance 6
214 ]
215 ]
216
217 node
218 [
219 id 6
220 graphics
221 [
222 w 100.10000000000001
223 h 40
224 type "rectangle"
225 fill "#FFFFFF"
226 fill2 "#FFFFFF"
227 outline "#000000"
228 ]
229 LabelGraphics
230 [
231 text "null"
232 outline "#000000"
233 fill "#FFFFFF"
234 fontSize 16
235 fontName "Monospace"
236 autoSizePolicy "node_width"
237 anchor "t"
238 borderDistance 0.0
239 ]
240 LabelGraphics
241 [
242 text "
243 State class
244 "
245 fontSize 14
246 fontName "Consolas"
247 alignment "left"
248 anchor "tl"
249 borderDistance 6
250 ]
251 ]
252
253 node
254 [
255 id 7
256 graphics
257 [
258 w 100.10000000000001
259 h 40
260 type "rectangle"
261 fill "#FFFFFF"
262 fill2 "#FFFFFF"
263 outline "#000000"
264 ]
265 LabelGraphics
266 [
267 text "null"
268 outline "#000000"
269 fill "#FFFFFF"
270 fontSize 16
271 fontName "Monospace"
272 autoSizePolicy "node_width"
273 anchor "t"
274 borderDistance 0.0
275 ]
276 LabelGraphics
277 [
278 text "
279 State class
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 100.10000000000001
295 h 40
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 Entry class
316 "
317 fontSize 14
318 fontName "Consolas"
319 alignment "left"
320 anchor "tl"
321 borderDistance 6
322 ]
323 ]
324
325 node
326 [
327 id 9
328 graphics
329 [
330 w 112.2
331 h 26
332 type "rectangle"
333 fill "#FFFFFF"
334 fill2 "#FFFFFF"
335 outline "#000000"
336 ]
337 LabelGraphics
338 [
339 text "New Integers"
340 outline "#000000"
341 fill "#FFFFFF"
342 fontSize 16
343 fontName "Monospace"
344 autoSizePolicy "node_width"
345 anchor "t"
346 borderDistance 0.0
347 ]
348 LabelGraphics
349 [
350 text "
351 "
352 fontSize 14
353 fontName "Consolas"
354 alignment "left"
355 anchor "tl"
356 borderDistance 6
357 ]
358 ]
359
360 node
361 [
362 id 10
363 graphics
364 [
365 w 85.80000000000001
366 h 26
367 type "rectangle"
368 fill "#FFFFFF"
369 fill2 "#FFFFFF"
370 outline "#000000"
371 ]
372 LabelGraphics
373 [
374 text "New Reals"
375 outline "#000000"
376 fill "#FFFFFF"
377 fontSize 16
378 fontName "Monospace"
379 autoSizePolicy "node_width"
380 anchor "t"
381 borderDistance 0.0
382 ]
383 LabelGraphics
384 [
385 text "
386 "
387 fontSize 14
388 fontName "Consolas"
389 alignment "left"
390 anchor "tl"
391 borderDistance 6
392 ]
393 ]
394
395 node
396 [
397 id 11
398 graphics
399 [
400 w 103.4
401 h 26
402 type "rectangle"
403 fill "#FFFFFF"
404 fill2 "#FFFFFF"
405 outline "#000000"
406 ]
407 LabelGraphics
408 [
409 text "New Strings"
410 outline "#000000"
411 fill "#FFFFFF"
412 fontSize 16
413 fontName "Monospace"
414 autoSizePolicy "node_width"
415 anchor "t"
416 borderDistance 0.0
417 ]
418 LabelGraphics
419 [
420 text "
421 "
422 fontSize 14
423 fontName "Consolas"
424 alignment "left"
425 anchor "tl"
426 borderDistance 6
427 ]
428 ]
429
430 node
431 [
432 id 12
433 graphics
434 [
435 w 103.4
436 h 26
437 type "rectangle"
438 fill "#FFFFFF"
439 fill2 "#FFFFFF"
440 outline "#000000"
441 ]
442 LabelGraphics
443 [
444 text "New Objects"
445 outline "#000000"
446 fill "#FFFFFF"
447 fontSize 16
448 fontName "Monospace"
449 autoSizePolicy "node_width"
450 anchor "t"
451 borderDistance 0.0
452 ]
453 LabelGraphics
454 [
455 text "
456 "
457 fontSize 14
458 fontName "Consolas"
459 alignment "left"
460 anchor "tl"
461 borderDistance 6
462 ]
463 ]
464 edge
465 [
466 source 3
467 target 4
468 graphics
469 [
470 fill "#000000"
471 targetArrow "standard"
472 ]
473 LabelGraphics
474 [
475 text "next reference State"
476 fontSize 14
477 fontName "Consolas"
478 configuration "AutoFlippingLabel"
479 model "six_pos"
480 position "thead"
481 ]
482 ]
483 edge
484 [
485 source 4
486 target 5
487 graphics
488 [
489 fill "#000000"
490 targetArrow "standard"
491 ]
492 LabelGraphics
493 [
494 text "next reference State"
495 fontSize 14
496 fontName "Consolas"
497 configuration "AutoFlippingLabel"
498 model "six_pos"
499 position "thead"
500 ]
501 ]
502 edge
503 [
504 source 5
505 target 6
506 graphics
507 [
508 fill "#000000"
509 targetArrow "standard"
510 ]
511 LabelGraphics
512 [
513 text "next reference State"
514 fontSize 14
515 fontName "Consolas"
516 configuration "AutoFlippingLabel"
517 model "six_pos"
518 position "thead"
519 ]
520 ]
521 edge
522 [
523 source 6
524 target 7
525 graphics
526 [
527 fill "#000000"
528 targetArrow "standard"
529 ]
530 LabelGraphics
531 [
532 text "next reference State"
533 fontSize 14
534 fontName "Consolas"
535 configuration "AutoFlippingLabel"
536 model "six_pos"
537 position "thead"
538 ]
539 ]
540 edge
541 [
542 source 7
543 target 3
544 graphics
545 [
546 fill "#000000"
547 targetArrow "standard"
548 ]
549 LabelGraphics
550 [
551 text "next reference State"
552 fontSize 14
553 fontName "Consolas"
554 configuration "AutoFlippingLabel"
555 model "six_pos"
556 position "thead"
557 ]
558 ]
559 edge
560 [
561 source 8
562 target 3
563 graphics
564 [
565 fill "#000000"
566 targetArrow "standard"
567 ]
568 LabelGraphics
569 [
570 text "entry reference Entry"
571 fontSize 14
572 fontName "Consolas"
573 configuration "AutoFlippingLabel"
574 model "six_pos"
575 position "thead"
576 ]
577 ]
578 edge
579 [
580 source 2
581 target 3
582 graphics
583 [
584 fill "#000000"
585 width 3
586 targetArrow "standard"
587 ]
588 LabelGraphics
589 [
590 text "state reference Statechart"
591 fontSize 14
592 fontName "Consolas"
593 configuration "AutoFlippingLabel"
594 model "six_pos"
595 position "thead"
596 ]
597 ]
598 edge
599 [
600 source 2
601 target 4
602 graphics
603 [
604 fill "#000000"
605 width 3
606 targetArrow "standard"
607 ]
608 LabelGraphics
609 [
610 text "state reference Statechart"
611 fontSize 14
612 fontName "Consolas"
613 configuration "AutoFlippingLabel"
614 model "six_pos"
615 position "thead"
616 ]
617 ]
618 edge
619 [
620 source 2
621 target 5
622 graphics
623 [
624 fill "#000000"
625 width 3
626 targetArrow "standard"
627 ]
628 LabelGraphics
629 [
630 text "state reference Statechart"
631 fontSize 14
632 fontName "Consolas"
633 configuration "AutoFlippingLabel"
634 model "six_pos"
635 position "thead"
636 ]
637 ]
638 edge
639 [
640 source 2
641 target 6
642 graphics
643 [
644 fill "#000000"
645 width 3
646 targetArrow "standard"
647 ]
648 LabelGraphics
649 [
650 text "state reference Statechart"
651 fontSize 14
652 fontName "Consolas"
653 configuration "AutoFlippingLabel"
654 model "six_pos"
655 position "thead"
656 ]
657 ]
658 edge
659 [
660 source 2
661 target 7
662 graphics
663 [
664 fill "#000000"
665 width 3
666 targetArrow "standard"
667 ]
668 LabelGraphics
669 [
670 text "state reference Statechart"
671 fontSize 14
672 fontName "Consolas"
673 configuration "AutoFlippingLabel"
674 model "six_pos"
675 position "thead"
676 ]
677 ]
678 edge
679 [
680 source 2
681 target 8
682 graphics
683 [
684 fill "#000000"
685 width 3
686 targetArrow "standard"
687 ]
688 LabelGraphics
689 [
690 text "entry reference Statechart"
691 fontSize 14
692 fontName "Consolas"
693 configuration "AutoFlippingLabel"
694 model "six_pos"
695 position "thead"
696 ]
697 ]
698]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic0NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic0NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..05929964
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic0NEIGHBOURHOOD.gml
@@ -0,0 +1,314 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x 120.0
15 y 68.0
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[State class] (5)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x 435.0
40 y 82.0
41 w 176.0
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[Statechart class] (1)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x -139.25
65 y 68.0
66 w 137.5
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[Entry class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 edge
84 [
85 source 0
86 target 0
87 label "next reference State"
88 graphics
89 [
90 fill "#000000"
91 targetArrow "standard"
92 Line
93 [
94 point
95 [
96 x 120.0
97 y 68.0
98 ]
99 point
100 [
101 x 90.0
102 y -141.0
103 ]
104 point
105 [
106 x 120.0
107 y 68.0
108 ]
109 ]
110 ]
111 LabelGraphics
112 [
113 text "next reference State"
114 fontSize 12
115 fontName "Dialog"
116 configuration "AutoFlippingLabel"
117 contentWidth 112.064453125
118 contentHeight 18.701171875
119 model "six_pos"
120 position "head"
121 ]
122 LabelGraphics
123 [
124 text "[1, 4, 1]"
125 fontSize 12
126 fontName "Dialog"
127 configuration "AutoFlippingLabel"
128 contentWidth 44.025390625
129 contentHeight 18.701171875
130 model "six_pos"
131 position "stail"
132 ]
133 LabelGraphics
134 [
135 text "[1, 2, 2, 1]"
136 fontSize 12
137 fontName "Dialog"
138 configuration "AutoFlippingLabel"
139 contentWidth 57.3671875
140 contentHeight 18.701171875
141 model "six_pos"
142 position "shead"
143 ]
144 ]
145 edge
146 [
147 source 1
148 target 0
149 label "state reference Statechart"
150 graphics
151 [
152 fill "#000000"
153 targetArrow "standard"
154 ]
155 edgeAnchor
156 [
157 ySource -0.7
158 ]
159 LabelGraphics
160 [
161 text "state reference Statechart"
162 fontSize 12
163 fontName "Dialog"
164 configuration "AutoFlippingLabel"
165 contentWidth 142.076171875
166 contentHeight 18.701171875
167 model "six_pos"
168 position "head"
169 ]
170 LabelGraphics
171 [
172 text "[5]"
173 fontSize 12
174 fontName "Dialog"
175 configuration "AutoFlippingLabel"
176 contentWidth 17.341796875
177 contentHeight 18.701171875
178 model "six_pos"
179 position "stail"
180 ]
181 LabelGraphics
182 [
183 text "[1, 1, 1, 1]"
184 fontSize 12
185 fontName "Dialog"
186 configuration "AutoFlippingLabel"
187 contentWidth 57.3671875
188 contentHeight 18.701171875
189 model "six_pos"
190 position "ttail"
191 ]
192 ]
193 edge
194 [
195 source 1
196 target 2
197 label "entry reference Statechart"
198 graphics
199 [
200 fill "#000000"
201 targetArrow "standard"
202 Line
203 [
204 point
205 [
206 x 435.0
207 y 82.0
208 ]
209 point
210 [
211 x 415.75
212 y 287.0
213 ]
214 point
215 [
216 x -139.25
217 y 287.0
218 ]
219 point
220 [
221 x -139.25
222 y 68.0
223 ]
224 ]
225 ]
226 edgeAnchor
227 [
228 xSource -0.21875
229 ]
230 LabelGraphics
231 [
232 text "entry reference Statechart"
233 fontSize 12
234 fontName "Dialog"
235 configuration "AutoFlippingLabel"
236 contentWidth 142.73828125
237 contentHeight 18.701171875
238 model "six_pos"
239 position "head"
240 ]
241 LabelGraphics
242 [
243 text "[1]"
244 fontSize 12
245 fontName "Dialog"
246 configuration "AutoFlippingLabel"
247 contentWidth 17.341796875
248 contentHeight 18.701171875
249 model "six_pos"
250 position "stail"
251 ]
252 LabelGraphics
253 [
254 text "[1]"
255 fontSize 12
256 fontName "Dialog"
257 configuration "AutoFlippingLabel"
258 contentWidth 17.341796875
259 contentHeight 18.701171875
260 model "six_pos"
261 position "ttail"
262 ]
263 ]
264 edge
265 [
266 source 2
267 target 0
268 label "entry reference Entry"
269 graphics
270 [
271 fill "#000000"
272 targetArrow "standard"
273 ]
274 edgeAnchor
275 [
276 ySource 0.35
277 xTarget -0.28
278 yTarget 0.35
279 ]
280 LabelGraphics
281 [
282 text "entry reference Entry"
283 fontSize 12
284 fontName "Dialog"
285 configuration "AutoFlippingLabel"
286 contentWidth 116.048828125
287 contentHeight 18.701171875
288 model "six_pos"
289 position "head"
290 ]
291 LabelGraphics
292 [
293 text "[1]"
294 fontSize 12
295 fontName "Dialog"
296 configuration "AutoFlippingLabel"
297 contentWidth 17.341796875
298 contentHeight 18.701171875
299 model "six_pos"
300 position "stail"
301 ]
302 LabelGraphics
303 [
304 text "[1, 0, 0, 0]"
305 fontSize 12
306 fontName "Dialog"
307 configuration "AutoFlippingLabel"
308 contentWidth 57.3671875
309 contentHeight 18.701171875
310 model "six_pos"
311 position "ttail"
312 ]
313 ]
314]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic1NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic1NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..09dff987
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic1NEIGHBOURHOOD.gml
@@ -0,0 +1,621 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 137.5
9 h 40
10 type "roundrectangle"
11 fill "#FFCC00"
12 outline "#000000"
13 ]
14 LabelGraphics
15 [
16 ]
17 LabelGraphics
18 [
19 text "[State class] (1)"
20 fontSize 14
21 fontName "Dialog"
22 ]
23 ]
24 node
25 [
26 id 1
27 graphics
28 [
29 w 137.5
30 h 40
31 type "roundrectangle"
32 fill "#FFCC00"
33 outline "#000000"
34 ]
35 LabelGraphics
36 [
37 ]
38 LabelGraphics
39 [
40 text "[Entry class] (1)"
41 fontSize 14
42 fontName "Dialog"
43 ]
44 ]
45 node
46 [
47 id 2
48 graphics
49 [
50 w 137.5
51 h 40
52 type "roundrectangle"
53 fill "#FFCC00"
54 outline "#000000"
55 ]
56 LabelGraphics
57 [
58 ]
59 LabelGraphics
60 [
61 text "[State class] (1)"
62 fontSize 14
63 fontName "Dialog"
64 ]
65 ]
66 node
67 [
68 id 3
69 graphics
70 [
71 w 137.5
72 h 40
73 type "roundrectangle"
74 fill "#FFCC00"
75 outline "#000000"
76 ]
77 LabelGraphics
78 [
79 ]
80 LabelGraphics
81 [
82 text "[State class] (1)"
83 fontSize 14
84 fontName "Dialog"
85 ]
86 ]
87 node
88 [
89 id 4
90 graphics
91 [
92 w 137.5
93 h 40
94 type "roundrectangle"
95 fill "#FFCC00"
96 outline "#000000"
97 ]
98 LabelGraphics
99 [
100 ]
101 LabelGraphics
102 [
103 text "[State class] (2)"
104 fontSize 14
105 fontName "Dialog"
106 ]
107 ]
108 node
109 [
110 id 5
111 graphics
112 [
113 w 176.0
114 h 40
115 type "roundrectangle"
116 fill "#FFCC00"
117 outline "#000000"
118 ]
119 LabelGraphics
120 [
121 ]
122 LabelGraphics
123 [
124 text "[Statechart class] (1)"
125 fontSize 14
126 fontName "Dialog"
127 ]
128 ]
129 edge
130 [
131 source 1
132 target 2
133 label "entry reference Entry"
134 graphics
135 [
136 fill "#000000"
137 targetArrow "standard"
138 Line
139 [
140 ]
141 ]
142 LabelGraphics
143 [
144 text "entry reference Entry"
145 fontSize 12
146 fontName "Dialog"
147 configuration "AutoFlippingLabel"
148 model "six_pos"
149 position "head"
150 ]
151 LabelGraphics
152 [
153 text "[1]"
154 fontSize 12
155 fontName "Dialog"
156 configuration "AutoFlippingLabel"
157 model "six_pos"
158 position "stail"
159 ]
160 LabelGraphics
161 [
162 text "[1]"
163 fontSize 12
164 fontName "Dialog"
165 configuration "AutoFlippingLabel"
166 model "six_pos"
167 position "ttail"
168 ]
169 ]
170 edge
171 [
172 source 3
173 target 2
174 label "next reference State"
175 graphics
176 [
177 fill "#000000"
178 targetArrow "standard"
179 Line
180 [
181 ]
182 ]
183 LabelGraphics
184 [
185 text "next reference State"
186 fontSize 12
187 fontName "Dialog"
188 configuration "AutoFlippingLabel"
189 model "six_pos"
190 position "head"
191 ]
192 LabelGraphics
193 [
194 text "[1]"
195 fontSize 12
196 fontName "Dialog"
197 configuration "AutoFlippingLabel"
198 model "six_pos"
199 position "stail"
200 ]
201 LabelGraphics
202 [
203 text "[1, 1, 1, 1]"
204 fontSize 12
205 fontName "Dialog"
206 configuration "AutoFlippingLabel"
207 model "six_pos"
208 position "ttail"
209 ]
210 ]
211 edge
212 [
213 source 3
214 target 0
215 label "next reference State"
216 graphics
217 [
218 fill "#000000"
219 targetArrow "standard"
220 Line
221 [
222 ]
223 ]
224 LabelGraphics
225 [
226 text "next reference State"
227 fontSize 12
228 fontName "Dialog"
229 configuration "AutoFlippingLabel"
230 model "six_pos"
231 position "head"
232 ]
233 LabelGraphics
234 [
235 text "[1]"
236 fontSize 12
237 fontName "Dialog"
238 configuration "AutoFlippingLabel"
239 model "six_pos"
240 position "stail"
241 ]
242 LabelGraphics
243 [
244 text "[1, 1, 1, 1]"
245 fontSize 12
246 fontName "Dialog"
247 configuration "AutoFlippingLabel"
248 model "six_pos"
249 position "ttail"
250 ]
251 ]
252 edge
253 [
254 source 3
255 target 4
256 label "next reference State"
257 graphics
258 [
259 fill "#000000"
260 targetArrow "standard"
261 Line
262 [
263 ]
264 ]
265 LabelGraphics
266 [
267 text "next reference State"
268 fontSize 12
269 fontName "Dialog"
270 configuration "AutoFlippingLabel"
271 model "six_pos"
272 position "head"
273 ]
274 LabelGraphics
275 [
276 text "[2]"
277 fontSize 12
278 fontName "Dialog"
279 configuration "AutoFlippingLabel"
280 model "six_pos"
281 position "stail"
282 ]
283 LabelGraphics
284 [
285 text "[1, 1, 1, 1]"
286 fontSize 12
287 fontName "Dialog"
288 configuration "AutoFlippingLabel"
289 model "six_pos"
290 position "ttail"
291 ]
292 ]
293 edge
294 [
295 source 2
296 target 3
297 label "next reference State"
298 graphics
299 [
300 fill "#000000"
301 targetArrow "standard"
302 Line
303 [
304 ]
305 ]
306 LabelGraphics
307 [
308 text "next reference State"
309 fontSize 12
310 fontName "Dialog"
311 configuration "AutoFlippingLabel"
312 model "six_pos"
313 position "head"
314 ]
315 LabelGraphics
316 [
317 text "[1]"
318 fontSize 12
319 fontName "Dialog"
320 configuration "AutoFlippingLabel"
321 model "six_pos"
322 position "stail"
323 ]
324 LabelGraphics
325 [
326 text "[1]"
327 fontSize 12
328 fontName "Dialog"
329 configuration "AutoFlippingLabel"
330 model "six_pos"
331 position "ttail"
332 ]
333 ]
334 edge
335 [
336 source 4
337 target 2
338 label "next reference State"
339 graphics
340 [
341 fill "#000000"
342 targetArrow "standard"
343 Line
344 [
345 ]
346 ]
347 LabelGraphics
348 [
349 text "next reference State"
350 fontSize 12
351 fontName "Dialog"
352 configuration "AutoFlippingLabel"
353 model "six_pos"
354 position "head"
355 ]
356 LabelGraphics
357 [
358 text "[1, 0]"
359 fontSize 12
360 fontName "Dialog"
361 configuration "AutoFlippingLabel"
362 model "six_pos"
363 position "stail"
364 ]
365 LabelGraphics
366 [
367 text "[1, 1]"
368 fontSize 12
369 fontName "Dialog"
370 configuration "AutoFlippingLabel"
371 model "six_pos"
372 position "ttail"
373 ]
374 ]
375 edge
376 [
377 source 4
378 target 3
379 label "next reference State"
380 graphics
381 [
382 fill "#000000"
383 targetArrow "standard"
384 Line
385 [
386 ]
387 ]
388 LabelGraphics
389 [
390 text "next reference State"
391 fontSize 12
392 fontName "Dialog"
393 configuration "AutoFlippingLabel"
394 model "six_pos"
395 position "head"
396 ]
397 LabelGraphics
398 [
399 text "[1, 0]"
400 fontSize 12
401 fontName "Dialog"
402 configuration "AutoFlippingLabel"
403 model "six_pos"
404 position "stail"
405 ]
406 LabelGraphics
407 [
408 text "[1, 1]"
409 fontSize 12
410 fontName "Dialog"
411 configuration "AutoFlippingLabel"
412 model "six_pos"
413 position "ttail"
414 ]
415 ]
416 edge
417 [
418 source 5
419 target 2
420 label "state reference Statechart"
421 graphics
422 [
423 fill "#000000"
424 targetArrow "standard"
425 Line
426 [
427 ]
428 ]
429 LabelGraphics
430 [
431 text "state reference Statechart"
432 fontSize 12
433 fontName "Dialog"
434 configuration "AutoFlippingLabel"
435 model "six_pos"
436 position "head"
437 ]
438 LabelGraphics
439 [
440 text "[1]"
441 fontSize 12
442 fontName "Dialog"
443 configuration "AutoFlippingLabel"
444 model "six_pos"
445 position "stail"
446 ]
447 LabelGraphics
448 [
449 text "[1, 1, 1, 1, 1]"
450 fontSize 12
451 fontName "Dialog"
452 configuration "AutoFlippingLabel"
453 model "six_pos"
454 position "ttail"
455 ]
456 ]
457 edge
458 [
459 source 5
460 target 1
461 label "entry reference Statechart"
462 graphics
463 [
464 fill "#000000"
465 targetArrow "standard"
466 Line
467 [
468 ]
469 ]
470 LabelGraphics
471 [
472 text "entry reference Statechart"
473 fontSize 12
474 fontName "Dialog"
475 configuration "AutoFlippingLabel"
476 model "six_pos"
477 position "head"
478 ]
479 LabelGraphics
480 [
481 text "[1]"
482 fontSize 12
483 fontName "Dialog"
484 configuration "AutoFlippingLabel"
485 model "six_pos"
486 position "stail"
487 ]
488 LabelGraphics
489 [
490 text "[1]"
491 fontSize 12
492 fontName "Dialog"
493 configuration "AutoFlippingLabel"
494 model "six_pos"
495 position "ttail"
496 ]
497 ]
498 edge
499 [
500 source 5
501 target 4
502 label "state reference Statechart"
503 graphics
504 [
505 fill "#000000"
506 targetArrow "standard"
507 Line
508 [
509 ]
510 ]
511 LabelGraphics
512 [
513 text "state reference Statechart"
514 fontSize 12
515 fontName "Dialog"
516 configuration "AutoFlippingLabel"
517 model "six_pos"
518 position "head"
519 ]
520 LabelGraphics
521 [
522 text "[2]"
523 fontSize 12
524 fontName "Dialog"
525 configuration "AutoFlippingLabel"
526 model "six_pos"
527 position "stail"
528 ]
529 LabelGraphics
530 [
531 text "[1, 1, 1, 1, 1]"
532 fontSize 12
533 fontName "Dialog"
534 configuration "AutoFlippingLabel"
535 model "six_pos"
536 position "ttail"
537 ]
538 ]
539 edge
540 [
541 source 5
542 target 3
543 label "state reference Statechart"
544 graphics
545 [
546 fill "#000000"
547 targetArrow "standard"
548 Line
549 [
550 ]
551 ]
552 LabelGraphics
553 [
554 text "state reference Statechart"
555 fontSize 12
556 fontName "Dialog"
557 configuration "AutoFlippingLabel"
558 model "six_pos"
559 position "head"
560 ]
561 LabelGraphics
562 [
563 text "[1]"
564 fontSize 12
565 fontName "Dialog"
566 configuration "AutoFlippingLabel"
567 model "six_pos"
568 position "stail"
569 ]
570 LabelGraphics
571 [
572 text "[1, 1, 1, 1, 1]"
573 fontSize 12
574 fontName "Dialog"
575 configuration "AutoFlippingLabel"
576 model "six_pos"
577 position "ttail"
578 ]
579 ]
580 edge
581 [
582 source 5
583 target 0
584 label "state reference Statechart"
585 graphics
586 [
587 fill "#000000"
588 targetArrow "standard"
589 Line
590 [
591 ]
592 ]
593 LabelGraphics
594 [
595 text "state reference Statechart"
596 fontSize 12
597 fontName "Dialog"
598 configuration "AutoFlippingLabel"
599 model "six_pos"
600 position "head"
601 ]
602 LabelGraphics
603 [
604 text "[1]"
605 fontSize 12
606 fontName "Dialog"
607 configuration "AutoFlippingLabel"
608 model "six_pos"
609 position "stail"
610 ]
611 LabelGraphics
612 [
613 text "[1, 1, 1, 1, 1]"
614 fontSize 12
615 fontName "Dialog"
616 configuration "AutoFlippingLabel"
617 model "six_pos"
618 position "ttail"
619 ]
620 ]
621]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic2NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic2NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..aa0f19b6
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic2NEIGHBOURHOOD.gml
@@ -0,0 +1,559 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x -321.0
15 y 198.0
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[State class] (1)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x 312.0
40 y -56.0
41 w 137.5
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[State class] (1)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x 337.0
65 y 323.0
66 w 137.5
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[State class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 node
84 [
85 id 3
86 label ""
87 graphics
88 [
89 x 40.75
90 y 192.0
91 w 137.5
92 h 40.0
93 type "roundrectangle"
94 fill "#FFCC00"
95 outline "#000000"
96 ]
97 LabelGraphics
98 [
99 ]
100 LabelGraphics
101 [
102 text "[State class] (1)"
103 fontSize 14
104 fontName "Dialog"
105 anchor "c"
106 ]
107 ]
108 node
109 [
110 id 4
111 label ""
112 graphics
113 [
114 x -321.0
115 y 47.0
116 w 137.5
117 h 40.0
118 type "roundrectangle"
119 fill "#FFCC00"
120 outline "#000000"
121 ]
122 LabelGraphics
123 [
124 ]
125 LabelGraphics
126 [
127 text "[State class] (1)"
128 fontSize 14
129 fontName "Dialog"
130 anchor "c"
131 ]
132 ]
133 node
134 [
135 id 5
136 label ""
137 graphics
138 [
139 x 312.0
140 y -193.0
141 w 176.0
142 h 40.0
143 type "roundrectangle"
144 fill "#FFCC00"
145 outline "#000000"
146 ]
147 LabelGraphics
148 [
149 ]
150 LabelGraphics
151 [
152 text "[Statechart class] (1)"
153 fontSize 14
154 fontName "Dialog"
155 anchor "c"
156 ]
157 ]
158 node
159 [
160 id 6
161 label ""
162 graphics
163 [
164 x 40.75
165 y -128.0
166 w 137.5
167 h 40.0
168 type "roundrectangle"
169 fill "#FFCC00"
170 outline "#000000"
171 ]
172 LabelGraphics
173 [
174 ]
175 LabelGraphics
176 [
177 text "[Entry class] (1)"
178 fontSize 14
179 fontName "Dialog"
180 anchor "c"
181 ]
182 ]
183 edge
184 [
185 source 2
186 target 3
187 label "next reference State"
188 graphics
189 [
190 fill "#000000"
191 targetArrow "standard"
192 Line
193 [
194 point
195 [
196 x 337.0
197 y 323.0
198 ]
199 point
200 [
201 x 40.75
202 y 323.0
203 ]
204 point
205 [
206 x 40.75
207 y 192.0
208 ]
209 ]
210 ]
211 LabelGraphics
212 [
213 text "next reference State"
214 fontSize 12
215 fontName "Dialog"
216 configuration "AutoFlippingLabel"
217 contentWidth 112.064453125
218 contentHeight 18.701171875
219 model "six_pos"
220 position "head"
221 ]
222 LabelGraphics
223 [
224 text "[1, 1, 1, 1]"
225 fontSize 12
226 fontName "Dialog"
227 configuration "AutoFlippingLabel"
228 contentWidth 57.3671875
229 contentHeight 18.701171875
230 model "six_pos"
231 position "stail"
232 ]
233 LabelGraphics
234 [
235 text "[1]"
236 fontSize 12
237 fontName "Dialog"
238 configuration "AutoFlippingLabel"
239 contentWidth 17.341796875
240 contentHeight 18.701171875
241 model "six_pos"
242 position "ttail"
243 ]
244 ]
245 edge
246 [
247 source 3
248 target 2
249 label "next reference State"
250 graphics
251 [
252 fill "#000000"
253 targetArrow "standard"
254 Line
255 [
256 point
257 [
258 x 40.75
259 y 192.0
260 ]
261 point
262 [
263 x 40.75
264 y 323.0
265 ]
266 point
267 [
268 x 337.0
269 y 323.0
270 ]
271 ]
272 ]
273 LabelGraphics
274 [
275 text "next reference State"
276 fontSize 12
277 fontName "Dialog"
278 configuration "AutoFlippingLabel"
279 contentWidth 112.064453125
280 contentHeight 18.701171875
281 model "six_pos"
282 position "head"
283 ]
284 LabelGraphics
285 [
286 text "[1]"
287 fontSize 12
288 fontName "Dialog"
289 configuration "AutoFlippingLabel"
290 contentWidth 17.341796875
291 contentHeight 18.701171875
292 model "six_pos"
293 position "stail"
294 ]
295 LabelGraphics
296 [
297 text "[1]"
298 fontSize 12
299 fontName "Dialog"
300 configuration "AutoFlippingLabel"
301 contentWidth 17.341796875
302 contentHeight 18.701171875
303 model "six_pos"
304 position "ttail"
305 ]
306 ]
307 edge
308 [
309 source 5
310 target 1
311 label "state reference Statechart"
312 graphics
313 [
314 fill "#000000"
315 targetArrow "standard"
316 ]
317 LabelGraphics
318 [
319 text "state reference Statechart"
320 fontSize 12
321 fontName "Dialog"
322 configuration "AutoFlippingLabel"
323 contentWidth 142.076171875
324 contentHeight 18.701171875
325 model "six_pos"
326 position "head"
327 ]
328 LabelGraphics
329 [
330 text "[1, 1, 1, 1, 1]"
331 fontSize 12
332 fontName "Dialog"
333 configuration "AutoFlippingLabel"
334 contentWidth 70.708984375
335 contentHeight 18.701171875
336 model "six_pos"
337 position "stail"
338 ]
339 LabelGraphics
340 [
341 text "[1]"
342 fontSize 12
343 fontName "Dialog"
344 configuration "AutoFlippingLabel"
345 contentWidth 17.341796875
346 contentHeight 18.701171875
347 model "six_pos"
348 position "ttail"
349 ]
350 ]
351 edge
352 [
353 source 5
354 target 6
355 label "entry reference Statechart"
356 graphics
357 [
358 fill "#000000"
359 targetArrow "standard"
360 Line
361 [
362 point
363 [
364 x 312.0
365 y -193.0
366 ]
367 point
368 [
369 x 40.75
370 y -193.0
371 ]
372 point
373 [
374 x 40.75
375 y -128.0
376 ]
377 ]
378 ]
379 edgeAnchor
380 [
381 xSource -0.5113636363636364
382 ]
383 LabelGraphics
384 [
385 text "entry reference Statechart"
386 fontSize 12
387 fontName "Dialog"
388 configuration "AutoFlippingLabel"
389 contentWidth 142.73828125
390 contentHeight 18.701171875
391 model "six_pos"
392 position "head"
393 ]
394 LabelGraphics
395 [
396 text "[1]"
397 fontSize 12
398 fontName "Dialog"
399 configuration "AutoFlippingLabel"
400 contentWidth 17.341796875
401 contentHeight 18.701171875
402 model "six_pos"
403 position "stail"
404 ]
405 LabelGraphics
406 [
407 text "[1]"
408 fontSize 12
409 fontName "Dialog"
410 configuration "AutoFlippingLabel"
411 contentWidth 17.341796875
412 contentHeight 18.701171875
413 model "six_pos"
414 position "ttail"
415 ]
416 ]
417 edge
418 [
419 source 0
420 target 3
421 label "next reference State"
422 graphics
423 [
424 fill "#000000"
425 targetArrow "standard"
426 ]
427 edgeAnchor
428 [
429 yTarget 0.3
430 ]
431 LabelGraphics
432 [
433 text "next reference State"
434 fontSize 12
435 fontName "Dialog"
436 configuration "AutoFlippingLabel"
437 contentWidth 112.064453125
438 contentHeight 18.701171875
439 model "six_pos"
440 position "head"
441 ]
442 LabelGraphics
443 [
444 text "[1]"
445 fontSize 12
446 fontName "Dialog"
447 configuration "AutoFlippingLabel"
448 contentWidth 17.341796875
449 contentHeight 18.701171875
450 model "six_pos"
451 position "stail"
452 ]
453 LabelGraphics
454 [
455 text "[1]"
456 fontSize 12
457 fontName "Dialog"
458 configuration "AutoFlippingLabel"
459 contentWidth 17.341796875
460 contentHeight 18.701171875
461 model "six_pos"
462 position "ttail"
463 ]
464 ]
465 edge
466 [
467 source 6
468 target 3
469 label "entry reference Entry"
470 graphics
471 [
472 fill "#000000"
473 targetArrow "standard"
474 ]
475 LabelGraphics
476 [
477 text "entry reference Entry"
478 fontSize 12
479 fontName "Dialog"
480 configuration "AutoFlippingLabel"
481 contentWidth 116.048828125
482 contentHeight 18.701171875
483 model "six_pos"
484 position "head"
485 ]
486 LabelGraphics
487 [
488 text "[1]"
489 fontSize 12
490 fontName "Dialog"
491 configuration "AutoFlippingLabel"
492 contentWidth 17.341796875
493 contentHeight 18.701171875
494 model "six_pos"
495 position "stail"
496 ]
497 LabelGraphics
498 [
499 text "[1]"
500 fontSize 12
501 fontName "Dialog"
502 configuration "AutoFlippingLabel"
503 contentWidth 17.341796875
504 contentHeight 18.701171875
505 model "six_pos"
506 position "ttail"
507 ]
508 ]
509 edge
510 [
511 source 1
512 target 2
513 label "next reference State"
514 graphics
515 [
516 fill "#000000"
517 targetArrow "standard"
518 ]
519 edgeAnchor
520 [
521 xSource 0.5454545454545454
522 xTarget 0.18181818181818182
523 yTarget -0.75
524 ]
525 LabelGraphics
526 [
527 text "next reference State"
528 fontSize 12
529 fontName "Dialog"
530 configuration "AutoFlippingLabel"
531 contentWidth 112.064453125
532 contentHeight 18.701171875
533 model "six_pos"
534 position "head"
535 ]
536 LabelGraphics
537 [
538 text "[1]"
539 fontSize 12
540 fontName "Dialog"
541 configuration "AutoFlippingLabel"
542 contentWidth 17.341796875
543 contentHeight 18.701171875
544 model "six_pos"
545 position "stail"
546 ]
547 LabelGraphics
548 [
549 text "[1]"
550 fontSize 12
551 fontName "Dialog"
552 configuration "AutoFlippingLabel"
553 contentWidth 17.341796875
554 contentHeight 18.701171875
555 model "six_pos"
556 position "ttail"
557 ]
558 ]
559]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic3NEIGHBOURHOOD.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic3NEIGHBOURHOOD.gml
new file mode 100644
index 00000000..8127e609
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealistic3NEIGHBOURHOOD.gml
@@ -0,0 +1,599 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x -158.5
15 y -79.0
16 w 137.5
17 h 40.0
18 type "roundrectangle"
19 fill "#FFCC00"
20 outline "#000000"
21 ]
22 LabelGraphics
23 [
24 ]
25 LabelGraphics
26 [
27 text "[State class] (1)"
28 fontSize 14
29 fontName "Dialog"
30 anchor "c"
31 ]
32 ]
33 node
34 [
35 id 1
36 label ""
37 graphics
38 [
39 x 229.25
40 y 230.0
41 w 137.5
42 h 40.0
43 type "roundrectangle"
44 fill "#FFCC00"
45 outline "#000000"
46 ]
47 LabelGraphics
48 [
49 ]
50 LabelGraphics
51 [
52 text "[State class] (1)"
53 fontSize 14
54 fontName "Dialog"
55 anchor "c"
56 ]
57 ]
58 node
59 [
60 id 2
61 label ""
62 graphics
63 [
64 x 93.0
65 y 9.0
66 w 137.5
67 h 40.0
68 type "roundrectangle"
69 fill "#FFCC00"
70 outline "#000000"
71 ]
72 LabelGraphics
73 [
74 ]
75 LabelGraphics
76 [
77 text "[State class] (1)"
78 fontSize 14
79 fontName "Dialog"
80 anchor "c"
81 ]
82 ]
83 node
84 [
85 id 3
86 label ""
87 graphics
88 [
89 x 424.0
90 y 43.0
91 w 137.5
92 h 40.0
93 type "roundrectangle"
94 fill "#FFCC00"
95 outline "#000000"
96 ]
97 LabelGraphics
98 [
99 ]
100 LabelGraphics
101 [
102 text "[State class] (1)"
103 fontSize 14
104 fontName "Dialog"
105 anchor "c"
106 ]
107 ]
108 node
109 [
110 id 4
111 label ""
112 graphics
113 [
114 x -416.0
115 y 9.0
116 w 137.5
117 h 40.0
118 type "roundrectangle"
119 fill "#FFCC00"
120 outline "#000000"
121 ]
122 LabelGraphics
123 [
124 ]
125 LabelGraphics
126 [
127 text "[Entry class] (1)"
128 fontSize 14
129 fontName "Dialog"
130 anchor "c"
131 ]
132 ]
133 node
134 [
135 id 5
136 label ""
137 graphics
138 [
139 x -197.0
140 y 243.0
141 w 137.5
142 h 40.0
143 type "roundrectangle"
144 fill "#FFCC00"
145 outline "#000000"
146 ]
147 LabelGraphics
148 [
149 ]
150 LabelGraphics
151 [
152 text "[State class] (1)"
153 fontSize 14
154 fontName "Dialog"
155 anchor "c"
156 ]
157 ]
158 node
159 [
160 id 6
161 label ""
162 graphics
163 [
164 x -177.75
165 y -230.0
166 w 176.0
167 h 40.0
168 type "roundrectangle"
169 fill "#FFCC00"
170 outline "#000000"
171 ]
172 LabelGraphics
173 [
174 ]
175 LabelGraphics
176 [
177 text "[Statechart class] (1)"
178 fontSize 14
179 fontName "Dialog"
180 anchor "c"
181 ]
182 ]
183 edge
184 [
185 source 3
186 target 1
187 label "next reference State"
188 graphics
189 [
190 fill "#000000"
191 targetArrow "standard"
192 Line
193 [
194 point
195 [
196 x 424.0
197 y 43.0
198 ]
199 point
200 [
201 x 424.0
202 y 230.0
203 ]
204 point
205 [
206 x 229.25
207 y 230.0
208 ]
209 ]
210 ]
211 LabelGraphics
212 [
213 text "next reference State"
214 fontSize 12
215 fontName "Dialog"
216 configuration "AutoFlippingLabel"
217 contentWidth 112.064453125
218 contentHeight 18.701171875
219 model "six_pos"
220 position "head"
221 ]
222 LabelGraphics
223 [
224 text "[1]"
225 fontSize 12
226 fontName "Dialog"
227 configuration "AutoFlippingLabel"
228 contentWidth 17.341796875
229 contentHeight 18.701171875
230 model "six_pos"
231 position "stail"
232 ]
233 LabelGraphics
234 [
235 text "[1]"
236 fontSize 12
237 fontName "Dialog"
238 configuration "AutoFlippingLabel"
239 contentWidth 17.341796875
240 contentHeight 18.701171875
241 model "six_pos"
242 position "ttail"
243 ]
244 ]
245 edge
246 [
247 source 4
248 target 5
249 label "entry reference Entry"
250 graphics
251 [
252 fill "#000000"
253 targetArrow "standard"
254 Line
255 [
256 point
257 [
258 x -416.0
259 y 9.0
260 ]
261 point
262 [
263 x -321.0
264 y 9.0
265 ]
266 point
267 [
268 x -321.0
269 y 250.0
270 ]
271 point
272 [
273 x -197.0
274 y 243.0
275 ]
276 ]
277 ]
278 edgeAnchor
279 [
280 yTarget 0.35
281 ]
282 LabelGraphics
283 [
284 text "entry reference Entry"
285 fontSize 12
286 fontName "Dialog"
287 configuration "AutoFlippingLabel"
288 contentWidth 116.048828125
289 contentHeight 18.701171875
290 model "six_pos"
291 position "head"
292 ]
293 LabelGraphics
294 [
295 text "[1]"
296 fontSize 12
297 fontName "Dialog"
298 configuration "AutoFlippingLabel"
299 contentWidth 17.341796875
300 contentHeight 18.701171875
301 model "six_pos"
302 position "stail"
303 ]
304 LabelGraphics
305 [
306 text "[1]"
307 fontSize 12
308 fontName "Dialog"
309 configuration "AutoFlippingLabel"
310 contentWidth 17.341796875
311 contentHeight 18.701171875
312 model "six_pos"
313 position "ttail"
314 ]
315 ]
316 edge
317 [
318 source 5
319 target 1
320 label "next reference State"
321 graphics
322 [
323 fill "#000000"
324 targetArrow "standard"
325 Line
326 [
327 point
328 [
329 x -197.0
330 y 243.0
331 ]
332 point
333 [
334 x -180.9375
335 y 306.0
336 ]
337 point
338 [
339 x 229.25
340 y 306.0
341 ]
342 point
343 [
344 x 229.25
345 y 230.0
346 ]
347 ]
348 ]
349 edgeAnchor
350 [
351 xSource 0.23363636363636364
352 yTarget 1.0
353 ]
354 LabelGraphics
355 [
356 text "next reference State"
357 fontSize 12
358 fontName "Dialog"
359 configuration "AutoFlippingLabel"
360 contentWidth 112.064453125
361 contentHeight 18.701171875
362 model "six_pos"
363 position "head"
364 ]
365 LabelGraphics
366 [
367 text "[1]"
368 fontSize 12
369 fontName "Dialog"
370 configuration "AutoFlippingLabel"
371 contentWidth 17.341796875
372 contentHeight 18.701171875
373 model "six_pos"
374 position "stail"
375 ]
376 LabelGraphics
377 [
378 text "[1]"
379 fontSize 12
380 fontName "Dialog"
381 configuration "AutoFlippingLabel"
382 contentWidth 17.341796875
383 contentHeight 18.701171875
384 model "six_pos"
385 position "ttail"
386 ]
387 ]
388 edge
389 [
390 source 0
391 target 5
392 label "next reference State"
393 graphics
394 [
395 fill "#000000"
396 targetArrow "standard"
397 ]
398 edgeAnchor
399 [
400 xSource -0.56
401 ]
402 LabelGraphics
403 [
404 text "next reference State"
405 fontSize 12
406 fontName "Dialog"
407 configuration "AutoFlippingLabel"
408 contentWidth 112.064453125
409 contentHeight 18.701171875
410 model "six_pos"
411 position "head"
412 ]
413 LabelGraphics
414 [
415 text "[1]"
416 fontSize 12
417 fontName "Dialog"
418 configuration "AutoFlippingLabel"
419 contentWidth 17.341796875
420 contentHeight 18.701171875
421 model "six_pos"
422 position "stail"
423 ]
424 LabelGraphics
425 [
426 text "[1]"
427 fontSize 12
428 fontName "Dialog"
429 configuration "AutoFlippingLabel"
430 contentWidth 17.341796875
431 contentHeight 18.701171875
432 model "six_pos"
433 position "ttail"
434 ]
435 ]
436 edge
437 [
438 source 6
439 target 0
440 label "state reference Statechart"
441 graphics
442 [
443 fill "#000000"
444 targetArrow "standard"
445 ]
446 edgeAnchor
447 [
448 xSource 0.21875
449 ]
450 LabelGraphics
451 [
452 text "state reference Statechart"
453 fontSize 12
454 fontName "Dialog"
455 configuration "AutoFlippingLabel"
456 contentWidth 142.076171875
457 contentHeight 18.701171875
458 model "six_pos"
459 position "head"
460 ]
461 LabelGraphics
462 [
463 text "[1, 1, 1, 1, 1]"
464 fontSize 12
465 fontName "Dialog"
466 configuration "AutoFlippingLabel"
467 contentWidth 70.708984375
468 contentHeight 18.701171875
469 model "six_pos"
470 position "stail"
471 ]
472 LabelGraphics
473 [
474 text "[1]"
475 fontSize 12
476 fontName "Dialog"
477 configuration "AutoFlippingLabel"
478 contentWidth 17.341796875
479 contentHeight 18.701171875
480 model "six_pos"
481 position "ttail"
482 ]
483 ]
484 edge
485 [
486 source 6
487 target 4
488 label "entry reference Statechart"
489 graphics
490 [
491 fill "#000000"
492 targetArrow "standard"
493 Line
494 [
495 point
496 [
497 x -177.75
498 y -230.0
499 ]
500 point
501 [
502 x -416.0
503 y -230.0
504 ]
505 point
506 [
507 x -416.0
508 y 9.0
509 ]
510 ]
511 ]
512 edgeAnchor
513 [
514 xSource -0.7727272727272727
515 ]
516 LabelGraphics
517 [
518 text "entry reference Statechart"
519 fontSize 12
520 fontName "Dialog"
521 configuration "AutoFlippingLabel"
522 contentWidth 142.73828125
523 contentHeight 18.701171875
524 model "six_pos"
525 position "head"
526 ]
527 LabelGraphics
528 [
529 text "[1]"
530 fontSize 12
531 fontName "Dialog"
532 configuration "AutoFlippingLabel"
533 contentWidth 17.341796875
534 contentHeight 18.701171875
535 model "six_pos"
536 position "stail"
537 ]
538 LabelGraphics
539 [
540 text "[1]"
541 fontSize 12
542 fontName "Dialog"
543 configuration "AutoFlippingLabel"
544 contentWidth 17.341796875
545 contentHeight 18.701171875
546 model "six_pos"
547 position "ttail"
548 ]
549 ]
550 edge
551 [
552 source 1
553 target 5
554 label "next reference State"
555 graphics
556 [
557 fill "#000000"
558 targetArrow "standard"
559 ]
560 edgeAnchor
561 [
562 xTarget 0.5672727272727273
563 yTarget -0.65
564 ]
565 LabelGraphics
566 [
567 text "next reference State"
568 fontSize 12
569 fontName "Dialog"
570 configuration "AutoFlippingLabel"
571 contentWidth 112.064453125
572 contentHeight 18.701171875
573 model "six_pos"
574 position "head"
575 ]
576 LabelGraphics
577 [
578 text "[1, 1, 1, 1]"
579 fontSize 12
580 fontName "Dialog"
581 configuration "AutoFlippingLabel"
582 contentWidth 57.3671875
583 contentHeight 18.701171875
584 model "six_pos"
585 position "stail"
586 ]
587 LabelGraphics
588 [
589 text "[1]"
590 fontSize 12
591 fontName "Dialog"
592 configuration "AutoFlippingLabel"
593 contentWidth 17.341796875
594 contentHeight 18.701171875
595 model "six_pos"
596 position "ttail"
597 ]
598 ]
599]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealisticMODEL.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealisticMODEL.gml
new file mode 100644
index 00000000..584651de
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/simpleSCRealisticMODEL.gml
@@ -0,0 +1,736 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 41.800000000000004
9 h 26
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "true"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 "
30 fontSize 14
31 fontName "Consolas"
32 alignment "left"
33 anchor "tl"
34 borderDistance 6
35 ]
36 ]
37
38 node
39 [
40 id 1
41 graphics
42 [
43 w 50.6
44 h 26
45 type "rectangle"
46 fill "#FFFFFF"
47 fill2 "#FFFFFF"
48 outline "#000000"
49 ]
50 LabelGraphics
51 [
52 text "false"
53 outline "#000000"
54 fill "#FFFFFF"
55 fontSize 16
56 fontName "Monospace"
57 autoSizePolicy "node_width"
58 anchor "t"
59 borderDistance 0.0
60 ]
61 LabelGraphics
62 [
63 text "
64 "
65 fontSize 14
66 fontName "Consolas"
67 alignment "left"
68 anchor "tl"
69 borderDistance 6
70 ]
71 ]
72
73 node
74 [
75 id 2
76 graphics
77 [
78 w 138.60000000000002
79 h 40
80 type "rectangle"
81 fill "#FFFFFF"
82 fill2 "#FFFFFF"
83 outline "#000000"
84 ]
85 LabelGraphics
86 [
87 text "null"
88 outline "#000000"
89 fill "#FFFFFF"
90 fontSize 16
91 fontName "Monospace"
92 autoSizePolicy "node_width"
93 anchor "t"
94 borderDistance 0.0
95 ]
96 LabelGraphics
97 [
98 text "
99 Statechart class
100 "
101 fontSize 14
102 fontName "Consolas"
103 alignment "left"
104 anchor "tl"
105 borderDistance 6
106 ]
107 ]
108
109 node
110 [
111 id 3
112 graphics
113 [
114 w 100.10000000000001
115 h 40
116 type "rectangle"
117 fill "#FFFFFF"
118 fill2 "#FFFFFF"
119 outline "#000000"
120 ]
121 LabelGraphics
122 [
123 text "null"
124 outline "#000000"
125 fill "#FFFFFF"
126 fontSize 16
127 fontName "Monospace"
128 autoSizePolicy "node_width"
129 anchor "t"
130 borderDistance 0.0
131 ]
132 LabelGraphics
133 [
134 text "
135 State class
136 "
137 fontSize 14
138 fontName "Consolas"
139 alignment "left"
140 anchor "tl"
141 borderDistance 6
142 ]
143 ]
144
145 node
146 [
147 id 4
148 graphics
149 [
150 w 100.10000000000001
151 h 40
152 type "rectangle"
153 fill "#FFFFFF"
154 fill2 "#FFFFFF"
155 outline "#000000"
156 ]
157 LabelGraphics
158 [
159 text "null"
160 outline "#000000"
161 fill "#FFFFFF"
162 fontSize 16
163 fontName "Monospace"
164 autoSizePolicy "node_width"
165 anchor "t"
166 borderDistance 0.0
167 ]
168 LabelGraphics
169 [
170 text "
171 State class
172 "
173 fontSize 14
174 fontName "Consolas"
175 alignment "left"
176 anchor "tl"
177 borderDistance 6
178 ]
179 ]
180
181 node
182 [
183 id 5
184 graphics
185 [
186 w 100.10000000000001
187 h 40
188 type "rectangle"
189 fill "#FFFFFF"
190 fill2 "#FFFFFF"
191 outline "#000000"
192 ]
193 LabelGraphics
194 [
195 text "null"
196 outline "#000000"
197 fill "#FFFFFF"
198 fontSize 16
199 fontName "Monospace"
200 autoSizePolicy "node_width"
201 anchor "t"
202 borderDistance 0.0
203 ]
204 LabelGraphics
205 [
206 text "
207 State class
208 "
209 fontSize 14
210 fontName "Consolas"
211 alignment "left"
212 anchor "tl"
213 borderDistance 6
214 ]
215 ]
216
217 node
218 [
219 id 6
220 graphics
221 [
222 w 100.10000000000001
223 h 40
224 type "rectangle"
225 fill "#FFFFFF"
226 fill2 "#FFFFFF"
227 outline "#000000"
228 ]
229 LabelGraphics
230 [
231 text "null"
232 outline "#000000"
233 fill "#FFFFFF"
234 fontSize 16
235 fontName "Monospace"
236 autoSizePolicy "node_width"
237 anchor "t"
238 borderDistance 0.0
239 ]
240 LabelGraphics
241 [
242 text "
243 State class
244 "
245 fontSize 14
246 fontName "Consolas"
247 alignment "left"
248 anchor "tl"
249 borderDistance 6
250 ]
251 ]
252
253 node
254 [
255 id 7
256 graphics
257 [
258 w 100.10000000000001
259 h 40
260 type "rectangle"
261 fill "#FFFFFF"
262 fill2 "#FFFFFF"
263 outline "#000000"
264 ]
265 LabelGraphics
266 [
267 text "null"
268 outline "#000000"
269 fill "#FFFFFF"
270 fontSize 16
271 fontName "Monospace"
272 autoSizePolicy "node_width"
273 anchor "t"
274 borderDistance 0.0
275 ]
276 LabelGraphics
277 [
278 text "
279 State class
280 "
281 fontSize 14
282 fontName "Consolas"
283 alignment "left"
284 anchor "tl"
285 borderDistance 6
286 ]
287 ]
288
289 node
290 [
291 id 8
292 graphics
293 [
294 w 100.10000000000001
295 h 40
296 type "rectangle"
297 fill "#FFFFFF"
298 fill2 "#FFFFFF"
299 outline "#000000"
300 ]
301 LabelGraphics
302 [
303 text "null"
304 outline "#000000"
305 fill "#FFFFFF"
306 fontSize 16
307 fontName "Monospace"
308 autoSizePolicy "node_width"
309 anchor "t"
310 borderDistance 0.0
311 ]
312 LabelGraphics
313 [
314 text "
315 Entry class
316 "
317 fontSize 14
318 fontName "Consolas"
319 alignment "left"
320 anchor "tl"
321 borderDistance 6
322 ]
323 ]
324
325 node
326 [
327 id 9
328 graphics
329 [
330 w 112.2
331 h 26
332 type "rectangle"
333 fill "#FFFFFF"
334 fill2 "#FFFFFF"
335 outline "#000000"
336 ]
337 LabelGraphics
338 [
339 text "New Integers"
340 outline "#000000"
341 fill "#FFFFFF"
342 fontSize 16
343 fontName "Monospace"
344 autoSizePolicy "node_width"
345 anchor "t"
346 borderDistance 0.0
347 ]
348 LabelGraphics
349 [
350 text "
351 "
352 fontSize 14
353 fontName "Consolas"
354 alignment "left"
355 anchor "tl"
356 borderDistance 6
357 ]
358 ]
359
360 node
361 [
362 id 10
363 graphics
364 [
365 w 85.80000000000001
366 h 26
367 type "rectangle"
368 fill "#FFFFFF"
369 fill2 "#FFFFFF"
370 outline "#000000"
371 ]
372 LabelGraphics
373 [
374 text "New Reals"
375 outline "#000000"
376 fill "#FFFFFF"
377 fontSize 16
378 fontName "Monospace"
379 autoSizePolicy "node_width"
380 anchor "t"
381 borderDistance 0.0
382 ]
383 LabelGraphics
384 [
385 text "
386 "
387 fontSize 14
388 fontName "Consolas"
389 alignment "left"
390 anchor "tl"
391 borderDistance 6
392 ]
393 ]
394
395 node
396 [
397 id 11
398 graphics
399 [
400 w 103.4
401 h 26
402 type "rectangle"
403 fill "#FFFFFF"
404 fill2 "#FFFFFF"
405 outline "#000000"
406 ]
407 LabelGraphics
408 [
409 text "New Strings"
410 outline "#000000"
411 fill "#FFFFFF"
412 fontSize 16
413 fontName "Monospace"
414 autoSizePolicy "node_width"
415 anchor "t"
416 borderDistance 0.0
417 ]
418 LabelGraphics
419 [
420 text "
421 "
422 fontSize 14
423 fontName "Consolas"
424 alignment "left"
425 anchor "tl"
426 borderDistance 6
427 ]
428 ]
429
430 node
431 [
432 id 12
433 graphics
434 [
435 w 103.4
436 h 26
437 type "rectangle"
438 fill "#FFFFFF"
439 fill2 "#FFFFFF"
440 outline "#000000"
441 ]
442 LabelGraphics
443 [
444 text "New Objects"
445 outline "#000000"
446 fill "#FFFFFF"
447 fontSize 16
448 fontName "Monospace"
449 autoSizePolicy "node_width"
450 anchor "t"
451 borderDistance 0.0
452 ]
453 LabelGraphics
454 [
455 text "
456 "
457 fontSize 14
458 fontName "Consolas"
459 alignment "left"
460 anchor "tl"
461 borderDistance 6
462 ]
463 ]
464 edge
465 [
466 source 3
467 target 4
468 graphics
469 [
470 fill "#000000"
471 targetArrow "standard"
472 ]
473 LabelGraphics
474 [
475 text "next reference State"
476 fontSize 14
477 fontName "Consolas"
478 configuration "AutoFlippingLabel"
479 model "six_pos"
480 position "thead"
481 ]
482 ]
483 edge
484 [
485 source 4
486 target 3
487 graphics
488 [
489 fill "#000000"
490 targetArrow "standard"
491 ]
492 LabelGraphics
493 [
494 text "next reference State"
495 fontSize 14
496 fontName "Consolas"
497 configuration "AutoFlippingLabel"
498 model "six_pos"
499 position "thead"
500 ]
501 ]
502 edge
503 [
504 source 4
505 target 5
506 graphics
507 [
508 fill "#000000"
509 targetArrow "standard"
510 ]
511 LabelGraphics
512 [
513 text "next reference State"
514 fontSize 14
515 fontName "Consolas"
516 configuration "AutoFlippingLabel"
517 model "six_pos"
518 position "thead"
519 ]
520 ]
521 edge
522 [
523 source 4
524 target 6
525 graphics
526 [
527 fill "#000000"
528 targetArrow "standard"
529 ]
530 LabelGraphics
531 [
532 text "next reference State"
533 fontSize 14
534 fontName "Consolas"
535 configuration "AutoFlippingLabel"
536 model "six_pos"
537 position "thead"
538 ]
539 ]
540 edge
541 [
542 source 4
543 target 7
544 graphics
545 [
546 fill "#000000"
547 targetArrow "standard"
548 ]
549 LabelGraphics
550 [
551 text "next reference State"
552 fontSize 14
553 fontName "Consolas"
554 configuration "AutoFlippingLabel"
555 model "six_pos"
556 position "thead"
557 ]
558 ]
559 edge
560 [
561 source 5
562 target 4
563 graphics
564 [
565 fill "#000000"
566 targetArrow "standard"
567 ]
568 LabelGraphics
569 [
570 text "next reference State"
571 fontSize 14
572 fontName "Consolas"
573 configuration "AutoFlippingLabel"
574 model "six_pos"
575 position "thead"
576 ]
577 ]
578 edge
579 [
580 source 7
581 target 3
582 graphics
583 [
584 fill "#000000"
585 targetArrow "standard"
586 ]
587 LabelGraphics
588 [
589 text "next reference State"
590 fontSize 14
591 fontName "Consolas"
592 configuration "AutoFlippingLabel"
593 model "six_pos"
594 position "thead"
595 ]
596 ]
597 edge
598 [
599 source 8
600 target 3
601 graphics
602 [
603 fill "#000000"
604 targetArrow "standard"
605 ]
606 LabelGraphics
607 [
608 text "entry reference Entry"
609 fontSize 14
610 fontName "Consolas"
611 configuration "AutoFlippingLabel"
612 model "six_pos"
613 position "thead"
614 ]
615 ]
616 edge
617 [
618 source 2
619 target 3
620 graphics
621 [
622 fill "#000000"
623 width 3
624 targetArrow "standard"
625 ]
626 LabelGraphics
627 [
628 text "state reference Statechart"
629 fontSize 14
630 fontName "Consolas"
631 configuration "AutoFlippingLabel"
632 model "six_pos"
633 position "thead"
634 ]
635 ]
636 edge
637 [
638 source 2
639 target 4
640 graphics
641 [
642 fill "#000000"
643 width 3
644 targetArrow "standard"
645 ]
646 LabelGraphics
647 [
648 text "state reference Statechart"
649 fontSize 14
650 fontName "Consolas"
651 configuration "AutoFlippingLabel"
652 model "six_pos"
653 position "thead"
654 ]
655 ]
656 edge
657 [
658 source 2
659 target 5
660 graphics
661 [
662 fill "#000000"
663 width 3
664 targetArrow "standard"
665 ]
666 LabelGraphics
667 [
668 text "state reference Statechart"
669 fontSize 14
670 fontName "Consolas"
671 configuration "AutoFlippingLabel"
672 model "six_pos"
673 position "thead"
674 ]
675 ]
676 edge
677 [
678 source 2
679 target 6
680 graphics
681 [
682 fill "#000000"
683 width 3
684 targetArrow "standard"
685 ]
686 LabelGraphics
687 [
688 text "state reference Statechart"
689 fontSize 14
690 fontName "Consolas"
691 configuration "AutoFlippingLabel"
692 model "six_pos"
693 position "thead"
694 ]
695 ]
696 edge
697 [
698 source 2
699 target 7
700 graphics
701 [
702 fill "#000000"
703 width 3
704 targetArrow "standard"
705 ]
706 LabelGraphics
707 [
708 text "state reference Statechart"
709 fontSize 14
710 fontName "Consolas"
711 configuration "AutoFlippingLabel"
712 model "six_pos"
713 position "thead"
714 ]
715 ]
716 edge
717 [
718 source 2
719 target 8
720 graphics
721 [
722 fill "#000000"
723 width 3
724 targetArrow "standard"
725 ]
726 LabelGraphics
727 [
728 text "entry reference Statechart"
729 fontSize 14
730 fontName "Consolas"
731 configuration "AutoFlippingLabel"
732 model "six_pos"
733 position "thead"
734 ]
735 ]
736]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/unnames.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/unnames.gml
new file mode 100644
index 00000000..61ab66f5
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/outputs/unnames.gml
@@ -0,0 +1,90 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label ""
12 graphics
13 [
14 x 370.0
15 y 238.0
16 w 124.0
17 h 90.0
18 type "roundrectangle"
19 raisedBorder 0
20 fill "#FFCC00"
21 outline "#000000"
22 ]
23 LabelGraphics
24 [
25 ]
26 LabelGraphics
27 [
28 text "label1"
29 fontSize 12
30 fontName "Dialog"
31 anchor "c"
32 ]
33 ]
34 node
35 [
36 id 1
37 label ""
38 graphics
39 [
40 x 876.0
41 y 238.0
42 w 30.0
43 h 30.0
44 type "roundrectangle"
45 raisedBorder 0
46 fill "#FFCC00"
47 outline "#000000"
48 ]
49 LabelGraphics
50 [
51 ]
52 ]
53 edge
54 [
55 source 0
56 target 1
57 graphics
58 [
59 fill "#000000"
60 targetArrow "standard"
61 ]
62 LabelGraphics
63 [
64 text "name"
65 fontSize 12
66 fontName "Dialog"
67 configuration "AutoFlippingLabel"
68 model "six_pos"
69 position "tail"
70 ]
71 LabelGraphics
72 [
73 text "m1"
74 fontSize 12
75 fontName "Dialog"
76 configuration "AutoFlippingLabel"
77 model "six_pos"
78 position "stail"
79 ]
80 LabelGraphics
81 [
82 text "m2"
83 fontSize 12
84 fontName "Dialog"
85 configuration "AutoFlippingLabel"
86 model "six_pos"
87 position "ttail"
88 ]
89 ]
90]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.properties b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.properties
new file mode 100644
index 00000000..3f37fcde
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.properties
@@ -0,0 +1,4 @@
1#
2
3pluginName = Metrics
4providerName = www.example.org
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.xml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.xml
new file mode 100644
index 00000000..08f6a86b
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/plugin.xml
@@ -0,0 +1,25 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<?eclipse version="3.0"?>
3
4<!--
5-->
6
7<plugin>
8
9 <extension point="org.eclipse.emf.ecore.generated_package">
10 <!-- @generated linkedList -->
11 <package
12 uri="llmm"
13 class="linkedList.LinkedListPackage"
14 genModel="resources/linkedList.genmodel"/>
15 </extension>
16
17 <extension point="org.eclipse.emf.ecore.generated_package">
18 <!-- @generated simpleStatechart -->
19 <package
20 uri="simpleSC"
21 class="simpleStatechart.SimpleStatechartPackage"
22 genModel="resources/simpleStatechart.genmodel"/>
23 </extension>
24
25</plugin>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/cycle.xmi b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/cycle.xmi
new file mode 100644
index 00000000..685a2b66
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/cycle.xmi
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<LLMM:Element
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:LLMM="llmm"
7 xsi:schemaLocation="llmm linkedList.ecore">
8 <next>
9 <value/>
10 <next>
11 <value/>
12 <next>
13 <value/>
14 <next>
15 <value/>
16 <next/>
17 </next>
18 </next>
19 </next>
20 </next>
21</LLMM:Element>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.aird b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.aird
new file mode 100644
index 00000000..562f5dd4
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.aird
@@ -0,0 +1,201 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_nRAGMHipEem197kvRbawTQ" selectedViews="_nqgLUHipEem197kvRbawTQ _nqs_oHipEem197kvRbawTQ _nqvb4HipEem197kvRbawTQ _nq2JkHipEem197kvRbawTQ" version="14.1.0.201810161215">
4 <semanticResources>linkedList.ecore</semanticResources>
5 <ownedViews xmi:type="viewpoint:DView" uid="_nqgLUHipEem197kvRbawTQ">
6 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
7 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_om3s8HipEem197kvRbawTQ" name="linkedList class diagram" repPath="#_olU00HipEem197kvRbawTQ">
8 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
9 <target xmi:type="ecore:EPackage" href="linkedList.ecore#/"/>
10 </ownedRepresentationDescriptors>
11 </ownedViews>
12 <ownedViews xmi:type="viewpoint:DView" uid="_nqs_oHipEem197kvRbawTQ">
13 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
14 </ownedViews>
15 <ownedViews xmi:type="viewpoint:DView" uid="_nqvb4HipEem197kvRbawTQ">
16 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
17 </ownedViews>
18 <ownedViews xmi:type="viewpoint:DView" uid="_nq2JkHipEem197kvRbawTQ">
19 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
20 </ownedViews>
21 </viewpoint:DAnalysis>
22 <diagram:DSemanticDiagram uid="_olU00HipEem197kvRbawTQ" name="linkedList class diagram">
23 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_omw_QHipEem197kvRbawTQ" source="DANNOTATION_CUSTOMIZATION_KEY">
24 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_omxmUHipEem197kvRbawTQ">
25 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_xGuOIHipEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan">
26 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
27 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_xGuOIXipEem197kvRbawTQ" showIcon="false" labelExpression="service:render">
28 <labelFormat>bold</labelFormat>
29 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
30 </centerLabelStyleDescription>
31 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_xGuOInipEem197kvRbawTQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
32 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
33 </endLabelStyleDescription>
34 </computedStyleDescriptions>
35 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_yGfCAHipEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan">
36 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
37 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_yGfCAXipEem197kvRbawTQ" showIcon="false" labelExpression="service:render">
38 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
39 </centerLabelStyleDescription>
40 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_yGfCAnipEem197kvRbawTQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
41 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
42 </endLabelStyleDescription>
43 </computedStyleDescriptions>
44 </data>
45 </ownedAnnotationEntries>
46 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_onn64HipEem197kvRbawTQ" source="GMF_DIAGRAMS">
47 <data xmi:type="notation:Diagram" xmi:id="_onoh8HipEem197kvRbawTQ" type="Sirius" element="_olU00HipEem197kvRbawTQ" measurementUnit="Pixel">
48 <children xmi:type="notation:Node" xmi:id="_pZAUgHipEem197kvRbawTQ" type="2003" element="_pYtZkHipEem197kvRbawTQ">
49 <children xmi:type="notation:Node" xmi:id="_pZBioHipEem197kvRbawTQ" type="5007"/>
50 <children xmi:type="notation:Node" xmi:id="_pZD-4HipEem197kvRbawTQ" type="7004">
51 <styles xmi:type="notation:SortingStyle" xmi:id="_pZD-4XipEem197kvRbawTQ"/>
52 <styles xmi:type="notation:FilteringStyle" xmi:id="_pZD-4nipEem197kvRbawTQ"/>
53 </children>
54 <styles xmi:type="notation:ShapeStyle" xmi:id="_pZAUgXipEem197kvRbawTQ" fontName="Segoe UI" fontHeight="8"/>
55 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pZAUgnipEem197kvRbawTQ" x="300" y="84"/>
56 </children>
57 <children xmi:type="notation:Node" xmi:id="_pZEl8HipEem197kvRbawTQ" type="2003" element="_pY0uUHipEem197kvRbawTQ">
58 <children xmi:type="notation:Node" xmi:id="_pZEl83ipEem197kvRbawTQ" type="5007"/>
59 <children xmi:type="notation:Node" xmi:id="_pZEl9HipEem197kvRbawTQ" type="7004">
60 <styles xmi:type="notation:SortingStyle" xmi:id="_pZEl9XipEem197kvRbawTQ"/>
61 <styles xmi:type="notation:FilteringStyle" xmi:id="_pZEl9nipEem197kvRbawTQ"/>
62 </children>
63 <styles xmi:type="notation:ShapeStyle" xmi:id="_pZEl8XipEem197kvRbawTQ" fontName="Segoe UI" fontHeight="8"/>
64 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pZEl8nipEem197kvRbawTQ" x="300" y="276"/>
65 </children>
66 <children xmi:type="notation:Node" xmi:id="_pZFNAHipEem197kvRbawTQ" type="2003" element="_pY18cHipEem197kvRbawTQ">
67 <children xmi:type="notation:Node" xmi:id="_pZFNA3ipEem197kvRbawTQ" type="5007"/>
68 <children xmi:type="notation:Node" xmi:id="_pZFNBHipEem197kvRbawTQ" type="7004">
69 <styles xmi:type="notation:SortingStyle" xmi:id="_pZFNBXipEem197kvRbawTQ"/>
70 <styles xmi:type="notation:FilteringStyle" xmi:id="_pZFNBnipEem197kvRbawTQ"/>
71 </children>
72 <styles xmi:type="notation:ShapeStyle" xmi:id="_pZFNAXipEem197kvRbawTQ" fontName="Segoe UI" fontHeight="8"/>
73 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pZFNAnipEem197kvRbawTQ" x="576" y="276"/>
74 </children>
75 <styles xmi:type="notation:DiagramStyle" xmi:id="_onoh8XipEem197kvRbawTQ"/>
76 <edges xmi:type="notation:Edge" xmi:id="_q1Ep4HipEem197kvRbawTQ" type="4001" element="_q00yQHipEem197kvRbawTQ" source="_pZAUgHipEem197kvRbawTQ" target="_pZEl8HipEem197kvRbawTQ">
77 <children xmi:type="notation:Node" xmi:id="_q1FQ8HipEem197kvRbawTQ" type="6001">
78 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q1FQ8XipEem197kvRbawTQ" x="29" y="-35"/>
79 </children>
80 <children xmi:type="notation:Node" xmi:id="_q1F4AHipEem197kvRbawTQ" type="6002">
81 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q1F4AXipEem197kvRbawTQ" y="-10"/>
82 </children>
83 <children xmi:type="notation:Node" xmi:id="_q1GfEHipEem197kvRbawTQ" type="6003">
84 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q1GfEXipEem197kvRbawTQ" x="1" y="-10"/>
85 </children>
86 <styles xmi:type="notation:ConnectorStyle" xmi:id="_q1Ep4XipEem197kvRbawTQ" routing="Rectilinear"/>
87 <styles xmi:type="notation:FontStyle" xmi:id="_q1Ep4nipEem197kvRbawTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
88 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q1Ep43ipEem197kvRbawTQ" points="[0, 0, 118, -192]$[-118, 0, 0, -192]"/>
89 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q1JiYHipEem197kvRbawTQ" id="(1.0,0.5)"/>
90 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q1KJcHipEem197kvRbawTQ" id="(0.0,0.5)"/>
91 </edges>
92 <edges xmi:type="notation:Edge" xmi:id="_ttIcIHipEem197kvRbawTQ" type="4001" element="_ttCVhnipEem197kvRbawTQ" source="_pZEl8HipEem197kvRbawTQ" target="_pZFNAHipEem197kvRbawTQ">
93 <children xmi:type="notation:Node" xmi:id="_ttIcJHipEem197kvRbawTQ" type="6001">
94 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ttIcJXipEem197kvRbawTQ" y="-10"/>
95 </children>
96 <children xmi:type="notation:Node" xmi:id="_ttIcJnipEem197kvRbawTQ" type="6002">
97 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ttIcJ3ipEem197kvRbawTQ" y="10"/>
98 </children>
99 <children xmi:type="notation:Node" xmi:id="_ttIcKHipEem197kvRbawTQ" type="6003">
100 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ttIcKXipEem197kvRbawTQ" y="10"/>
101 </children>
102 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ttIcIXipEem197kvRbawTQ" routing="Rectilinear"/>
103 <styles xmi:type="notation:FontStyle" xmi:id="_ttIcInipEem197kvRbawTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
104 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ttIcI3ipEem197kvRbawTQ" points="[0, 0, -158, 0]$[158, 0, 0, 0]"/>
105 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ttIcKnipEem197kvRbawTQ" id="(1.0,0.5)"/>
106 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ttIcK3ipEem197kvRbawTQ" id="(0.0,0.5)"/>
107 </edges>
108 <edges xmi:type="notation:Edge" xmi:id="_ynZWsHipEem197kvRbawTQ" type="4001" element="_ynSpBnipEem197kvRbawTQ" source="_pZEl8HipEem197kvRbawTQ" target="_pZEl8HipEem197kvRbawTQ">
109 <children xmi:type="notation:Node" xmi:id="_ynZWtHipEem197kvRbawTQ" type="6001">
110 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ynZWtXipEem197kvRbawTQ" x="26" y="26"/>
111 </children>
112 <children xmi:type="notation:Node" xmi:id="_ynZWtnipEem197kvRbawTQ" type="6002">
113 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ynZWt3ipEem197kvRbawTQ" x="-9" y="-4"/>
114 </children>
115 <children xmi:type="notation:Node" xmi:id="_ynZWuHipEem197kvRbawTQ" type="6003">
116 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ynZWuXipEem197kvRbawTQ" x="-15" y="-40"/>
117 </children>
118 <styles xmi:type="notation:ConnectorStyle" xmi:id="_ynZWsXipEem197kvRbawTQ" routing="Rectilinear"/>
119 <styles xmi:type="notation:FontStyle" xmi:id="_ynZWsnipEem197kvRbawTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
120 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ynZWs3ipEem197kvRbawTQ" points="[-118, 13, 0, 1]$[-142, 13, -24, 1]$[-142, 100, -24, 88]$[-29, 100, 89, 88]$[-29, 38, 89, 26]"/>
121 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ynZWunipEem197kvRbawTQ" id="(1.0,0.6122448979591837)"/>
122 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ynZWu3ipEem197kvRbawTQ" id="(0.0,0.7346938775510204)"/>
123 </edges>
124 </data>
125 </ownedAnnotationEntries>
126 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_pYtZkHipEem197kvRbawTQ" name="List" tooltipText="" outgoingEdges="_q00yQHipEem197kvRbawTQ" width="12" height="10">
127 <target xmi:type="ecore:EClass" href="linkedList.ecore#//List"/>
128 <semanticElements xmi:type="ecore:EClass" href="linkedList.ecore#//List"/>
129 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
130 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
131 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
132 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_pYxrAHipEem197kvRbawTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
133 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
134 </ownedStyle>
135 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
136 </ownedDiagramElements>
137 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_pY0uUHipEem197kvRbawTQ" name="Element" tooltipText="" outgoingEdges="_ttCVhnipEem197kvRbawTQ _ynSpBnipEem197kvRbawTQ" incomingEdges="_q00yQHipEem197kvRbawTQ _ynSpBnipEem197kvRbawTQ" width="12" height="10">
138 <target xmi:type="ecore:EClass" href="linkedList.ecore#//Element"/>
139 <semanticElements xmi:type="ecore:EClass" href="linkedList.ecore#//Element"/>
140 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
141 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
142 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
143 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_pY1VYHipEem197kvRbawTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
144 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
145 </ownedStyle>
146 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
147 </ownedDiagramElements>
148 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_pY18cHipEem197kvRbawTQ" name="Object" tooltipText="" incomingEdges="_ttCVhnipEem197kvRbawTQ" width="12" height="10">
149 <target xmi:type="ecore:EClass" href="linkedList.ecore#//Object"/>
150 <semanticElements xmi:type="ecore:EClass" href="linkedList.ecore#//Object"/>
151 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
152 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
153 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
154 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_pY18cXipEem197kvRbawTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
155 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
156 </ownedStyle>
157 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
158 </ownedDiagramElements>
159 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_q00yQHipEem197kvRbawTQ" name="[0..1] first" sourceNode="_pYtZkHipEem197kvRbawTQ" targetNode="_pY0uUHipEem197kvRbawTQ">
160 <target xmi:type="ecore:EReference" href="linkedList.ecore#//List/first"/>
161 <semanticElements xmi:type="ecore:EReference" href="linkedList.ecore#//List/first"/>
162 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_yGfCA3ipEem197kvRbawTQ" description="_yGfCAHipEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
163 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_yGfCBXipEem197kvRbawTQ" showIcon="false"/>
164 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_yGfCBHipEem197kvRbawTQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
165 </ownedStyle>
166 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
167 </ownedDiagramElements>
168 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ttCVhnipEem197kvRbawTQ" name="[1..1] value" sourceNode="_pY0uUHipEem197kvRbawTQ" targetNode="_pY18cHipEem197kvRbawTQ">
169 <target xmi:type="ecore:EReference" href="linkedList.ecore#//Element/value"/>
170 <semanticElements xmi:type="ecore:EReference" href="linkedList.ecore#//Element/value"/>
171 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_xGuOI3ipEem197kvRbawTQ" description="_xGuOIHipEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
172 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_xGuOJXipEem197kvRbawTQ" showIcon="false">
173 <labelFormat>bold</labelFormat>
174 </centerLabelStyle>
175 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_xGuOJHipEem197kvRbawTQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
176 </ownedStyle>
177 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
178 </ownedDiagramElements>
179 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ynSpBnipEem197kvRbawTQ" name="[0..1] next" sourceNode="_pY0uUHipEem197kvRbawTQ" targetNode="_pY0uUHipEem197kvRbawTQ">
180 <target xmi:type="ecore:EReference" href="linkedList.ecore#//Element/next"/>
181 <semanticElements xmi:type="ecore:EReference" href="linkedList.ecore#//Element/next"/>
182 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ynTQEHipEem197kvRbawTQ" routingStyle="manhattan" strokeColor="0,0,0">
183 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
184 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ynTQEnipEem197kvRbawTQ" showIcon="false">
185 <customFeatures>labelSize</customFeatures>
186 </centerLabelStyle>
187 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_ynTQEXipEem197kvRbawTQ" showIcon="false" labelColor="39,76,114">
188 <customFeatures>labelSize</customFeatures>
189 </endLabelStyle>
190 </ownedStyle>
191 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
192 </ownedDiagramElements>
193 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
194 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_olxgwHipEem197kvRbawTQ"/>
195 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
196 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
197 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
198 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
199 <target xmi:type="ecore:EPackage" href="linkedList.ecore#/"/>
200 </diagram:DSemanticDiagram>
201</xmi:XMI>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.ecore b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.ecore
new file mode 100644
index 00000000..e6389614
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.ecore
@@ -0,0 +1,15 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="linkedList" nsURI="llmm" nsPrefix="LLMM">
4 <eClassifiers xsi:type="ecore:EClass" name="List">
5 <eStructuralFeatures xsi:type="ecore:EReference" name="first" eType="#//Element"
6 containment="true"/>
7 </eClassifiers>
8 <eClassifiers xsi:type="ecore:EClass" name="Element">
9 <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1" eType="#//Object"
10 containment="true"/>
11 <eStructuralFeatures xsi:type="ecore:EReference" name="next" eType="#//Element"
12 containment="true"/>
13 </eClassifiers>
14 <eClassifiers xsi:type="ecore:EClass" name="Object"/>
15</ecore:EPackage>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.genmodel b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.genmodel
new file mode 100644
index 00000000..51fffd52
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/linkedList.genmodel
@@ -0,0 +1,18 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
3 xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/ca.mcgill.ecse.dslreasoner.realistic.metrics/src"
4 modelPluginID="ca.mcgill.ecse.dslreasoner.realistic.metrics" modelName="LinkedList"
5 rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
6 complianceLevel="8.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
7 <foreignModel>linkedList.ecore</foreignModel>
8 <genPackages prefix="LinkedList" disposableProviderFactory="true" ecorePackage="linkedList.ecore#/">
9 <genClasses ecoreClass="linkedList.ecore#//List">
10 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference linkedList.ecore#//List/first"/>
11 </genClasses>
12 <genClasses ecoreClass="linkedList.ecore#//Element">
13 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference linkedList.ecore#//Element/value"/>
14 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference linkedList.ecore#//Element/next"/>
15 </genClasses>
16 <genClasses ecoreClass="linkedList.ecore#//Object"/>
17 </genPackages>
18</genmodel:GenModel>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/realisticModel.xmi b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/realisticModel.xmi
new file mode 100644
index 00000000..534191a3
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/realisticModel.xmi
@@ -0,0 +1,48 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<hu.bme.mit.inf.yakindumm:Statechart
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:hu.bme.mit.inf.yakindumm="hu.bme.mit.inf.yakindumm"
7 xsi:schemaLocation="hu.bme.mit.inf.yakindumm ../../hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/model/yakindu_simplified.ecore">
8 <regions>
9 <vertices
10 xsi:type="hu.bme.mit.inf.yakindumm:Entry">
11 <outgoingTransitions
12 target="//@regions.0/@vertices.1"/>
13 </vertices>
14 <vertices
15 xsi:type="hu.bme.mit.inf.yakindumm:State"
16 incomingTransitions="//@regions.0/@vertices.0/@outgoingTransitions.0 //@regions.0/@vertices.2/@outgoingTransitions.0 //@regions.0/@vertices.4/@outgoingTransitions.0">
17 <outgoingTransitions
18 target="//@regions.0/@vertices.2"/>
19 </vertices>
20 <vertices
21 xsi:type="hu.bme.mit.inf.yakindumm:State"
22 incomingTransitions="//@regions.0/@vertices.1/@outgoingTransitions.0 //@regions.0/@vertices.3/@outgoingTransitions.0">
23 <outgoingTransitions
24 target="//@regions.0/@vertices.1"/>
25 <outgoingTransitions
26 target="//@regions.0/@vertices.3"/>
27 <outgoingTransitions
28 target="//@regions.0/@vertices.4"/>
29 <outgoingTransitions
30 target="//@regions.0/@vertices.5"/>
31 </vertices>
32 <vertices
33 xsi:type="hu.bme.mit.inf.yakindumm:State"
34 incomingTransitions="//@regions.0/@vertices.2/@outgoingTransitions.1">
35 <outgoingTransitions
36 target="//@regions.0/@vertices.2"/>
37 </vertices>
38 <vertices
39 xsi:type="hu.bme.mit.inf.yakindumm:State"
40 incomingTransitions="//@regions.0/@vertices.2/@outgoingTransitions.2">
41 <outgoingTransitions
42 target="//@regions.0/@vertices.1"/>
43 </vertices>
44 <vertices
45 xsi:type="hu.bme.mit.inf.yakindumm:State"
46 incomingTransitions="//@regions.0/@vertices.2/@outgoingTransitions.3"/>
47 </regions>
48</hu.bme.mit.inf.yakindumm:Statechart>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleLL.xmi b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleLL.xmi
new file mode 100644
index 00000000..34f34682
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleLL.xmi
@@ -0,0 +1,19 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<LLMM:List xmi:version="2.0"
3 xmlns:xmi="http://www.omg.org/XMI"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xmlns:LLMM="llmm"
6 xsi:schemaLocation="llmm linkedList.ecore">
7 <first>
8 <value/>
9 <next>
10 <value/>
11 <next>
12 <value/>
13 <next>
14 <value/>
15 </next>
16 </next>
17 </next>
18 </first>
19</LLMM:List>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCIrrealistic.xmi b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCIrrealistic.xmi
new file mode 100644
index 00000000..c34857c9
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCIrrealistic.xmi
@@ -0,0 +1,14 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<simpleSC:Statechart
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:simpleSC="simpleSC"
7 xsi:schemaLocation="simpleSC simpleStatechart.ecore">
8 <state next="//@state.1"/>
9 <state next="//@state.2"/>
10 <state next="//@state.3"/>
11 <state next="//@state.4"/>
12 <state next="//@state.0"/>
13 <entry entry="//@state.0"/>
14</simpleSC:Statechart>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCRealistic.xmi b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCRealistic.xmi
new file mode 100644
index 00000000..131e4482
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleSCRealistic.xmi
@@ -0,0 +1,14 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<simpleSC:Statechart
3 xmi:version="2.0"
4 xmlns:xmi="http://www.omg.org/XMI"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xmlns:simpleSC="simpleSC"
7 xsi:schemaLocation="simpleSC simpleStatechart.ecore">
8 <state next="//@state.1"/>
9 <state next="//@state.0 //@state.2 //@state.3 //@state.4"/>
10 <state next="//@state.1"/>
11 <state/>
12 <state next="//@state.0"/>
13 <entry entry="//@state.0"/>
14</simpleSC:Statechart>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.aird b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.aird
new file mode 100644
index 00000000..3a8ce88a
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.aird
@@ -0,0 +1,231 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
3 <viewpoint:DAnalysis uid="_ZjRvYHrBEem197kvRbawTQ" selectedViews="_Zk1OkHrBEem197kvRbawTQ _Zk9xcHrBEem197kvRbawTQ _Zk_moHrBEem197kvRbawTQ _ZlD4EHrBEem197kvRbawTQ" version="14.1.0.201810161215">
4 <semanticResources>simpleStatechart.ecore</semanticResources>
5 <ownedViews xmi:type="viewpoint:DView" uid="_Zk1OkHrBEem197kvRbawTQ">
6 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
7 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_n89KsHrBEem197kvRbawTQ" name="simpleStatechart class diagram" repPath="#_n8118HrBEem197kvRbawTQ">
8 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
9 <target xmi:type="ecore:EPackage" href="simpleStatechart.ecore#/"/>
10 </ownedRepresentationDescriptors>
11 </ownedViews>
12 <ownedViews xmi:type="viewpoint:DView" uid="_Zk9xcHrBEem197kvRbawTQ">
13 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
14 </ownedViews>
15 <ownedViews xmi:type="viewpoint:DView" uid="_Zk_moHrBEem197kvRbawTQ">
16 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
17 </ownedViews>
18 <ownedViews xmi:type="viewpoint:DView" uid="_ZlD4EHrBEem197kvRbawTQ">
19 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
20 </ownedViews>
21 </viewpoint:DAnalysis>
22 <diagram:DSemanticDiagram uid="_n8118HrBEem197kvRbawTQ" name="simpleStatechart class diagram">
23 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_n88joHrBEem197kvRbawTQ" source="DANNOTATION_CUSTOMIZATION_KEY">
24 <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_n88joXrBEem197kvRbawTQ">
25 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_xDw-MHrBEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan">
26 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
27 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_xDw-MXrBEem197kvRbawTQ" showIcon="false" labelExpression="service:render">
28 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
29 </centerLabelStyleDescription>
30 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_xDw-MnrBEem197kvRbawTQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
31 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
32 </endLabelStyleDescription>
33 </computedStyleDescriptions>
34 <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_22LoxnrBEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan">
35 <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
36 <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_22Lox3rBEem197kvRbawTQ" showIcon="false" labelExpression="service:render">
37 <labelFormat>bold</labelFormat>
38 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
39 </centerLabelStyleDescription>
40 <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_22LoyHrBEem197kvRbawTQ" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
41 <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
42 </endLabelStyleDescription>
43 </computedStyleDescriptions>
44 </data>
45 </ownedAnnotationEntries>
46 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_n89xwHrBEem197kvRbawTQ" source="GMF_DIAGRAMS">
47 <data xmi:type="notation:Diagram" xmi:id="_n89xwXrBEem197kvRbawTQ" type="Sirius" element="_n8118HrBEem197kvRbawTQ" measurementUnit="Pixel">
48 <children xmi:type="notation:Node" xmi:id="_tT-SsHrBEem197kvRbawTQ" type="2003" element="_tT4MEHrBEem197kvRbawTQ">
49 <children xmi:type="notation:Node" xmi:id="_tT-Ss3rBEem197kvRbawTQ" type="5007"/>
50 <children xmi:type="notation:Node" xmi:id="_tT-5wHrBEem197kvRbawTQ" type="7004">
51 <styles xmi:type="notation:SortingStyle" xmi:id="_tT-5wXrBEem197kvRbawTQ"/>
52 <styles xmi:type="notation:FilteringStyle" xmi:id="_tT-5wnrBEem197kvRbawTQ"/>
53 </children>
54 <styles xmi:type="notation:ShapeStyle" xmi:id="_tT-SsXrBEem197kvRbawTQ" fontName="Segoe UI" fontHeight="8"/>
55 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tT-SsnrBEem197kvRbawTQ" x="216" y="336"/>
56 </children>
57 <children xmi:type="notation:Node" xmi:id="_tT-5w3rBEem197kvRbawTQ" type="2003" element="_tT6BQHrBEem197kvRbawTQ">
58 <children xmi:type="notation:Node" xmi:id="_tT-5xnrBEem197kvRbawTQ" type="5007"/>
59 <children xmi:type="notation:Node" xmi:id="_tT_g0HrBEem197kvRbawTQ" type="7004">
60 <styles xmi:type="notation:SortingStyle" xmi:id="_tT_g0XrBEem197kvRbawTQ"/>
61 <styles xmi:type="notation:FilteringStyle" xmi:id="_tT_g0nrBEem197kvRbawTQ"/>
62 </children>
63 <styles xmi:type="notation:ShapeStyle" xmi:id="_tT-5xHrBEem197kvRbawTQ" fontName="Segoe UI" fontHeight="8"/>
64 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tT-5xXrBEem197kvRbawTQ" x="708" y="324"/>
65 </children>
66 <children xmi:type="notation:Node" xmi:id="_tT_g03rBEem197kvRbawTQ" type="2003" element="_tT6BQ3rBEem197kvRbawTQ">
67 <children xmi:type="notation:Node" xmi:id="_tUAH4HrBEem197kvRbawTQ" type="5007"/>
68 <children xmi:type="notation:Node" xmi:id="_tUAH4XrBEem197kvRbawTQ" type="7004">
69 <styles xmi:type="notation:SortingStyle" xmi:id="_tUAH4nrBEem197kvRbawTQ"/>
70 <styles xmi:type="notation:FilteringStyle" xmi:id="_tUAH43rBEem197kvRbawTQ"/>
71 </children>
72 <styles xmi:type="notation:ShapeStyle" xmi:id="_tT_g1HrBEem197kvRbawTQ" fontName="Segoe UI" fontHeight="8"/>
73 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tT_g1XrBEem197kvRbawTQ" x="360" y="48"/>
74 </children>
75 <styles xmi:type="notation:DiagramStyle" xmi:id="_n89xwnrBEem197kvRbawTQ"/>
76 <edges xmi:type="notation:Edge" xmi:id="_wmDugHrBEem197kvRbawTQ" type="4001" element="_wl_dEHrBEem197kvRbawTQ" source="_tT_g03rBEem197kvRbawTQ" target="_tT-SsHrBEem197kvRbawTQ">
77 <children xmi:type="notation:Node" xmi:id="_wmDuhHrBEem197kvRbawTQ" type="6001">
78 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wmEVkHrBEem197kvRbawTQ" y="-10"/>
79 </children>
80 <children xmi:type="notation:Node" xmi:id="_wmEVkXrBEem197kvRbawTQ" type="6002">
81 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wmEVknrBEem197kvRbawTQ" y="10"/>
82 </children>
83 <children xmi:type="notation:Node" xmi:id="_wmEVk3rBEem197kvRbawTQ" type="6003">
84 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wmEVlHrBEem197kvRbawTQ" y="10"/>
85 </children>
86 <styles xmi:type="notation:ConnectorStyle" xmi:id="_wmDugXrBEem197kvRbawTQ" routing="Rectilinear"/>
87 <styles xmi:type="notation:FontStyle" xmi:id="_wmDugnrBEem197kvRbawTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
88 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wmDug3rBEem197kvRbawTQ" points="[0, 0, 131, -190]$[0, 95, 131, -95]$[-131, 95, 0, -95]$[-131, 190, 0, 0]"/>
89 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wmEVlXrBEem197kvRbawTQ" id="(0.5,1.0)"/>
90 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wmEVlnrBEem197kvRbawTQ" id="(0.6101694915254238,0.0)"/>
91 </edges>
92 <edges xmi:type="notation:Edge" xmi:id="_0D8xsHrBEem197kvRbawTQ" type="4001" element="_0D5HVnrBEem197kvRbawTQ" source="_tT_g03rBEem197kvRbawTQ" target="_tT-5w3rBEem197kvRbawTQ">
93 <children xmi:type="notation:Node" xmi:id="_0D8xtHrBEem197kvRbawTQ" type="6001">
94 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0D8xtXrBEem197kvRbawTQ" y="-10"/>
95 </children>
96 <children xmi:type="notation:Node" xmi:id="_0D8xtnrBEem197kvRbawTQ" type="6002">
97 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0D8xt3rBEem197kvRbawTQ" y="10"/>
98 </children>
99 <children xmi:type="notation:Node" xmi:id="_0D8xuHrBEem197kvRbawTQ" type="6003">
100 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0D8xuXrBEem197kvRbawTQ" y="10"/>
101 </children>
102 <styles xmi:type="notation:ConnectorStyle" xmi:id="_0D8xsXrBEem197kvRbawTQ" routing="Rectilinear"/>
103 <styles xmi:type="notation:FontStyle" xmi:id="_0D8xsnrBEem197kvRbawTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
104 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0D8xs3rBEem197kvRbawTQ" points="[0, 0, -302, -204]$[302, 0, 0, -204]$[302, 204, 0, 0]"/>
105 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0D8xunrBEem197kvRbawTQ" id="(1.0,0.7346938775510204)"/>
106 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0D8xu3rBEem197kvRbawTQ" id="(0.6101694915254238,0.0)"/>
107 </edges>
108 <edges xmi:type="notation:Edge" xmi:id="_3rYLcnrBEem197kvRbawTQ" type="4001" element="_3rVIEHrBEem197kvRbawTQ" source="_tT-SsHrBEem197kvRbawTQ" target="_tT-SsHrBEem197kvRbawTQ">
109 <children xmi:type="notation:Node" xmi:id="_3rZZgHrBEem197kvRbawTQ" type="6001">
110 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3rZZgXrBEem197kvRbawTQ" y="-10"/>
111 </children>
112 <children xmi:type="notation:Node" xmi:id="_3rZZgnrBEem197kvRbawTQ" type="6002">
113 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3rZZg3rBEem197kvRbawTQ" y="10"/>
114 </children>
115 <children xmi:type="notation:Node" xmi:id="_3rZZhHrBEem197kvRbawTQ" type="6003">
116 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3rZZhXrBEem197kvRbawTQ" y="10"/>
117 </children>
118 <styles xmi:type="notation:ConnectorStyle" xmi:id="_3rYLc3rBEem197kvRbawTQ" routing="Rectilinear"/>
119 <styles xmi:type="notation:FontStyle" xmi:id="_3rYLdHrBEem197kvRbawTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
120 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3rYLdXrBEem197kvRbawTQ" points="[0, 0, -11, 0]$[0, 0, -11, 0]"/>
121 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rZZhnrBEem197kvRbawTQ" id="(0.4067796610169492,0.0)"/>
122 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rZZh3rBEem197kvRbawTQ" id="(0.5,0.0)"/>
123 </edges>
124 <edges xmi:type="notation:Edge" xmi:id="_8y9JMHrBEem197kvRbawTQ" type="4001" element="_8y5e3HrBEem197kvRbawTQ" source="_tT-5w3rBEem197kvRbawTQ" target="_tT-SsHrBEem197kvRbawTQ">
125 <children xmi:type="notation:Node" xmi:id="_8y9JNHrBEem197kvRbawTQ" type="6001">
126 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8y9JNXrBEem197kvRbawTQ" y="-10"/>
127 </children>
128 <children xmi:type="notation:Node" xmi:id="_8y9JNnrBEem197kvRbawTQ" type="6002">
129 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8y9JN3rBEem197kvRbawTQ" y="10"/>
130 </children>
131 <children xmi:type="notation:Node" xmi:id="_8y9JOHrBEem197kvRbawTQ" type="6003">
132 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8y9wQHrBEem197kvRbawTQ" y="10"/>
133 </children>
134 <styles xmi:type="notation:ConnectorStyle" xmi:id="_8y9JMXrBEem197kvRbawTQ" routing="Rectilinear"/>
135 <styles xmi:type="notation:FontStyle" xmi:id="_8y9JMnrBEem197kvRbawTQ" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
136 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8y9JM3rBEem197kvRbawTQ" points="[0, 0, 374, -11]$[-187, 0, 187, -11]$[-187, 11, 187, 0]$[-374, 11, 0, 0]"/>
137 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8y9wQXrBEem197kvRbawTQ" id="(0.0,0.5)"/>
138 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8y9wQnrBEem197kvRbawTQ" id="(1.0,0.4897959183673469)"/>
139 </edges>
140 </data>
141 </ownedAnnotationEntries>
142 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_tT4MEHrBEem197kvRbawTQ" name="State" tooltipText="" outgoingEdges="_3rVIEHrBEem197kvRbawTQ" incomingEdges="_wl_dEHrBEem197kvRbawTQ _3rVIEHrBEem197kvRbawTQ _8y5e3HrBEem197kvRbawTQ" width="12" height="10">
143 <target xmi:type="ecore:EClass" href="simpleStatechart.ecore#//State"/>
144 <semanticElements xmi:type="ecore:EClass" href="simpleStatechart.ecore#//State"/>
145 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
146 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
147 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
148 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_tT5aMHrBEem197kvRbawTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
149 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
150 </ownedStyle>
151 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
152 </ownedDiagramElements>
153 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_tT6BQHrBEem197kvRbawTQ" name="Entry" tooltipText="" outgoingEdges="_8y5e3HrBEem197kvRbawTQ" incomingEdges="_0D5HVnrBEem197kvRbawTQ" width="12" height="10">
154 <target xmi:type="ecore:EClass" href="simpleStatechart.ecore#//Entry"/>
155 <semanticElements xmi:type="ecore:EClass" href="simpleStatechart.ecore#//Entry"/>
156 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
157 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
158 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
159 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_tT6BQXrBEem197kvRbawTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
160 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
161 </ownedStyle>
162 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
163 </ownedDiagramElements>
164 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_tT6BQ3rBEem197kvRbawTQ" name="Statechart" tooltipText="" outgoingEdges="_wl_dEHrBEem197kvRbawTQ _0D5HVnrBEem197kvRbawTQ" width="12" height="10">
165 <target xmi:type="ecore:EClass" href="simpleStatechart.ecore#//Statechart"/>
166 <semanticElements xmi:type="ecore:EClass" href="simpleStatechart.ecore#//Statechart"/>
167 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
168 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
169 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
170 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_tT6oUHrBEem197kvRbawTQ" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
171 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
172 </ownedStyle>
173 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
174 </ownedDiagramElements>
175 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_wl_dEHrBEem197kvRbawTQ" name="[0..*] state" sourceNode="_tT6BQ3rBEem197kvRbawTQ" targetNode="_tT4MEHrBEem197kvRbawTQ">
176 <target xmi:type="ecore:EReference" href="simpleStatechart.ecore#//Statechart/state"/>
177 <semanticElements xmi:type="ecore:EReference" href="simpleStatechart.ecore#//Statechart/state"/>
178 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_xDw-M3rBEem197kvRbawTQ" description="_xDw-MHrBEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
179 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_xDxlQXrBEem197kvRbawTQ" showIcon="false"/>
180 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_xDxlQHrBEem197kvRbawTQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
181 </ownedStyle>
182 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
183 </ownedDiagramElements>
184 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_0D5HVnrBEem197kvRbawTQ" name="[1..1] entry" sourceNode="_tT6BQ3rBEem197kvRbawTQ" targetNode="_tT6BQHrBEem197kvRbawTQ">
185 <target xmi:type="ecore:EReference" href="simpleStatechart.ecore#//Statechart/entry"/>
186 <semanticElements xmi:type="ecore:EReference" href="simpleStatechart.ecore#//Statechart/entry"/>
187 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_22LoyXrBEem197kvRbawTQ" description="_22LoxnrBEem197kvRbawTQ" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
188 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_22Loy3rBEem197kvRbawTQ" showIcon="false">
189 <labelFormat>bold</labelFormat>
190 </centerLabelStyle>
191 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_22LoynrBEem197kvRbawTQ" labelSize="6" showIcon="false" labelColor="39,76,114"/>
192 </ownedStyle>
193 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
194 </ownedDiagramElements>
195 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3rVIEHrBEem197kvRbawTQ" name="[0..*] next" sourceNode="_tT4MEHrBEem197kvRbawTQ" targetNode="_tT4MEHrBEem197kvRbawTQ">
196 <target xmi:type="ecore:EReference" href="simpleStatechart.ecore#//State/next"/>
197 <semanticElements xmi:type="ecore:EReference" href="simpleStatechart.ecore#//State/next"/>
198 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3rVIEXrBEem197kvRbawTQ" routingStyle="manhattan" strokeColor="0,0,0">
199 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
200 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3rVIE3rBEem197kvRbawTQ" showIcon="false">
201 <customFeatures>labelSize</customFeatures>
202 </centerLabelStyle>
203 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_3rVIEnrBEem197kvRbawTQ" showIcon="false" labelColor="39,76,114">
204 <customFeatures>labelSize</customFeatures>
205 </endLabelStyle>
206 </ownedStyle>
207 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
208 </ownedDiagramElements>
209 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_8y5e3HrBEem197kvRbawTQ" name="[0..1] entry" sourceNode="_tT6BQHrBEem197kvRbawTQ" targetNode="_tT4MEHrBEem197kvRbawTQ">
210 <target xmi:type="ecore:EReference" href="simpleStatechart.ecore#//Entry/entry"/>
211 <semanticElements xmi:type="ecore:EReference" href="simpleStatechart.ecore#//Entry/entry"/>
212 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_8y5e3XrBEem197kvRbawTQ" routingStyle="manhattan" strokeColor="0,0,0">
213 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
214 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_8y5e33rBEem197kvRbawTQ" showIcon="false">
215 <customFeatures>labelSize</customFeatures>
216 </centerLabelStyle>
217 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_8y5e3nrBEem197kvRbawTQ" showIcon="false" labelColor="39,76,114">
218 <customFeatures>labelSize</customFeatures>
219 </endLabelStyle>
220 </ownedStyle>
221 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
222 </ownedDiagramElements>
223 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
224 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_n84SMHrBEem197kvRbawTQ"/>
225 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
226 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
227 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
228 <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
229 <target xmi:type="ecore:EPackage" href="simpleStatechart.ecore#/"/>
230 </diagram:DSemanticDiagram>
231</xmi:XMI>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.ecore b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.ecore
new file mode 100644
index 00000000..a5df7904
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.ecore
@@ -0,0 +1,16 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="simpleStatechart" nsURI="simpleSC" nsPrefix="simpleSC">
4 <eClassifiers xsi:type="ecore:EClass" name="State">
5 <eStructuralFeatures xsi:type="ecore:EReference" name="next" upperBound="-1" eType="#//State"/>
6 </eClassifiers>
7 <eClassifiers xsi:type="ecore:EClass" name="Entry">
8 <eStructuralFeatures xsi:type="ecore:EReference" name="entry" eType="#//State"/>
9 </eClassifiers>
10 <eClassifiers xsi:type="ecore:EClass" name="Statechart">
11 <eStructuralFeatures xsi:type="ecore:EReference" name="state" upperBound="-1"
12 eType="#//State" containment="true"/>
13 <eStructuralFeatures xsi:type="ecore:EReference" name="entry" lowerBound="1" eType="#//Entry"
14 containment="true"/>
15 </eClassifiers>
16</ecore:EPackage>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.genmodel b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.genmodel
new file mode 100644
index 00000000..fc751c8e
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/resources/simpleStatechart.genmodel
@@ -0,0 +1,20 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
3 xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/ca.mcgill.ecse.dslreasoner.realistic.metrics/src"
4 modelPluginID="ca.mcgill.ecse.dslreasoner.realistic.metrics" modelName="SimpleStatechart"
5 rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
6 complianceLevel="8.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
7 <foreignModel>simpleStatechart.ecore</foreignModel>
8 <genPackages prefix="SimpleStatechart" disposableProviderFactory="true" ecorePackage="simpleStatechart.ecore#/">
9 <genClasses ecoreClass="simpleStatechart.ecore#//State">
10 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference simpleStatechart.ecore#//State/next"/>
11 </genClasses>
12 <genClasses ecoreClass="simpleStatechart.ecore#//Entry">
13 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference simpleStatechart.ecore#//Entry/entry"/>
14 </genClasses>
15 <genClasses ecoreClass="simpleStatechart.ecore#//Statechart">
16 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference simpleStatechart.ecore#//Statechart/state"/>
17 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference simpleStatechart.ecore#//Statechart/entry"/>
18 </genClasses>
19 </genPackages>
20</genmodel:GenModel>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.gml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.gml
new file mode 100644
index 00000000..1014385b
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.gml
@@ -0,0 +1,121 @@
1Creator "yFiles"
2Version "2.16"
3graph
4[
5 hierarchic 1
6 label ""
7 directed 1
8 node
9 [
10 id 0
11 label "Statechart"
12 graphics
13 [
14 x 313.5
15 y 225.0
16 w 81.0
17 h 32.0
18 type "roundrectangle"
19 raisedBorder 0
20 fill "#FFCC00"
21 outline "#000000"
22 ]
23 LabelGraphics
24 [
25 text "Statechart"
26 fontSize 12
27 fontName "Dialog"
28 anchor "c"
29 ]
30 ]
31 node
32 [
33 id 1
34 label "Region0"
35 graphics
36 [
37 x -31.5
38 y 207.5
39 w 55.5
40 h 32.0
41 type "roundrectangle"
42 raisedBorder 0
43 fill "#FFCC00"
44 outline "#000000"
45 ]
46 LabelGraphics
47 [
48 text "Region0"
49 fontSize 12
50 fontName "Dialog"
51 anchor "c"
52 ]
53 ]
54 node
55 [
56 id 2
57 label "Region0"
58 graphics
59 [
60 x 313.5
61 y 440.0
62 w 55.5
63 h 32.0
64 type "roundrectangle"
65 raisedBorder 0
66 fill "#FFCC00"
67 outline "#000000"
68 ]
69 LabelGraphics
70 [
71 text "Region0"
72 fontSize 12
73 fontName "Dialog"
74 anchor "c"
75 ]
76 ]
77 edge
78 [
79 source 1
80 target 0
81 label "RefName"
82 graphics
83 [
84 fill "#000000"
85 targetArrow "standard"
86 ]
87 LabelGraphics
88 [
89 text "RefName"
90 fontSize 12
91 fontName "Dialog"
92 configuration "AutoFlippingLabel"
93 contentWidth 54.68359375
94 contentHeight 18.701171875
95 model "six_pos"
96 position "head"
97 ]
98 LabelGraphics
99 [
100 text "[2,3]"
101 fontSize 12
102 fontName "Dialog"
103 configuration "AutoFlippingLabel"
104 contentWidth 27.349609375
105 contentHeight 18.701171875
106 model "six_pos"
107 position "ttail"
108 ]
109 LabelGraphics
110 [
111 text "[0,1]"
112 fontSize 12
113 fontName "Dialog"
114 configuration "AutoFlippingLabel"
115 contentWidth 27.349609375
116 contentHeight 18.701171875
117 model "six_pos"
118 position "stail"
119 ]
120 ]
121]
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.graphml b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.graphml
new file mode 100644
index 00000000..c596324b
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/samples/simple1.graphml
@@ -0,0 +1,69 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
3 <!--Created by yEd 3.19-->
4 <key for="port" id="d0" yfiles.type="portgraphics"/>
5 <key for="port" id="d1" yfiles.type="portgeometry"/>
6 <key for="port" id="d2" yfiles.type="portuserdata"/>
7 <key attr.name="url" attr.type="string" for="node" id="d3"/>
8 <key attr.name="description" attr.type="string" for="node" id="d4"/>
9 <key for="node" id="d5" yfiles.type="nodegraphics"/>
10 <key for="graphml" id="d6" yfiles.type="resources"/>
11 <key attr.name="url" attr.type="string" for="edge" id="d7"/>
12 <key attr.name="description" attr.type="string" for="edge" id="d8"/>
13 <key for="edge" id="d9" yfiles.type="edgegraphics"/>
14 <graph edgedefault="directed" id="G">
15 <node id="n0">
16 <data key="d4"/>
17 <data key="d5">
18 <y:ShapeNode>
19 <y:Geometry height="32.0" width="81.0" x="273.0" y="209.0"/>
20 <y:Fill color="#FFCC00" transparent="false"/>
21 <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
22 <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="c" textColor="#000000" verticalTextPosition="bottom" visible="true" width="58.697265625" x="11.1513671875" xml:space="preserve" y="6.6494140625">Statechart</y:NodeLabel>
23 <y:Shape type="roundrectangle"/>
24 </y:ShapeNode>
25 </data>
26 </node>
27 <node id="n1">
28 <data key="d4"/>
29 <data key="d5">
30 <y:ShapeNode>
31 <y:Geometry height="32.0" width="55.5" x="57.75" y="209.0"/>
32 <y:Fill color="#FFCC00" transparent="false"/>
33 <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
34 <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="c" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.701171875" x="3.3994140625" xml:space="preserve" y="6.6494140625">Region0</y:NodeLabel>
35 <y:Shape type="roundrectangle"/>
36 </y:ShapeNode>
37 </data>
38 </node>
39 <node id="n2">
40 <data key="d4"/>
41 <data key="d5">
42 <y:ShapeNode>
43 <y:Geometry height="32.0" width="55.5" x="285.75" y="424.0"/>
44 <y:Fill color="#FFCC00" transparent="false"/>
45 <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
46 <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="c" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.701171875" x="3.3994140625" xml:space="preserve" y="6.6494140625">Region0</y:NodeLabel>
47 <y:Shape type="roundrectangle"/>
48 </y:ShapeNode>
49 </data>
50 </node>
51 <edge id="e0" source="n1" target="n0">
52 <data key="d8"/>
53 <data key="d9">
54 <y:PolyLineEdge>
55 <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
56 <y:LineStyle color="#000000" type="line" width="1.0"/>
57 <y:Arrows source="none" target="standard"/>
58 <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="six_pos" modelPosition="head" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="54.68359375" x="52.53466796875" xml:space="preserve" y="-20.701171875">RefName<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel>
59 <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="six_pos" modelPosition="stail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="27.349609375" x="10.12646484375" xml:space="preserve" y="2.0">[2,3]<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel>
60 <y:EdgeLabel alignment="center" configuration="AutoFlippingLabel" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.701171875" horizontalTextPosition="center" iconTextGap="4" modelName="six_pos" modelPosition="ttail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" verticalTextPosition="bottom" visible="true" width="27.349609375" x="122.27685546875" xml:space="preserve" y="2.0">[0,1]<y:PreferredPlacementDescriptor angle="0.0" angleOffsetOnRightSide="0" angleReference="absolute" angleRotationOnRightSide="co" distance="-1.0" frozen="true" placement="anywhere" side="anywhere" sideReference="relative_to_edge_flow"/></y:EdgeLabel>
61 <y:BendStyle smoothed="false"/>
62 </y:PolyLineEdge>
63 </data>
64 </edge>
65 </graph>
66 <data key="d6">
67 <y:Resources/>
68 </data>
69</graphml>
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend
new file mode 100644
index 00000000..44aad755
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.xtend
@@ -0,0 +1,80 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.examples
2
3import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage
4import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic
5import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration
6import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor
7import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation
8import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml
10import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace
11import java.util.Collections
12import org.eclipse.emf.ecore.EClass
13import org.eclipse.emf.ecore.EEnum
14import org.eclipse.emf.ecore.EObject
15import org.eclipse.emf.ecore.resource.Resource
16import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
17import org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine
18import java.io.PrintWriter
19import linkedList.LinkedListPackage
20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.Neighbourhood2Gml
21import simpleStatechart.SimpleStatechartPackage
22
23class CSERposterSample {
24 static val partialInterpretation2Logic = new InstanceModel2PartialInterpretation
25 static val neighbourhoodComputer = new PartialInterpretation2ImmutableTypeLattice
26 static val Ecore2Logic ecore2Logic = new Ecore2Logic
27 static val partialVisualizer = new PartialInterpretation2Gml
28 static val neighbourhoodVisualizer = new Neighbourhood2Gml
29 static val depth = 1
30 static val REALISTIC = "simpleSCRealistic"
31 static val IRREALISTIC = "simpleSCIrrealistic"
32
33 def static void main(String[] args) {
34 Resource.Factory.Registry.INSTANCE.extensionToFactoryMap.put("*", new XMIResourceFactoryImpl)
35 YakindummPackage.eINSTANCE.eClass
36 LinkedListPackage.eINSTANCE.eClass
37 SimpleStatechartPackage.eINSTANCE.eClass
38 ReteEngine.getClass
39
40 val outputs = "outputs"
41 val instModName = REALISTIC
42 val workspace = new FileSystemWorkspace('''resources''', "")
43 val model = workspace.readModel(EObject, instModName+".xmi")
44
45 val pckg = model.eClass.EPackage
46 val metamodel = new EcoreMetamodelDescriptor(
47 pckg.EClassifiers.filter(EClass).toList,
48 Collections::emptySet,
49 false,
50 pckg.EClassifiers.filter(EEnum).toList,
51 pckg.EClassifiers.filter(EEnum).map[ELiterals].flatten.toList,
52 pckg.EClassifiers.filter(EClass).map[EReferences].flatten.toList,
53 pckg.EClassifiers.filter(EClass).map[EAttributes].flatten.toList
54 )
55 val metamodelTransformationOutput = ecore2Logic.transformMetamodel(metamodel, new Ecore2LogicConfiguration)
56
57 val partialModelOutput = partialInterpretation2Logic.transform(metamodelTransformationOutput, model.eResource, false)
58
59 val writer = new PrintWriter(outputs+"//"+instModName+"MODEL.gml")
60
61 writer.print(partialVisualizer.transform(partialModelOutput))
62
63 writer.close
64
65 val hood = neighbourhoodComputer.createRepresentation(partialModelOutput, depth, Integer.MAX_VALUE, Integer.MAX_VALUE)
66
67 val w2 = new PrintWriter(outputs+"/"+instModName+depth+"NEIGHBOURHOOD.gml")
68
69 w2.print(neighbourhoodVisualizer.transform(hood, partialModelOutput))
70
71 w2.close
72
73 println("visualization done")
74
75// partialModelOutput.openWorldElements
76 //RESULTS
77// print(hood)
78
79 }
80}
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Element.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Element.java
new file mode 100644
index 00000000..463523f0
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Element.java
@@ -0,0 +1,77 @@
1/**
2 */
3package linkedList;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Element</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link linkedList.Element#getValue <em>Value</em>}</li>
17 * <li>{@link linkedList.Element#getNext <em>Next</em>}</li>
18 * </ul>
19 *
20 * @see linkedList.LinkedListPackage#getElement()
21 * @model
22 * @generated
23 */
24public interface Element extends EObject {
25 /**
26 * Returns the value of the '<em><b>Value</b></em>' containment reference.
27 * <!-- begin-user-doc -->
28 * <p>
29 * If the meaning of the '<em>Value</em>' containment reference isn't clear,
30 * there really should be more of a description here...
31 * </p>
32 * <!-- end-user-doc -->
33 * @return the value of the '<em>Value</em>' containment reference.
34 * @see #setValue(linkedList.Object)
35 * @see linkedList.LinkedListPackage#getElement_Value()
36 * @model containment="true" required="true"
37 * @generated
38 */
39 linkedList.Object getValue();
40
41 /**
42 * Sets the value of the '{@link linkedList.Element#getValue <em>Value</em>}' containment reference.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @param value the new value of the '<em>Value</em>' containment reference.
46 * @see #getValue()
47 * @generated
48 */
49 void setValue(linkedList.Object value);
50
51 /**
52 * Returns the value of the '<em><b>Next</b></em>' containment reference.
53 * <!-- begin-user-doc -->
54 * <p>
55 * If the meaning of the '<em>Next</em>' reference isn't clear,
56 * there really should be more of a description here...
57 * </p>
58 * <!-- end-user-doc -->
59 * @return the value of the '<em>Next</em>' containment reference.
60 * @see #setNext(Element)
61 * @see linkedList.LinkedListPackage#getElement_Next()
62 * @model containment="true"
63 * @generated
64 */
65 Element getNext();
66
67 /**
68 * Sets the value of the '{@link linkedList.Element#getNext <em>Next</em>}' containment reference.
69 * <!-- begin-user-doc -->
70 * <!-- end-user-doc -->
71 * @param value the new value of the '<em>Next</em>' containment reference.
72 * @see #getNext()
73 * @generated
74 */
75 void setNext(Element value);
76
77} // Element
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListFactory.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListFactory.java
new file mode 100644
index 00000000..8ef9cd8d
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListFactory.java
@@ -0,0 +1,60 @@
1/**
2 */
3package linkedList;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see linkedList.LinkedListPackage
13 * @generated
14 */
15public interface LinkedListFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 LinkedListFactory eINSTANCE = linkedList.impl.LinkedListFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>List</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>List</em>'.
29 * @generated
30 */
31 List createList();
32
33 /**
34 * Returns a new object of class '<em>Element</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Element</em>'.
38 * @generated
39 */
40 Element createElement();
41
42 /**
43 * Returns a new object of class '<em>Object</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>Object</em>'.
47 * @generated
48 */
49 Object createObject();
50
51 /**
52 * Returns the package supported by this factory.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return the package supported by this factory.
56 * @generated
57 */
58 LinkedListPackage getLinkedListPackage();
59
60} //LinkedListFactory
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListPackage.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListPackage.java
new file mode 100644
index 00000000..06a47d87
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/LinkedListPackage.java
@@ -0,0 +1,312 @@
1/**
2 */
3package linkedList;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EPackage;
7import org.eclipse.emf.ecore.EReference;
8
9/**
10 * <!-- begin-user-doc -->
11 * The <b>Package</b> for the model.
12 * It contains accessors for the meta objects to represent
13 * <ul>
14 * <li>each class,</li>
15 * <li>each feature of each class,</li>
16 * <li>each operation of each class,</li>
17 * <li>each enum,</li>
18 * <li>and each data type</li>
19 * </ul>
20 * <!-- end-user-doc -->
21 * @see linkedList.LinkedListFactory
22 * @model kind="package"
23 * @generated
24 */
25public interface LinkedListPackage extends EPackage {
26 /**
27 * The package name.
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 String eNAME = "linkedList";
33
34 /**
35 * The package namespace URI.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 String eNS_URI = "llmm";
41
42 /**
43 * The package namespace name.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 String eNS_PREFIX = "LLMM";
49
50 /**
51 * The singleton instance of the package.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 LinkedListPackage eINSTANCE = linkedList.impl.LinkedListPackageImpl.init();
57
58 /**
59 * The meta object id for the '{@link linkedList.impl.ListImpl <em>List</em>}' class.
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @see linkedList.impl.ListImpl
63 * @see linkedList.impl.LinkedListPackageImpl#getList()
64 * @generated
65 */
66 int LIST = 0;
67
68 /**
69 * The feature id for the '<em><b>First</b></em>' containment reference.
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @generated
73 * @ordered
74 */
75 int LIST__FIRST = 0;
76
77 /**
78 * The number of structural features of the '<em>List</em>' class.
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 * @ordered
83 */
84 int LIST_FEATURE_COUNT = 1;
85
86 /**
87 * The number of operations of the '<em>List</em>' class.
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 * @ordered
92 */
93 int LIST_OPERATION_COUNT = 0;
94
95 /**
96 * The meta object id for the '{@link linkedList.impl.ElementImpl <em>Element</em>}' class.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @see linkedList.impl.ElementImpl
100 * @see linkedList.impl.LinkedListPackageImpl#getElement()
101 * @generated
102 */
103 int ELEMENT = 1;
104
105 /**
106 * The feature id for the '<em><b>Value</b></em>' containment reference.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 * @ordered
111 */
112 int ELEMENT__VALUE = 0;
113
114 /**
115 * The feature id for the '<em><b>Next</b></em>' containment reference.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 * @ordered
120 */
121 int ELEMENT__NEXT = 1;
122
123 /**
124 * The number of structural features of the '<em>Element</em>' class.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 * @ordered
129 */
130 int ELEMENT_FEATURE_COUNT = 2;
131
132 /**
133 * The number of operations of the '<em>Element</em>' class.
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 * @ordered
138 */
139 int ELEMENT_OPERATION_COUNT = 0;
140
141 /**
142 * The meta object id for the '{@link linkedList.impl.ObjectImpl <em>Object</em>}' class.
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @see linkedList.impl.ObjectImpl
146 * @see linkedList.impl.LinkedListPackageImpl#getObject()
147 * @generated
148 */
149 int OBJECT = 2;
150
151 /**
152 * The number of structural features of the '<em>Object</em>' class.
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 * @ordered
157 */
158 int OBJECT_FEATURE_COUNT = 0;
159
160 /**
161 * The number of operations of the '<em>Object</em>' class.
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @generated
165 * @ordered
166 */
167 int OBJECT_OPERATION_COUNT = 0;
168
169
170 /**
171 * Returns the meta object for class '{@link linkedList.List <em>List</em>}'.
172 * <!-- begin-user-doc -->
173 * <!-- end-user-doc -->
174 * @return the meta object for class '<em>List</em>'.
175 * @see linkedList.List
176 * @generated
177 */
178 EClass getList();
179
180 /**
181 * Returns the meta object for the containment reference '{@link linkedList.List#getFirst <em>First</em>}'.
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @return the meta object for the containment reference '<em>First</em>'.
185 * @see linkedList.List#getFirst()
186 * @see #getList()
187 * @generated
188 */
189 EReference getList_First();
190
191 /**
192 * Returns the meta object for class '{@link linkedList.Element <em>Element</em>}'.
193 * <!-- begin-user-doc -->
194 * <!-- end-user-doc -->
195 * @return the meta object for class '<em>Element</em>'.
196 * @see linkedList.Element
197 * @generated
198 */
199 EClass getElement();
200
201 /**
202 * Returns the meta object for the containment reference '{@link linkedList.Element#getValue <em>Value</em>}'.
203 * <!-- begin-user-doc -->
204 * <!-- end-user-doc -->
205 * @return the meta object for the containment reference '<em>Value</em>'.
206 * @see linkedList.Element#getValue()
207 * @see #getElement()
208 * @generated
209 */
210 EReference getElement_Value();
211
212 /**
213 * Returns the meta object for the containment reference '{@link linkedList.Element#getNext <em>Next</em>}'.
214 * <!-- begin-user-doc -->
215 * <!-- end-user-doc -->
216 * @return the meta object for the containment reference '<em>Next</em>'.
217 * @see linkedList.Element#getNext()
218 * @see #getElement()
219 * @generated
220 */
221 EReference getElement_Next();
222
223 /**
224 * Returns the meta object for class '{@link linkedList.Object <em>Object</em>}'.
225 * <!-- begin-user-doc -->
226 * <!-- end-user-doc -->
227 * @return the meta object for class '<em>Object</em>'.
228 * @see linkedList.Object
229 * @generated
230 */
231 EClass getObject();
232
233 /**
234 * Returns the factory that creates the instances of the model.
235 * <!-- begin-user-doc -->
236 * <!-- end-user-doc -->
237 * @return the factory that creates the instances of the model.
238 * @generated
239 */
240 LinkedListFactory getLinkedListFactory();
241
242 /**
243 * <!-- begin-user-doc -->
244 * Defines literals for the meta objects that represent
245 * <ul>
246 * <li>each class,</li>
247 * <li>each feature of each class,</li>
248 * <li>each operation of each class,</li>
249 * <li>each enum,</li>
250 * <li>and each data type</li>
251 * </ul>
252 * <!-- end-user-doc -->
253 * @generated
254 */
255 interface Literals {
256 /**
257 * The meta object literal for the '{@link linkedList.impl.ListImpl <em>List</em>}' class.
258 * <!-- begin-user-doc -->
259 * <!-- end-user-doc -->
260 * @see linkedList.impl.ListImpl
261 * @see linkedList.impl.LinkedListPackageImpl#getList()
262 * @generated
263 */
264 EClass LIST = eINSTANCE.getList();
265
266 /**
267 * The meta object literal for the '<em><b>First</b></em>' containment reference feature.
268 * <!-- begin-user-doc -->
269 * <!-- end-user-doc -->
270 * @generated
271 */
272 EReference LIST__FIRST = eINSTANCE.getList_First();
273
274 /**
275 * The meta object literal for the '{@link linkedList.impl.ElementImpl <em>Element</em>}' class.
276 * <!-- begin-user-doc -->
277 * <!-- end-user-doc -->
278 * @see linkedList.impl.ElementImpl
279 * @see linkedList.impl.LinkedListPackageImpl#getElement()
280 * @generated
281 */
282 EClass ELEMENT = eINSTANCE.getElement();
283
284 /**
285 * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
286 * <!-- begin-user-doc -->
287 * <!-- end-user-doc -->
288 * @generated
289 */
290 EReference ELEMENT__VALUE = eINSTANCE.getElement_Value();
291
292 /**
293 * The meta object literal for the '<em><b>Next</b></em>' containment reference feature.
294 * <!-- begin-user-doc -->
295 * <!-- end-user-doc -->
296 * @generated
297 */
298 EReference ELEMENT__NEXT = eINSTANCE.getElement_Next();
299
300 /**
301 * The meta object literal for the '{@link linkedList.impl.ObjectImpl <em>Object</em>}' class.
302 * <!-- begin-user-doc -->
303 * <!-- end-user-doc -->
304 * @see linkedList.impl.ObjectImpl
305 * @see linkedList.impl.LinkedListPackageImpl#getObject()
306 * @generated
307 */
308 EClass OBJECT = eINSTANCE.getObject();
309
310 }
311
312} //LinkedListPackage
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/List.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/List.java
new file mode 100644
index 00000000..a72cc711
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/List.java
@@ -0,0 +1,50 @@
1/**
2 */
3package linkedList;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>List</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link linkedList.List#getFirst <em>First</em>}</li>
17 * </ul>
18 *
19 * @see linkedList.LinkedListPackage#getList()
20 * @model
21 * @generated
22 */
23public interface List extends EObject {
24 /**
25 * Returns the value of the '<em><b>First</b></em>' containment reference.
26 * <!-- begin-user-doc -->
27 * <p>
28 * If the meaning of the '<em>First</em>' reference isn't clear,
29 * there really should be more of a description here...
30 * </p>
31 * <!-- end-user-doc -->
32 * @return the value of the '<em>First</em>' containment reference.
33 * @see #setFirst(Element)
34 * @see linkedList.LinkedListPackage#getList_First()
35 * @model containment="true"
36 * @generated
37 */
38 Element getFirst();
39
40 /**
41 * Sets the value of the '{@link linkedList.List#getFirst <em>First</em>}' containment reference.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @param value the new value of the '<em>First</em>' containment reference.
45 * @see #getFirst()
46 * @generated
47 */
48 void setFirst(Element value);
49
50} // List
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Object.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Object.java
new file mode 100644
index 00000000..4c8d1081
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/Object.java
@@ -0,0 +1,19 @@
1/**
2 */
3package linkedList;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Object</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 *
13 * @see linkedList.LinkedListPackage#getObject()
14 * @model
15 * @generated
16 */
17public interface Object extends EObject {
18
19} // Object
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ElementImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ElementImpl.java
new file mode 100644
index 00000000..d08f707b
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ElementImpl.java
@@ -0,0 +1,241 @@
1/**
2 */
3package linkedList.impl;
4
5import linkedList.Element;
6import linkedList.LinkedListPackage;
7
8import org.eclipse.emf.common.notify.Notification;
9import org.eclipse.emf.common.notify.NotificationChain;
10
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.emf.ecore.InternalEObject;
13
14import org.eclipse.emf.ecore.impl.ENotificationImpl;
15import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Element</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link linkedList.impl.ElementImpl#getValue <em>Value</em>}</li>
26 * <li>{@link linkedList.impl.ElementImpl#getNext <em>Next</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class ElementImpl extends MinimalEObjectImpl.Container implements Element {
32 /**
33 * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getValue()
37 * @generated
38 * @ordered
39 */
40 protected linkedList.Object value;
41
42 /**
43 * The cached value of the '{@link #getNext() <em>Next</em>}' containment reference.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @see #getNext()
47 * @generated
48 * @ordered
49 */
50 protected Element next;
51
52 /**
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @generated
56 */
57 protected ElementImpl() {
58 super();
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 @Override
67 protected EClass eStaticClass() {
68 return LinkedListPackage.Literals.ELEMENT;
69 }
70
71 /**
72 * <!-- begin-user-doc -->
73 * <!-- end-user-doc -->
74 * @generated
75 */
76 public linkedList.Object getValue() {
77 return value;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 public NotificationChain basicSetValue(linkedList.Object newValue, NotificationChain msgs) {
86 linkedList.Object oldValue = value;
87 value = newValue;
88 if (eNotificationRequired()) {
89 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LinkedListPackage.ELEMENT__VALUE, oldValue, newValue);
90 if (msgs == null) msgs = notification; else msgs.add(notification);
91 }
92 return msgs;
93 }
94
95 /**
96 * <!-- begin-user-doc -->
97 * <!-- end-user-doc -->
98 * @generated
99 */
100 public void setValue(linkedList.Object newValue) {
101 if (newValue != value) {
102 NotificationChain msgs = null;
103 if (value != null)
104 msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LinkedListPackage.ELEMENT__VALUE, null, msgs);
105 if (newValue != null)
106 msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LinkedListPackage.ELEMENT__VALUE, null, msgs);
107 msgs = basicSetValue(newValue, msgs);
108 if (msgs != null) msgs.dispatch();
109 }
110 else if (eNotificationRequired())
111 eNotify(new ENotificationImpl(this, Notification.SET, LinkedListPackage.ELEMENT__VALUE, newValue, newValue));
112 }
113
114 /**
115 * <!-- begin-user-doc -->
116 * <!-- end-user-doc -->
117 * @generated
118 */
119 public Element getNext() {
120 return next;
121 }
122
123 /**
124 * <!-- begin-user-doc -->
125 * <!-- end-user-doc -->
126 * @generated
127 */
128 public NotificationChain basicSetNext(Element newNext, NotificationChain msgs) {
129 Element oldNext = next;
130 next = newNext;
131 if (eNotificationRequired()) {
132 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LinkedListPackage.ELEMENT__NEXT, oldNext, newNext);
133 if (msgs == null) msgs = notification; else msgs.add(notification);
134 }
135 return msgs;
136 }
137
138 /**
139 * <!-- begin-user-doc -->
140 * <!-- end-user-doc -->
141 * @generated
142 */
143 public void setNext(Element newNext) {
144 if (newNext != next) {
145 NotificationChain msgs = null;
146 if (next != null)
147 msgs = ((InternalEObject)next).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LinkedListPackage.ELEMENT__NEXT, null, msgs);
148 if (newNext != null)
149 msgs = ((InternalEObject)newNext).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LinkedListPackage.ELEMENT__NEXT, null, msgs);
150 msgs = basicSetNext(newNext, msgs);
151 if (msgs != null) msgs.dispatch();
152 }
153 else if (eNotificationRequired())
154 eNotify(new ENotificationImpl(this, Notification.SET, LinkedListPackage.ELEMENT__NEXT, newNext, newNext));
155 }
156
157 /**
158 * <!-- begin-user-doc -->
159 * <!-- end-user-doc -->
160 * @generated
161 */
162 @Override
163 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
164 switch (featureID) {
165 case LinkedListPackage.ELEMENT__VALUE:
166 return basicSetValue(null, msgs);
167 case LinkedListPackage.ELEMENT__NEXT:
168 return basicSetNext(null, msgs);
169 }
170 return super.eInverseRemove(otherEnd, featureID, msgs);
171 }
172
173 /**
174 * <!-- begin-user-doc -->
175 * <!-- end-user-doc -->
176 * @generated
177 */
178 @Override
179 public Object eGet(int featureID, boolean resolve, boolean coreType) {
180 switch (featureID) {
181 case LinkedListPackage.ELEMENT__VALUE:
182 return getValue();
183 case LinkedListPackage.ELEMENT__NEXT:
184 return getNext();
185 }
186 return super.eGet(featureID, resolve, coreType);
187 }
188
189 /**
190 * <!-- begin-user-doc -->
191 * <!-- end-user-doc -->
192 * @generated
193 */
194 @Override
195 public void eSet(int featureID, Object newValue) {
196 switch (featureID) {
197 case LinkedListPackage.ELEMENT__VALUE:
198 setValue((linkedList.Object)newValue);
199 return;
200 case LinkedListPackage.ELEMENT__NEXT:
201 setNext((Element)newValue);
202 return;
203 }
204 super.eSet(featureID, newValue);
205 }
206
207 /**
208 * <!-- begin-user-doc -->
209 * <!-- end-user-doc -->
210 * @generated
211 */
212 @Override
213 public void eUnset(int featureID) {
214 switch (featureID) {
215 case LinkedListPackage.ELEMENT__VALUE:
216 setValue((linkedList.Object)null);
217 return;
218 case LinkedListPackage.ELEMENT__NEXT:
219 setNext((Element)null);
220 return;
221 }
222 super.eUnset(featureID);
223 }
224
225 /**
226 * <!-- begin-user-doc -->
227 * <!-- end-user-doc -->
228 * @generated
229 */
230 @Override
231 public boolean eIsSet(int featureID) {
232 switch (featureID) {
233 case LinkedListPackage.ELEMENT__VALUE:
234 return value != null;
235 case LinkedListPackage.ELEMENT__NEXT:
236 return next != null;
237 }
238 return super.eIsSet(featureID);
239 }
240
241} //ElementImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListFactoryImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListFactoryImpl.java
new file mode 100644
index 00000000..1a66a5e4
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListFactoryImpl.java
@@ -0,0 +1,120 @@
1/**
2 */
3package linkedList.impl;
4
5import linkedList.Element;
6import linkedList.LinkedListFactory;
7import linkedList.LinkedListPackage;
8import linkedList.List;
9
10import org.eclipse.emf.ecore.EClass;
11import org.eclipse.emf.ecore.EObject;
12import org.eclipse.emf.ecore.EPackage;
13
14import org.eclipse.emf.ecore.impl.EFactoryImpl;
15
16import org.eclipse.emf.ecore.plugin.EcorePlugin;
17
18/**
19 * <!-- begin-user-doc -->
20 * An implementation of the model <b>Factory</b>.
21 * <!-- end-user-doc -->
22 * @generated
23 */
24public class LinkedListFactoryImpl extends EFactoryImpl implements LinkedListFactory {
25 /**
26 * Creates the default factory implementation.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @generated
30 */
31 public static LinkedListFactory init() {
32 try {
33 LinkedListFactory theLinkedListFactory = (LinkedListFactory)EPackage.Registry.INSTANCE.getEFactory(LinkedListPackage.eNS_URI);
34 if (theLinkedListFactory != null) {
35 return theLinkedListFactory;
36 }
37 }
38 catch (Exception exception) {
39 EcorePlugin.INSTANCE.log(exception);
40 }
41 return new LinkedListFactoryImpl();
42 }
43
44 /**
45 * Creates an instance of the factory.
46 * <!-- begin-user-doc -->
47 * <!-- end-user-doc -->
48 * @generated
49 */
50 public LinkedListFactoryImpl() {
51 super();
52 }
53
54 /**
55 * <!-- begin-user-doc -->
56 * <!-- end-user-doc -->
57 * @generated
58 */
59 @Override
60 public EObject create(EClass eClass) {
61 switch (eClass.getClassifierID()) {
62 case LinkedListPackage.LIST: return createList();
63 case LinkedListPackage.ELEMENT: return createElement();
64 case LinkedListPackage.OBJECT: return createObject();
65 default:
66 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
67 }
68 }
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 public List createList() {
76 ListImpl list = new ListImpl();
77 return list;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 public Element createElement() {
86 ElementImpl element = new ElementImpl();
87 return element;
88 }
89
90 /**
91 * <!-- begin-user-doc -->
92 * <!-- end-user-doc -->
93 * @generated
94 */
95 public linkedList.Object createObject() {
96 ObjectImpl object = new ObjectImpl();
97 return object;
98 }
99
100 /**
101 * <!-- begin-user-doc -->
102 * <!-- end-user-doc -->
103 * @generated
104 */
105 public LinkedListPackage getLinkedListPackage() {
106 return (LinkedListPackage)getEPackage();
107 }
108
109 /**
110 * <!-- begin-user-doc -->
111 * <!-- end-user-doc -->
112 * @deprecated
113 * @generated
114 */
115 @Deprecated
116 public static LinkedListPackage getPackage() {
117 return LinkedListPackage.eINSTANCE;
118 }
119
120} //LinkedListFactoryImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListPackageImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListPackageImpl.java
new file mode 100644
index 00000000..f190c4d0
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/LinkedListPackageImpl.java
@@ -0,0 +1,239 @@
1/**
2 */
3package linkedList.impl;
4
5import linkedList.Element;
6import linkedList.LinkedListFactory;
7import linkedList.LinkedListPackage;
8import linkedList.List;
9import org.eclipse.emf.ecore.EClass;
10import org.eclipse.emf.ecore.EPackage;
11import org.eclipse.emf.ecore.EReference;
12
13import org.eclipse.emf.ecore.impl.EPackageImpl;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model <b>Package</b>.
18 * <!-- end-user-doc -->
19 * @generated
20 */
21public class LinkedListPackageImpl extends EPackageImpl implements LinkedListPackage {
22 /**
23 * <!-- begin-user-doc -->
24 * <!-- end-user-doc -->
25 * @generated
26 */
27 private EClass listEClass = null;
28
29 /**
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 private EClass elementEClass = null;
35
36 /**
37 * <!-- begin-user-doc -->
38 * <!-- end-user-doc -->
39 * @generated
40 */
41 private EClass objectEClass = null;
42
43 /**
44 * Creates an instance of the model <b>Package</b>, registered with
45 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
46 * package URI value.
47 * <p>Note: the correct way to create the package is via the static
48 * factory method {@link #init init()}, which also performs
49 * initialization of the package, or returns the registered package,
50 * if one already exists.
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @see org.eclipse.emf.ecore.EPackage.Registry
54 * @see linkedList.LinkedListPackage#eNS_URI
55 * @see #init()
56 * @generated
57 */
58 private LinkedListPackageImpl() {
59 super(eNS_URI, LinkedListFactory.eINSTANCE);
60 }
61
62 /**
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @generated
66 */
67 private static boolean isInited = false;
68
69 /**
70 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
71 *
72 * <p>This method is used to initialize {@link LinkedListPackage#eINSTANCE} when that field is accessed.
73 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @see #eNS_URI
77 * @see #createPackageContents()
78 * @see #initializePackageContents()
79 * @generated
80 */
81 public static LinkedListPackage init() {
82 if (isInited) return (LinkedListPackage)EPackage.Registry.INSTANCE.getEPackage(LinkedListPackage.eNS_URI);
83
84 // Obtain or create and register package
85 Object registeredLinkedListPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
86 LinkedListPackageImpl theLinkedListPackage = registeredLinkedListPackage instanceof LinkedListPackageImpl ? (LinkedListPackageImpl)registeredLinkedListPackage : new LinkedListPackageImpl();
87
88 isInited = true;
89
90 // Create package meta-data objects
91 theLinkedListPackage.createPackageContents();
92
93 // Initialize created meta-data
94 theLinkedListPackage.initializePackageContents();
95
96 // Mark meta-data to indicate it can't be changed
97 theLinkedListPackage.freeze();
98
99 // Update the registry and return the package
100 EPackage.Registry.INSTANCE.put(LinkedListPackage.eNS_URI, theLinkedListPackage);
101 return theLinkedListPackage;
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 public EClass getList() {
110 return listEClass;
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 public EReference getList_First() {
119 return (EReference)listEClass.getEStructuralFeatures().get(0);
120 }
121
122 /**
123 * <!-- begin-user-doc -->
124 * <!-- end-user-doc -->
125 * @generated
126 */
127 public EClass getElement() {
128 return elementEClass;
129 }
130
131 /**
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @generated
135 */
136 public EReference getElement_Value() {
137 return (EReference)elementEClass.getEStructuralFeatures().get(0);
138 }
139
140 /**
141 * <!-- begin-user-doc -->
142 * <!-- end-user-doc -->
143 * @generated
144 */
145 public EReference getElement_Next() {
146 return (EReference)elementEClass.getEStructuralFeatures().get(1);
147 }
148
149 /**
150 * <!-- begin-user-doc -->
151 * <!-- end-user-doc -->
152 * @generated
153 */
154 public EClass getObject() {
155 return objectEClass;
156 }
157
158 /**
159 * <!-- begin-user-doc -->
160 * <!-- end-user-doc -->
161 * @generated
162 */
163 public LinkedListFactory getLinkedListFactory() {
164 return (LinkedListFactory)getEFactoryInstance();
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 private boolean isCreated = false;
173
174 /**
175 * Creates the meta-model objects for the package. This method is
176 * guarded to have no affect on any invocation but its first.
177 * <!-- begin-user-doc -->
178 * <!-- end-user-doc -->
179 * @generated
180 */
181 public void createPackageContents() {
182 if (isCreated) return;
183 isCreated = true;
184
185 // Create classes and their features
186 listEClass = createEClass(LIST);
187 createEReference(listEClass, LIST__FIRST);
188
189 elementEClass = createEClass(ELEMENT);
190 createEReference(elementEClass, ELEMENT__VALUE);
191 createEReference(elementEClass, ELEMENT__NEXT);
192
193 objectEClass = createEClass(OBJECT);
194 }
195
196 /**
197 * <!-- begin-user-doc -->
198 * <!-- end-user-doc -->
199 * @generated
200 */
201 private boolean isInitialized = false;
202
203 /**
204 * Complete the initialization of the package and its meta-model. This
205 * method is guarded to have no affect on any invocation but its first.
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @generated
209 */
210 public void initializePackageContents() {
211 if (isInitialized) return;
212 isInitialized = true;
213
214 // Initialize package
215 setName(eNAME);
216 setNsPrefix(eNS_PREFIX);
217 setNsURI(eNS_URI);
218
219 // Create type parameters
220
221 // Set bounds for type parameters
222
223 // Add supertypes to classes
224
225 // Initialize classes, features, and operations; add parameters
226 initEClass(listEClass, List.class, "List", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
227 initEReference(getList_First(), this.getElement(), null, "first", null, 0, 1, List.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
228
229 initEClass(elementEClass, Element.class, "Element", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
230 initEReference(getElement_Value(), this.getObject(), null, "value", null, 1, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
231 initEReference(getElement_Next(), this.getElement(), null, "next", null, 0, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
232
233 initEClass(objectEClass, linkedList.Object.class, "Object", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
234
235 // Create resource
236 createResource(eNS_URI);
237 }
238
239} //LinkedListPackageImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ListImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ListImpl.java
new file mode 100644
index 00000000..30d006cd
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ListImpl.java
@@ -0,0 +1,176 @@
1/**
2 */
3package linkedList.impl;
4
5import linkedList.Element;
6import linkedList.LinkedListPackage;
7import linkedList.List;
8
9import org.eclipse.emf.common.notify.Notification;
10import org.eclipse.emf.common.notify.NotificationChain;
11import org.eclipse.emf.ecore.EClass;
12import org.eclipse.emf.ecore.InternalEObject;
13
14import org.eclipse.emf.ecore.impl.ENotificationImpl;
15import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>List</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link linkedList.impl.ListImpl#getFirst <em>First</em>}</li>
26 * </ul>
27 *
28 * @generated
29 */
30public class ListImpl extends MinimalEObjectImpl.Container implements List {
31 /**
32 * The cached value of the '{@link #getFirst() <em>First</em>}' containment reference.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #getFirst()
36 * @generated
37 * @ordered
38 */
39 protected Element first;
40
41 /**
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @generated
45 */
46 protected ListImpl() {
47 super();
48 }
49
50 /**
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @generated
54 */
55 @Override
56 protected EClass eStaticClass() {
57 return LinkedListPackage.Literals.LIST;
58 }
59
60 /**
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @generated
64 */
65 public Element getFirst() {
66 return first;
67 }
68
69 /**
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @generated
73 */
74 public NotificationChain basicSetFirst(Element newFirst, NotificationChain msgs) {
75 Element oldFirst = first;
76 first = newFirst;
77 if (eNotificationRequired()) {
78 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LinkedListPackage.LIST__FIRST, oldFirst, newFirst);
79 if (msgs == null) msgs = notification; else msgs.add(notification);
80 }
81 return msgs;
82 }
83
84 /**
85 * <!-- begin-user-doc -->
86 * <!-- end-user-doc -->
87 * @generated
88 */
89 public void setFirst(Element newFirst) {
90 if (newFirst != first) {
91 NotificationChain msgs = null;
92 if (first != null)
93 msgs = ((InternalEObject)first).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LinkedListPackage.LIST__FIRST, null, msgs);
94 if (newFirst != null)
95 msgs = ((InternalEObject)newFirst).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LinkedListPackage.LIST__FIRST, null, msgs);
96 msgs = basicSetFirst(newFirst, msgs);
97 if (msgs != null) msgs.dispatch();
98 }
99 else if (eNotificationRequired())
100 eNotify(new ENotificationImpl(this, Notification.SET, LinkedListPackage.LIST__FIRST, newFirst, newFirst));
101 }
102
103 /**
104 * <!-- begin-user-doc -->
105 * <!-- end-user-doc -->
106 * @generated
107 */
108 @Override
109 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
110 switch (featureID) {
111 case LinkedListPackage.LIST__FIRST:
112 return basicSetFirst(null, msgs);
113 }
114 return super.eInverseRemove(otherEnd, featureID, msgs);
115 }
116
117 /**
118 * <!-- begin-user-doc -->
119 * <!-- end-user-doc -->
120 * @generated
121 */
122 @Override
123 public Object eGet(int featureID, boolean resolve, boolean coreType) {
124 switch (featureID) {
125 case LinkedListPackage.LIST__FIRST:
126 return getFirst();
127 }
128 return super.eGet(featureID, resolve, coreType);
129 }
130
131 /**
132 * <!-- begin-user-doc -->
133 * <!-- end-user-doc -->
134 * @generated
135 */
136 @SuppressWarnings("unchecked")
137 @Override
138 public void eSet(int featureID, Object newValue) {
139 switch (featureID) {
140 case LinkedListPackage.LIST__FIRST:
141 setFirst((Element)newValue);
142 return;
143 }
144 super.eSet(featureID, newValue);
145 }
146
147 /**
148 * <!-- begin-user-doc -->
149 * <!-- end-user-doc -->
150 * @generated
151 */
152 @Override
153 public void eUnset(int featureID) {
154 switch (featureID) {
155 case LinkedListPackage.LIST__FIRST:
156 setFirst((Element)null);
157 return;
158 }
159 super.eUnset(featureID);
160 }
161
162 /**
163 * <!-- begin-user-doc -->
164 * <!-- end-user-doc -->
165 * @generated
166 */
167 @Override
168 public boolean eIsSet(int featureID) {
169 switch (featureID) {
170 case LinkedListPackage.LIST__FIRST:
171 return first != null;
172 }
173 return super.eIsSet(featureID);
174 }
175
176} //ListImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ObjectImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ObjectImpl.java
new file mode 100644
index 00000000..c9b55c8d
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/impl/ObjectImpl.java
@@ -0,0 +1,36 @@
1/**
2 */
3package linkedList.impl;
4
5import linkedList.LinkedListPackage;
6import org.eclipse.emf.ecore.EClass;
7import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
8
9/**
10 * <!-- begin-user-doc -->
11 * An implementation of the model object '<em><b>Object</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * @generated
15 */
16public class ObjectImpl extends MinimalEObjectImpl.Container implements linkedList.Object {
17 /**
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 protected ObjectImpl() {
23 super();
24 }
25
26 /**
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @generated
30 */
31 @Override
32 protected EClass eStaticClass() {
33 return LinkedListPackage.Literals.OBJECT;
34 }
35
36} //ObjectImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListAdapterFactory.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListAdapterFactory.java
new file mode 100644
index 00000000..583192ba
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListAdapterFactory.java
@@ -0,0 +1,158 @@
1/**
2 */
3package linkedList.util;
4
5import linkedList.Element;
6import linkedList.LinkedListPackage;
7import linkedList.List;
8
9import org.eclipse.emf.common.notify.Adapter;
10import org.eclipse.emf.common.notify.Notifier;
11
12import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
13
14import org.eclipse.emf.ecore.EObject;
15
16/**
17 * <!-- begin-user-doc -->
18 * The <b>Adapter Factory</b> for the model.
19 * It provides an adapter <code>createXXX</code> method for each class of the model.
20 * <!-- end-user-doc -->
21 * @see linkedList.LinkedListPackage
22 * @generated
23 */
24public class LinkedListAdapterFactory extends AdapterFactoryImpl {
25 /**
26 * The cached model package.
27 * <!-- begin-user-doc -->
28 * <!-- end-user-doc -->
29 * @generated
30 */
31 protected static LinkedListPackage modelPackage;
32
33 /**
34 * Creates an instance of the adapter factory.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @generated
38 */
39 public LinkedListAdapterFactory() {
40 if (modelPackage == null) {
41 modelPackage = LinkedListPackage.eINSTANCE;
42 }
43 }
44
45 /**
46 * Returns whether this factory is applicable for the type of the object.
47 * <!-- begin-user-doc -->
48 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
49 * <!-- end-user-doc -->
50 * @return whether this factory is applicable for the type of the object.
51 * @generated
52 */
53 @Override
54 public boolean isFactoryForType(Object object) {
55 if (object == modelPackage) {
56 return true;
57 }
58 if (object instanceof EObject) {
59 return ((EObject)object).eClass().getEPackage() == modelPackage;
60 }
61 return false;
62 }
63
64 /**
65 * The switch that delegates to the <code>createXXX</code> methods.
66 * <!-- begin-user-doc -->
67 * <!-- end-user-doc -->
68 * @generated
69 */
70 protected LinkedListSwitch<Adapter> modelSwitch =
71 new LinkedListSwitch<Adapter>() {
72 @Override
73 public Adapter caseList(List object) {
74 return createListAdapter();
75 }
76 @Override
77 public Adapter caseElement(Element object) {
78 return createElementAdapter();
79 }
80 @Override
81 public Adapter caseObject(linkedList.Object object) {
82 return createObjectAdapter();
83 }
84 @Override
85 public Adapter defaultCase(EObject object) {
86 return createEObjectAdapter();
87 }
88 };
89
90 /**
91 * Creates an adapter for the <code>target</code>.
92 * <!-- begin-user-doc -->
93 * <!-- end-user-doc -->
94 * @param target the object to adapt.
95 * @return the adapter for the <code>target</code>.
96 * @generated
97 */
98 @Override
99 public Adapter createAdapter(Notifier target) {
100 return modelSwitch.doSwitch((EObject)target);
101 }
102
103
104 /**
105 * Creates a new adapter for an object of class '{@link linkedList.List <em>List</em>}'.
106 * <!-- begin-user-doc -->
107 * This default implementation returns null so that we can easily ignore cases;
108 * it's useful to ignore a case when inheritance will catch all the cases anyway.
109 * <!-- end-user-doc -->
110 * @return the new adapter.
111 * @see linkedList.List
112 * @generated
113 */
114 public Adapter createListAdapter() {
115 return null;
116 }
117
118 /**
119 * Creates a new adapter for an object of class '{@link linkedList.Element <em>Element</em>}'.
120 * <!-- begin-user-doc -->
121 * This default implementation returns null so that we can easily ignore cases;
122 * it's useful to ignore a case when inheritance will catch all the cases anyway.
123 * <!-- end-user-doc -->
124 * @return the new adapter.
125 * @see linkedList.Element
126 * @generated
127 */
128 public Adapter createElementAdapter() {
129 return null;
130 }
131
132 /**
133 * Creates a new adapter for an object of class '{@link linkedList.Object <em>Object</em>}'.
134 * <!-- begin-user-doc -->
135 * This default implementation returns null so that we can easily ignore cases;
136 * it's useful to ignore a case when inheritance will catch all the cases anyway.
137 * <!-- end-user-doc -->
138 * @return the new adapter.
139 * @see linkedList.Object
140 * @generated
141 */
142 public Adapter createObjectAdapter() {
143 return null;
144 }
145
146 /**
147 * Creates a new adapter for the default case.
148 * <!-- begin-user-doc -->
149 * This default implementation returns null.
150 * <!-- end-user-doc -->
151 * @return the new adapter.
152 * @generated
153 */
154 public Adapter createEObjectAdapter() {
155 return null;
156 }
157
158} //LinkedListAdapterFactory
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListSwitch.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListSwitch.java
new file mode 100644
index 00000000..f5dcf560
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/linkedList/util/LinkedListSwitch.java
@@ -0,0 +1,154 @@
1/**
2 */
3package linkedList.util;
4
5import linkedList.Element;
6import linkedList.LinkedListPackage;
7import linkedList.List;
8
9import org.eclipse.emf.ecore.EObject;
10import org.eclipse.emf.ecore.EPackage;
11
12import org.eclipse.emf.ecore.util.Switch;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Switch</b> for the model's inheritance hierarchy.
17 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
18 * to invoke the <code>caseXXX</code> method for each class of the model,
19 * starting with the actual class of the object
20 * and proceeding up the inheritance hierarchy
21 * until a non-null result is returned,
22 * which is the result of the switch.
23 * <!-- end-user-doc -->
24 * @see linkedList.LinkedListPackage
25 * @generated
26 */
27public class LinkedListSwitch<T> extends Switch<T> {
28 /**
29 * The cached model package
30 * <!-- begin-user-doc -->
31 * <!-- end-user-doc -->
32 * @generated
33 */
34 protected static LinkedListPackage modelPackage;
35
36 /**
37 * Creates an instance of the switch.
38 * <!-- begin-user-doc -->
39 * <!-- end-user-doc -->
40 * @generated
41 */
42 public LinkedListSwitch() {
43 if (modelPackage == null) {
44 modelPackage = LinkedListPackage.eINSTANCE;
45 }
46 }
47
48 /**
49 * Checks whether this is a switch for the given package.
50 * <!-- begin-user-doc -->
51 * <!-- end-user-doc -->
52 * @param ePackage the package in question.
53 * @return whether this is a switch for the given package.
54 * @generated
55 */
56 @Override
57 protected boolean isSwitchFor(EPackage ePackage) {
58 return ePackage == modelPackage;
59 }
60
61 /**
62 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
63 * <!-- begin-user-doc -->
64 * <!-- end-user-doc -->
65 * @return the first non-null result returned by a <code>caseXXX</code> call.
66 * @generated
67 */
68 @Override
69 protected T doSwitch(int classifierID, EObject theEObject) {
70 switch (classifierID) {
71 case LinkedListPackage.LIST: {
72 List list = (List)theEObject;
73 T result = caseList(list);
74 if (result == null) result = defaultCase(theEObject);
75 return result;
76 }
77 case LinkedListPackage.ELEMENT: {
78 Element element = (Element)theEObject;
79 T result = caseElement(element);
80 if (result == null) result = defaultCase(theEObject);
81 return result;
82 }
83 case LinkedListPackage.OBJECT: {
84 linkedList.Object object = (linkedList.Object)theEObject;
85 T result = caseObject(object);
86 if (result == null) result = defaultCase(theEObject);
87 return result;
88 }
89 default: return defaultCase(theEObject);
90 }
91 }
92
93 /**
94 * Returns the result of interpreting the object as an instance of '<em>List</em>'.
95 * <!-- begin-user-doc -->
96 * This implementation returns null;
97 * returning a non-null result will terminate the switch.
98 * <!-- end-user-doc -->
99 * @param object the target of the switch.
100 * @return the result of interpreting the object as an instance of '<em>List</em>'.
101 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
102 * @generated
103 */
104 public T caseList(List object) {
105 return null;
106 }
107
108 /**
109 * Returns the result of interpreting the object as an instance of '<em>Element</em>'.
110 * <!-- begin-user-doc -->
111 * This implementation returns null;
112 * returning a non-null result will terminate the switch.
113 * <!-- end-user-doc -->
114 * @param object the target of the switch.
115 * @return the result of interpreting the object as an instance of '<em>Element</em>'.
116 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
117 * @generated
118 */
119 public T caseElement(Element object) {
120 return null;
121 }
122
123 /**
124 * Returns the result of interpreting the object as an instance of '<em>Object</em>'.
125 * <!-- begin-user-doc -->
126 * This implementation returns null;
127 * returning a non-null result will terminate the switch.
128 * <!-- end-user-doc -->
129 * @param object the target of the switch.
130 * @return the result of interpreting the object as an instance of '<em>Object</em>'.
131 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
132 * @generated
133 */
134 public T caseObject(linkedList.Object object) {
135 return null;
136 }
137
138 /**
139 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
140 * <!-- begin-user-doc -->
141 * This implementation returns null;
142 * returning a non-null result will terminate the switch, but this is the last case anyway.
143 * <!-- end-user-doc -->
144 * @param object the target of the switch.
145 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
146 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
147 * @generated
148 */
149 @Override
150 public T defaultCase(EObject object) {
151 return null;
152 }
153
154} //LinkedListSwitch
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Entry.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Entry.java
new file mode 100644
index 00000000..10203691
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Entry.java
@@ -0,0 +1,50 @@
1/**
2 */
3package simpleStatechart;
4
5import org.eclipse.emf.ecore.EObject;
6
7/**
8 * <!-- begin-user-doc -->
9 * A representation of the model object '<em><b>Entry</b></em>'.
10 * <!-- end-user-doc -->
11 *
12 * <p>
13 * The following features are supported:
14 * </p>
15 * <ul>
16 * <li>{@link simpleStatechart.Entry#getEntry <em>Entry</em>}</li>
17 * </ul>
18 *
19 * @see simpleStatechart.SimpleStatechartPackage#getEntry()
20 * @model
21 * @generated
22 */
23public interface Entry extends EObject {
24 /**
25 * Returns the value of the '<em><b>Entry</b></em>' reference.
26 * <!-- begin-user-doc -->
27 * <p>
28 * If the meaning of the '<em>Entry</em>' reference isn't clear,
29 * there really should be more of a description here...
30 * </p>
31 * <!-- end-user-doc -->
32 * @return the value of the '<em>Entry</em>' reference.
33 * @see #setEntry(State)
34 * @see simpleStatechart.SimpleStatechartPackage#getEntry_Entry()
35 * @model
36 * @generated
37 */
38 State getEntry();
39
40 /**
41 * Sets the value of the '{@link simpleStatechart.Entry#getEntry <em>Entry</em>}' reference.
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @param value the new value of the '<em>Entry</em>' reference.
45 * @see #getEntry()
46 * @generated
47 */
48 void setEntry(State value);
49
50} // Entry
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartFactory.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartFactory.java
new file mode 100644
index 00000000..a185daa0
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartFactory.java
@@ -0,0 +1,60 @@
1/**
2 */
3package simpleStatechart;
4
5import org.eclipse.emf.ecore.EFactory;
6
7/**
8 * <!-- begin-user-doc -->
9 * The <b>Factory</b> for the model.
10 * It provides a create method for each non-abstract class of the model.
11 * <!-- end-user-doc -->
12 * @see simpleStatechart.SimpleStatechartPackage
13 * @generated
14 */
15public interface SimpleStatechartFactory extends EFactory {
16 /**
17 * The singleton instance of the factory.
18 * <!-- begin-user-doc -->
19 * <!-- end-user-doc -->
20 * @generated
21 */
22 SimpleStatechartFactory eINSTANCE = simpleStatechart.impl.SimpleStatechartFactoryImpl.init();
23
24 /**
25 * Returns a new object of class '<em>State</em>'.
26 * <!-- begin-user-doc -->
27 * <!-- end-user-doc -->
28 * @return a new object of class '<em>State</em>'.
29 * @generated
30 */
31 State createState();
32
33 /**
34 * Returns a new object of class '<em>Entry</em>'.
35 * <!-- begin-user-doc -->
36 * <!-- end-user-doc -->
37 * @return a new object of class '<em>Entry</em>'.
38 * @generated
39 */
40 Entry createEntry();
41
42 /**
43 * Returns a new object of class '<em>Statechart</em>'.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @return a new object of class '<em>Statechart</em>'.
47 * @generated
48 */
49 Statechart createStatechart();
50
51 /**
52 * Returns the package supported by this factory.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @return the package supported by this factory.
56 * @generated
57 */
58 SimpleStatechartPackage getSimpleStatechartPackage();
59
60} //SimpleStatechartFactory
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartPackage.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartPackage.java
new file mode 100644
index 00000000..0d5a1042
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/SimpleStatechartPackage.java
@@ -0,0 +1,340 @@
1/**
2 */
3package simpleStatechart;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EPackage;
7import org.eclipse.emf.ecore.EReference;
8
9/**
10 * <!-- begin-user-doc -->
11 * The <b>Package</b> for the model.
12 * It contains accessors for the meta objects to represent
13 * <ul>
14 * <li>each class,</li>
15 * <li>each feature of each class,</li>
16 * <li>each operation of each class,</li>
17 * <li>each enum,</li>
18 * <li>and each data type</li>
19 * </ul>
20 * <!-- end-user-doc -->
21 * @see simpleStatechart.SimpleStatechartFactory
22 * @model kind="package"
23 * @generated
24 */
25public interface SimpleStatechartPackage extends EPackage {
26 /**
27 * The package name.
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 String eNAME = "simpleStatechart";
33
34 /**
35 * The package namespace URI.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 String eNS_URI = "simpleSC";
41
42 /**
43 * The package namespace name.
44 * <!-- begin-user-doc -->
45 * <!-- end-user-doc -->
46 * @generated
47 */
48 String eNS_PREFIX = "simpleSC";
49
50 /**
51 * The singleton instance of the package.
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 SimpleStatechartPackage eINSTANCE = simpleStatechart.impl.SimpleStatechartPackageImpl.init();
57
58 /**
59 * The meta object id for the '{@link simpleStatechart.impl.StateImpl <em>State</em>}' class.
60 * <!-- begin-user-doc -->
61 * <!-- end-user-doc -->
62 * @see simpleStatechart.impl.StateImpl
63 * @see simpleStatechart.impl.SimpleStatechartPackageImpl#getState()
64 * @generated
65 */
66 int STATE = 0;
67
68 /**
69 * The feature id for the '<em><b>Next</b></em>' reference list.
70 * <!-- begin-user-doc -->
71 * <!-- end-user-doc -->
72 * @generated
73 * @ordered
74 */
75 int STATE__NEXT = 0;
76
77 /**
78 * The number of structural features of the '<em>State</em>' class.
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @generated
82 * @ordered
83 */
84 int STATE_FEATURE_COUNT = 1;
85
86 /**
87 * The number of operations of the '<em>State</em>' class.
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 * @ordered
92 */
93 int STATE_OPERATION_COUNT = 0;
94
95 /**
96 * The meta object id for the '{@link simpleStatechart.impl.EntryImpl <em>Entry</em>}' class.
97 * <!-- begin-user-doc -->
98 * <!-- end-user-doc -->
99 * @see simpleStatechart.impl.EntryImpl
100 * @see simpleStatechart.impl.SimpleStatechartPackageImpl#getEntry()
101 * @generated
102 */
103 int ENTRY = 1;
104
105 /**
106 * The feature id for the '<em><b>Entry</b></em>' reference.
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 * @ordered
111 */
112 int ENTRY__ENTRY = 0;
113
114 /**
115 * The number of structural features of the '<em>Entry</em>' class.
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 * @ordered
120 */
121 int ENTRY_FEATURE_COUNT = 1;
122
123 /**
124 * The number of operations of the '<em>Entry</em>' class.
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 * @ordered
129 */
130 int ENTRY_OPERATION_COUNT = 0;
131
132 /**
133 * The meta object id for the '{@link simpleStatechart.impl.StatechartImpl <em>Statechart</em>}' class.
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @see simpleStatechart.impl.StatechartImpl
137 * @see simpleStatechart.impl.SimpleStatechartPackageImpl#getStatechart()
138 * @generated
139 */
140 int STATECHART = 2;
141
142 /**
143 * The feature id for the '<em><b>State</b></em>' containment reference list.
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 * @ordered
148 */
149 int STATECHART__STATE = 0;
150
151 /**
152 * The feature id for the '<em><b>Entry</b></em>' containment reference.
153 * <!-- begin-user-doc -->
154 * <!-- end-user-doc -->
155 * @generated
156 * @ordered
157 */
158 int STATECHART__ENTRY = 1;
159
160 /**
161 * The number of structural features of the '<em>Statechart</em>' class.
162 * <!-- begin-user-doc -->
163 * <!-- end-user-doc -->
164 * @generated
165 * @ordered
166 */
167 int STATECHART_FEATURE_COUNT = 2;
168
169 /**
170 * The number of operations of the '<em>Statechart</em>' class.
171 * <!-- begin-user-doc -->
172 * <!-- end-user-doc -->
173 * @generated
174 * @ordered
175 */
176 int STATECHART_OPERATION_COUNT = 0;
177
178
179 /**
180 * Returns the meta object for class '{@link simpleStatechart.State <em>State</em>}'.
181 * <!-- begin-user-doc -->
182 * <!-- end-user-doc -->
183 * @return the meta object for class '<em>State</em>'.
184 * @see simpleStatechart.State
185 * @generated
186 */
187 EClass getState();
188
189 /**
190 * Returns the meta object for the reference list '{@link simpleStatechart.State#getNext <em>Next</em>}'.
191 * <!-- begin-user-doc -->
192 * <!-- end-user-doc -->
193 * @return the meta object for the reference list '<em>Next</em>'.
194 * @see simpleStatechart.State#getNext()
195 * @see #getState()
196 * @generated
197 */
198 EReference getState_Next();
199
200 /**
201 * Returns the meta object for class '{@link simpleStatechart.Entry <em>Entry</em>}'.
202 * <!-- begin-user-doc -->
203 * <!-- end-user-doc -->
204 * @return the meta object for class '<em>Entry</em>'.
205 * @see simpleStatechart.Entry
206 * @generated
207 */
208 EClass getEntry();
209
210 /**
211 * Returns the meta object for the reference '{@link simpleStatechart.Entry#getEntry <em>Entry</em>}'.
212 * <!-- begin-user-doc -->
213 * <!-- end-user-doc -->
214 * @return the meta object for the reference '<em>Entry</em>'.
215 * @see simpleStatechart.Entry#getEntry()
216 * @see #getEntry()
217 * @generated
218 */
219 EReference getEntry_Entry();
220
221 /**
222 * Returns the meta object for class '{@link simpleStatechart.Statechart <em>Statechart</em>}'.
223 * <!-- begin-user-doc -->
224 * <!-- end-user-doc -->
225 * @return the meta object for class '<em>Statechart</em>'.
226 * @see simpleStatechart.Statechart
227 * @generated
228 */
229 EClass getStatechart();
230
231 /**
232 * Returns the meta object for the containment reference list '{@link simpleStatechart.Statechart#getState <em>State</em>}'.
233 * <!-- begin-user-doc -->
234 * <!-- end-user-doc -->
235 * @return the meta object for the containment reference list '<em>State</em>'.
236 * @see simpleStatechart.Statechart#getState()
237 * @see #getStatechart()
238 * @generated
239 */
240 EReference getStatechart_State();
241
242 /**
243 * Returns the meta object for the containment reference '{@link simpleStatechart.Statechart#getEntry <em>Entry</em>}'.
244 * <!-- begin-user-doc -->
245 * <!-- end-user-doc -->
246 * @return the meta object for the containment reference '<em>Entry</em>'.
247 * @see simpleStatechart.Statechart#getEntry()
248 * @see #getStatechart()
249 * @generated
250 */
251 EReference getStatechart_Entry();
252
253 /**
254 * Returns the factory that creates the instances of the model.
255 * <!-- begin-user-doc -->
256 * <!-- end-user-doc -->
257 * @return the factory that creates the instances of the model.
258 * @generated
259 */
260 SimpleStatechartFactory getSimpleStatechartFactory();
261
262 /**
263 * <!-- begin-user-doc -->
264 * Defines literals for the meta objects that represent
265 * <ul>
266 * <li>each class,</li>
267 * <li>each feature of each class,</li>
268 * <li>each operation of each class,</li>
269 * <li>each enum,</li>
270 * <li>and each data type</li>
271 * </ul>
272 * <!-- end-user-doc -->
273 * @generated
274 */
275 interface Literals {
276 /**
277 * The meta object literal for the '{@link simpleStatechart.impl.StateImpl <em>State</em>}' class.
278 * <!-- begin-user-doc -->
279 * <!-- end-user-doc -->
280 * @see simpleStatechart.impl.StateImpl
281 * @see simpleStatechart.impl.SimpleStatechartPackageImpl#getState()
282 * @generated
283 */
284 EClass STATE = eINSTANCE.getState();
285
286 /**
287 * The meta object literal for the '<em><b>Next</b></em>' reference list feature.
288 * <!-- begin-user-doc -->
289 * <!-- end-user-doc -->
290 * @generated
291 */
292 EReference STATE__NEXT = eINSTANCE.getState_Next();
293
294 /**
295 * The meta object literal for the '{@link simpleStatechart.impl.EntryImpl <em>Entry</em>}' class.
296 * <!-- begin-user-doc -->
297 * <!-- end-user-doc -->
298 * @see simpleStatechart.impl.EntryImpl
299 * @see simpleStatechart.impl.SimpleStatechartPackageImpl#getEntry()
300 * @generated
301 */
302 EClass ENTRY = eINSTANCE.getEntry();
303
304 /**
305 * The meta object literal for the '<em><b>Entry</b></em>' reference feature.
306 * <!-- begin-user-doc -->
307 * <!-- end-user-doc -->
308 * @generated
309 */
310 EReference ENTRY__ENTRY = eINSTANCE.getEntry_Entry();
311
312 /**
313 * The meta object literal for the '{@link simpleStatechart.impl.StatechartImpl <em>Statechart</em>}' class.
314 * <!-- begin-user-doc -->
315 * <!-- end-user-doc -->
316 * @see simpleStatechart.impl.StatechartImpl
317 * @see simpleStatechart.impl.SimpleStatechartPackageImpl#getStatechart()
318 * @generated
319 */
320 EClass STATECHART = eINSTANCE.getStatechart();
321
322 /**
323 * The meta object literal for the '<em><b>State</b></em>' containment reference list feature.
324 * <!-- begin-user-doc -->
325 * <!-- end-user-doc -->
326 * @generated
327 */
328 EReference STATECHART__STATE = eINSTANCE.getStatechart_State();
329
330 /**
331 * The meta object literal for the '<em><b>Entry</b></em>' containment reference feature.
332 * <!-- begin-user-doc -->
333 * <!-- end-user-doc -->
334 * @generated
335 */
336 EReference STATECHART__ENTRY = eINSTANCE.getStatechart_Entry();
337
338 }
339
340} //SimpleStatechartPackage
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/State.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/State.java
new file mode 100644
index 00000000..9f65b62b
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/State.java
@@ -0,0 +1,42 @@
1/**
2 */
3package simpleStatechart;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>State</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link simpleStatechart.State#getNext <em>Next</em>}</li>
19 * </ul>
20 *
21 * @see simpleStatechart.SimpleStatechartPackage#getState()
22 * @model
23 * @generated
24 */
25public interface State extends EObject {
26 /**
27 * Returns the value of the '<em><b>Next</b></em>' reference list.
28 * The list contents are of type {@link simpleStatechart.State}.
29 * <!-- begin-user-doc -->
30 * <p>
31 * If the meaning of the '<em>Next</em>' reference list isn't clear,
32 * there really should be more of a description here...
33 * </p>
34 * <!-- end-user-doc -->
35 * @return the value of the '<em>Next</em>' reference list.
36 * @see simpleStatechart.SimpleStatechartPackage#getState_Next()
37 * @model
38 * @generated
39 */
40 EList<State> getNext();
41
42} // State
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Statechart.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Statechart.java
new file mode 100644
index 00000000..10c6dfc1
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/Statechart.java
@@ -0,0 +1,69 @@
1/**
2 */
3package simpleStatechart;
4
5import org.eclipse.emf.common.util.EList;
6
7import org.eclipse.emf.ecore.EObject;
8
9/**
10 * <!-- begin-user-doc -->
11 * A representation of the model object '<em><b>Statechart</b></em>'.
12 * <!-- end-user-doc -->
13 *
14 * <p>
15 * The following features are supported:
16 * </p>
17 * <ul>
18 * <li>{@link simpleStatechart.Statechart#getState <em>State</em>}</li>
19 * <li>{@link simpleStatechart.Statechart#getEntry <em>Entry</em>}</li>
20 * </ul>
21 *
22 * @see simpleStatechart.SimpleStatechartPackage#getStatechart()
23 * @model
24 * @generated
25 */
26public interface Statechart extends EObject {
27 /**
28 * Returns the value of the '<em><b>State</b></em>' containment reference list.
29 * The list contents are of type {@link simpleStatechart.State}.
30 * <!-- begin-user-doc -->
31 * <p>
32 * If the meaning of the '<em>State</em>' containment reference list isn't clear,
33 * there really should be more of a description here...
34 * </p>
35 * <!-- end-user-doc -->
36 * @return the value of the '<em>State</em>' containment reference list.
37 * @see simpleStatechart.SimpleStatechartPackage#getStatechart_State()
38 * @model containment="true"
39 * @generated
40 */
41 EList<State> getState();
42
43 /**
44 * Returns the value of the '<em><b>Entry</b></em>' containment reference.
45 * <!-- begin-user-doc -->
46 * <p>
47 * If the meaning of the '<em>Entry</em>' containment reference isn't clear,
48 * there really should be more of a description here...
49 * </p>
50 * <!-- end-user-doc -->
51 * @return the value of the '<em>Entry</em>' containment reference.
52 * @see #setEntry(Entry)
53 * @see simpleStatechart.SimpleStatechartPackage#getStatechart_Entry()
54 * @model containment="true" required="true"
55 * @generated
56 */
57 Entry getEntry();
58
59 /**
60 * Sets the value of the '{@link simpleStatechart.Statechart#getEntry <em>Entry</em>}' containment reference.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @param value the new value of the '<em>Entry</em>' containment reference.
64 * @see #getEntry()
65 * @generated
66 */
67 void setEntry(Entry value);
68
69} // Statechart
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/EntryImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/EntryImpl.java
new file mode 100644
index 00000000..0e25ace3
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/EntryImpl.java
@@ -0,0 +1,157 @@
1/**
2 */
3package simpleStatechart.impl;
4
5import org.eclipse.emf.common.notify.Notification;
6
7import org.eclipse.emf.ecore.EClass;
8import org.eclipse.emf.ecore.InternalEObject;
9
10import org.eclipse.emf.ecore.impl.ENotificationImpl;
11import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
12
13import simpleStatechart.Entry;
14import simpleStatechart.SimpleStatechartPackage;
15import simpleStatechart.State;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model object '<em><b>Entry</b></em>'.
20 * <!-- end-user-doc -->
21 * <p>
22 * The following features are implemented:
23 * </p>
24 * <ul>
25 * <li>{@link simpleStatechart.impl.EntryImpl#getEntry <em>Entry</em>}</li>
26 * </ul>
27 *
28 * @generated
29 */
30public class EntryImpl extends MinimalEObjectImpl.Container implements Entry {
31 /**
32 * The cached value of the '{@link #getEntry() <em>Entry</em>}' reference.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @see #getEntry()
36 * @generated
37 * @ordered
38 */
39 protected State entry;
40
41 /**
42 * <!-- begin-user-doc -->
43 * <!-- end-user-doc -->
44 * @generated
45 */
46 protected EntryImpl() {
47 super();
48 }
49
50 /**
51 * <!-- begin-user-doc -->
52 * <!-- end-user-doc -->
53 * @generated
54 */
55 @Override
56 protected EClass eStaticClass() {
57 return SimpleStatechartPackage.Literals.ENTRY;
58 }
59
60 /**
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @generated
64 */
65 public State getEntry() {
66 if (entry != null && entry.eIsProxy()) {
67 InternalEObject oldEntry = (InternalEObject)entry;
68 entry = (State)eResolveProxy(oldEntry);
69 if (entry != oldEntry) {
70 if (eNotificationRequired())
71 eNotify(new ENotificationImpl(this, Notification.RESOLVE, SimpleStatechartPackage.ENTRY__ENTRY, oldEntry, entry));
72 }
73 }
74 return entry;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 public State basicGetEntry() {
83 return entry;
84 }
85
86 /**
87 * <!-- begin-user-doc -->
88 * <!-- end-user-doc -->
89 * @generated
90 */
91 public void setEntry(State newEntry) {
92 State oldEntry = entry;
93 entry = newEntry;
94 if (eNotificationRequired())
95 eNotify(new ENotificationImpl(this, Notification.SET, SimpleStatechartPackage.ENTRY__ENTRY, oldEntry, entry));
96 }
97
98 /**
99 * <!-- begin-user-doc -->
100 * <!-- end-user-doc -->
101 * @generated
102 */
103 @Override
104 public Object eGet(int featureID, boolean resolve, boolean coreType) {
105 switch (featureID) {
106 case SimpleStatechartPackage.ENTRY__ENTRY:
107 if (resolve) return getEntry();
108 return basicGetEntry();
109 }
110 return super.eGet(featureID, resolve, coreType);
111 }
112
113 /**
114 * <!-- begin-user-doc -->
115 * <!-- end-user-doc -->
116 * @generated
117 */
118 @Override
119 public void eSet(int featureID, Object newValue) {
120 switch (featureID) {
121 case SimpleStatechartPackage.ENTRY__ENTRY:
122 setEntry((State)newValue);
123 return;
124 }
125 super.eSet(featureID, newValue);
126 }
127
128 /**
129 * <!-- begin-user-doc -->
130 * <!-- end-user-doc -->
131 * @generated
132 */
133 @Override
134 public void eUnset(int featureID) {
135 switch (featureID) {
136 case SimpleStatechartPackage.ENTRY__ENTRY:
137 setEntry((State)null);
138 return;
139 }
140 super.eUnset(featureID);
141 }
142
143 /**
144 * <!-- begin-user-doc -->
145 * <!-- end-user-doc -->
146 * @generated
147 */
148 @Override
149 public boolean eIsSet(int featureID) {
150 switch (featureID) {
151 case SimpleStatechartPackage.ENTRY__ENTRY:
152 return entry != null;
153 }
154 return super.eIsSet(featureID);
155 }
156
157} //EntryImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartFactoryImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartFactoryImpl.java
new file mode 100644
index 00000000..421aee1c
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartFactoryImpl.java
@@ -0,0 +1,117 @@
1/**
2 */
3package simpleStatechart.impl;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EObject;
7import org.eclipse.emf.ecore.EPackage;
8
9import org.eclipse.emf.ecore.impl.EFactoryImpl;
10
11import org.eclipse.emf.ecore.plugin.EcorePlugin;
12
13import simpleStatechart.*;
14
15/**
16 * <!-- begin-user-doc -->
17 * An implementation of the model <b>Factory</b>.
18 * <!-- end-user-doc -->
19 * @generated
20 */
21public class SimpleStatechartFactoryImpl extends EFactoryImpl implements SimpleStatechartFactory {
22 /**
23 * Creates the default factory implementation.
24 * <!-- begin-user-doc -->
25 * <!-- end-user-doc -->
26 * @generated
27 */
28 public static SimpleStatechartFactory init() {
29 try {
30 SimpleStatechartFactory theSimpleStatechartFactory = (SimpleStatechartFactory)EPackage.Registry.INSTANCE.getEFactory(SimpleStatechartPackage.eNS_URI);
31 if (theSimpleStatechartFactory != null) {
32 return theSimpleStatechartFactory;
33 }
34 }
35 catch (Exception exception) {
36 EcorePlugin.INSTANCE.log(exception);
37 }
38 return new SimpleStatechartFactoryImpl();
39 }
40
41 /**
42 * Creates an instance of the factory.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 public SimpleStatechartFactoryImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 public EObject create(EClass eClass) {
58 switch (eClass.getClassifierID()) {
59 case SimpleStatechartPackage.STATE: return createState();
60 case SimpleStatechartPackage.ENTRY: return createEntry();
61 case SimpleStatechartPackage.STATECHART: return createStatechart();
62 default:
63 throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
64 }
65 }
66
67 /**
68 * <!-- begin-user-doc -->
69 * <!-- end-user-doc -->
70 * @generated
71 */
72 public State createState() {
73 StateImpl state = new StateImpl();
74 return state;
75 }
76
77 /**
78 * <!-- begin-user-doc -->
79 * <!-- end-user-doc -->
80 * @generated
81 */
82 public Entry createEntry() {
83 EntryImpl entry = new EntryImpl();
84 return entry;
85 }
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 public Statechart createStatechart() {
93 StatechartImpl statechart = new StatechartImpl();
94 return statechart;
95 }
96
97 /**
98 * <!-- begin-user-doc -->
99 * <!-- end-user-doc -->
100 * @generated
101 */
102 public SimpleStatechartPackage getSimpleStatechartPackage() {
103 return (SimpleStatechartPackage)getEPackage();
104 }
105
106 /**
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @deprecated
110 * @generated
111 */
112 @Deprecated
113 public static SimpleStatechartPackage getPackage() {
114 return SimpleStatechartPackage.eINSTANCE;
115 }
116
117} //SimpleStatechartFactoryImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartPackageImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartPackageImpl.java
new file mode 100644
index 00000000..556157e4
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/SimpleStatechartPackageImpl.java
@@ -0,0 +1,252 @@
1/**
2 */
3package simpleStatechart.impl;
4
5import org.eclipse.emf.ecore.EClass;
6import org.eclipse.emf.ecore.EPackage;
7import org.eclipse.emf.ecore.EReference;
8
9import org.eclipse.emf.ecore.impl.EPackageImpl;
10
11import simpleStatechart.Entry;
12import simpleStatechart.SimpleStatechartFactory;
13import simpleStatechart.SimpleStatechartPackage;
14import simpleStatechart.State;
15import simpleStatechart.Statechart;
16
17/**
18 * <!-- begin-user-doc -->
19 * An implementation of the model <b>Package</b>.
20 * <!-- end-user-doc -->
21 * @generated
22 */
23public class SimpleStatechartPackageImpl extends EPackageImpl implements SimpleStatechartPackage {
24 /**
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 private EClass stateEClass = null;
30
31 /**
32 * <!-- begin-user-doc -->
33 * <!-- end-user-doc -->
34 * @generated
35 */
36 private EClass entryEClass = null;
37
38 /**
39 * <!-- begin-user-doc -->
40 * <!-- end-user-doc -->
41 * @generated
42 */
43 private EClass statechartEClass = null;
44
45 /**
46 * Creates an instance of the model <b>Package</b>, registered with
47 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
48 * package URI value.
49 * <p>Note: the correct way to create the package is via the static
50 * factory method {@link #init init()}, which also performs
51 * initialization of the package, or returns the registered package,
52 * if one already exists.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see org.eclipse.emf.ecore.EPackage.Registry
56 * @see simpleStatechart.SimpleStatechartPackage#eNS_URI
57 * @see #init()
58 * @generated
59 */
60 private SimpleStatechartPackageImpl() {
61 super(eNS_URI, SimpleStatechartFactory.eINSTANCE);
62 }
63
64 /**
65 * <!-- begin-user-doc -->
66 * <!-- end-user-doc -->
67 * @generated
68 */
69 private static boolean isInited = false;
70
71 /**
72 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
73 *
74 * <p>This method is used to initialize {@link SimpleStatechartPackage#eINSTANCE} when that field is accessed.
75 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
76 * <!-- begin-user-doc -->
77 * <!-- end-user-doc -->
78 * @see #eNS_URI
79 * @see #createPackageContents()
80 * @see #initializePackageContents()
81 * @generated
82 */
83 public static SimpleStatechartPackage init() {
84 if (isInited) return (SimpleStatechartPackage)EPackage.Registry.INSTANCE.getEPackage(SimpleStatechartPackage.eNS_URI);
85
86 // Obtain or create and register package
87 Object registeredSimpleStatechartPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
88 SimpleStatechartPackageImpl theSimpleStatechartPackage = registeredSimpleStatechartPackage instanceof SimpleStatechartPackageImpl ? (SimpleStatechartPackageImpl)registeredSimpleStatechartPackage : new SimpleStatechartPackageImpl();
89
90 isInited = true;
91
92 // Create package meta-data objects
93 theSimpleStatechartPackage.createPackageContents();
94
95 // Initialize created meta-data
96 theSimpleStatechartPackage.initializePackageContents();
97
98 // Mark meta-data to indicate it can't be changed
99 theSimpleStatechartPackage.freeze();
100
101 // Update the registry and return the package
102 EPackage.Registry.INSTANCE.put(SimpleStatechartPackage.eNS_URI, theSimpleStatechartPackage);
103 return theSimpleStatechartPackage;
104 }
105
106 /**
107 * <!-- begin-user-doc -->
108 * <!-- end-user-doc -->
109 * @generated
110 */
111 public EClass getState() {
112 return stateEClass;
113 }
114
115 /**
116 * <!-- begin-user-doc -->
117 * <!-- end-user-doc -->
118 * @generated
119 */
120 public EReference getState_Next() {
121 return (EReference)stateEClass.getEStructuralFeatures().get(0);
122 }
123
124 /**
125 * <!-- begin-user-doc -->
126 * <!-- end-user-doc -->
127 * @generated
128 */
129 public EClass getEntry() {
130 return entryEClass;
131 }
132
133 /**
134 * <!-- begin-user-doc -->
135 * <!-- end-user-doc -->
136 * @generated
137 */
138 public EReference getEntry_Entry() {
139 return (EReference)entryEClass.getEStructuralFeatures().get(0);
140 }
141
142 /**
143 * <!-- begin-user-doc -->
144 * <!-- end-user-doc -->
145 * @generated
146 */
147 public EClass getStatechart() {
148 return statechartEClass;
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 public EReference getStatechart_State() {
157 return (EReference)statechartEClass.getEStructuralFeatures().get(0);
158 }
159
160 /**
161 * <!-- begin-user-doc -->
162 * <!-- end-user-doc -->
163 * @generated
164 */
165 public EReference getStatechart_Entry() {
166 return (EReference)statechartEClass.getEStructuralFeatures().get(1);
167 }
168
169 /**
170 * <!-- begin-user-doc -->
171 * <!-- end-user-doc -->
172 * @generated
173 */
174 public SimpleStatechartFactory getSimpleStatechartFactory() {
175 return (SimpleStatechartFactory)getEFactoryInstance();
176 }
177
178 /**
179 * <!-- begin-user-doc -->
180 * <!-- end-user-doc -->
181 * @generated
182 */
183 private boolean isCreated = false;
184
185 /**
186 * Creates the meta-model objects for the package. This method is
187 * guarded to have no affect on any invocation but its first.
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 public void createPackageContents() {
193 if (isCreated) return;
194 isCreated = true;
195
196 // Create classes and their features
197 stateEClass = createEClass(STATE);
198 createEReference(stateEClass, STATE__NEXT);
199
200 entryEClass = createEClass(ENTRY);
201 createEReference(entryEClass, ENTRY__ENTRY);
202
203 statechartEClass = createEClass(STATECHART);
204 createEReference(statechartEClass, STATECHART__STATE);
205 createEReference(statechartEClass, STATECHART__ENTRY);
206 }
207
208 /**
209 * <!-- begin-user-doc -->
210 * <!-- end-user-doc -->
211 * @generated
212 */
213 private boolean isInitialized = false;
214
215 /**
216 * Complete the initialization of the package and its meta-model. This
217 * method is guarded to have no affect on any invocation but its first.
218 * <!-- begin-user-doc -->
219 * <!-- end-user-doc -->
220 * @generated
221 */
222 public void initializePackageContents() {
223 if (isInitialized) return;
224 isInitialized = true;
225
226 // Initialize package
227 setName(eNAME);
228 setNsPrefix(eNS_PREFIX);
229 setNsURI(eNS_URI);
230
231 // Create type parameters
232
233 // Set bounds for type parameters
234
235 // Add supertypes to classes
236
237 // Initialize classes, features, and operations; add parameters
238 initEClass(stateEClass, State.class, "State", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
239 initEReference(getState_Next(), this.getState(), null, "next", null, 0, -1, State.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
240
241 initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
242 initEReference(getEntry_Entry(), this.getState(), null, "entry", null, 0, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
243
244 initEClass(statechartEClass, Statechart.class, "Statechart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
245 initEReference(getStatechart_State(), this.getState(), null, "state", null, 0, -1, Statechart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
246 initEReference(getStatechart_Entry(), this.getEntry(), null, "entry", null, 1, 1, Statechart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
247
248 // Create resource
249 createResource(eNS_URI);
250 }
251
252} //SimpleStatechartPackageImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StateImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StateImpl.java
new file mode 100644
index 00000000..52b97a9d
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StateImpl.java
@@ -0,0 +1,133 @@
1/**
2 */
3package simpleStatechart.impl;
4
5import java.util.Collection;
6
7import org.eclipse.emf.common.util.EList;
8
9import org.eclipse.emf.ecore.EClass;
10
11import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
12
13import org.eclipse.emf.ecore.util.EObjectResolvingEList;
14
15import simpleStatechart.SimpleStatechartPackage;
16import simpleStatechart.State;
17
18/**
19 * <!-- begin-user-doc -->
20 * An implementation of the model object '<em><b>State</b></em>'.
21 * <!-- end-user-doc -->
22 * <p>
23 * The following features are implemented:
24 * </p>
25 * <ul>
26 * <li>{@link simpleStatechart.impl.StateImpl#getNext <em>Next</em>}</li>
27 * </ul>
28 *
29 * @generated
30 */
31public class StateImpl extends MinimalEObjectImpl.Container implements State {
32 /**
33 * The cached value of the '{@link #getNext() <em>Next</em>}' reference list.
34 * <!-- begin-user-doc -->
35 * <!-- end-user-doc -->
36 * @see #getNext()
37 * @generated
38 * @ordered
39 */
40 protected EList<State> next;
41
42 /**
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @generated
46 */
47 protected StateImpl() {
48 super();
49 }
50
51 /**
52 * <!-- begin-user-doc -->
53 * <!-- end-user-doc -->
54 * @generated
55 */
56 @Override
57 protected EClass eStaticClass() {
58 return SimpleStatechartPackage.Literals.STATE;
59 }
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 public EList<State> getNext() {
67 if (next == null) {
68 next = new EObjectResolvingEList<State>(State.class, this, SimpleStatechartPackage.STATE__NEXT);
69 }
70 return next;
71 }
72
73 /**
74 * <!-- begin-user-doc -->
75 * <!-- end-user-doc -->
76 * @generated
77 */
78 @Override
79 public Object eGet(int featureID, boolean resolve, boolean coreType) {
80 switch (featureID) {
81 case SimpleStatechartPackage.STATE__NEXT:
82 return getNext();
83 }
84 return super.eGet(featureID, resolve, coreType);
85 }
86
87 /**
88 * <!-- begin-user-doc -->
89 * <!-- end-user-doc -->
90 * @generated
91 */
92 @SuppressWarnings("unchecked")
93 @Override
94 public void eSet(int featureID, Object newValue) {
95 switch (featureID) {
96 case SimpleStatechartPackage.STATE__NEXT:
97 getNext().clear();
98 getNext().addAll((Collection<? extends State>)newValue);
99 return;
100 }
101 super.eSet(featureID, newValue);
102 }
103
104 /**
105 * <!-- begin-user-doc -->
106 * <!-- end-user-doc -->
107 * @generated
108 */
109 @Override
110 public void eUnset(int featureID) {
111 switch (featureID) {
112 case SimpleStatechartPackage.STATE__NEXT:
113 getNext().clear();
114 return;
115 }
116 super.eUnset(featureID);
117 }
118
119 /**
120 * <!-- begin-user-doc -->
121 * <!-- end-user-doc -->
122 * @generated
123 */
124 @Override
125 public boolean eIsSet(int featureID) {
126 switch (featureID) {
127 case SimpleStatechartPackage.STATE__NEXT:
128 return next != null && !next.isEmpty();
129 }
130 return super.eIsSet(featureID);
131 }
132
133} //StateImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StatechartImpl.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StatechartImpl.java
new file mode 100644
index 00000000..cef2ee61
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/impl/StatechartImpl.java
@@ -0,0 +1,221 @@
1/**
2 */
3package simpleStatechart.impl;
4
5import java.util.Collection;
6
7import org.eclipse.emf.common.notify.Notification;
8import org.eclipse.emf.common.notify.NotificationChain;
9
10import org.eclipse.emf.common.util.EList;
11
12import org.eclipse.emf.ecore.EClass;
13import org.eclipse.emf.ecore.InternalEObject;
14
15import org.eclipse.emf.ecore.impl.ENotificationImpl;
16import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
17
18import org.eclipse.emf.ecore.util.EObjectContainmentEList;
19import org.eclipse.emf.ecore.util.InternalEList;
20
21import simpleStatechart.Entry;
22import simpleStatechart.SimpleStatechartPackage;
23import simpleStatechart.State;
24import simpleStatechart.Statechart;
25
26/**
27 * <!-- begin-user-doc -->
28 * An implementation of the model object '<em><b>Statechart</b></em>'.
29 * <!-- end-user-doc -->
30 * <p>
31 * The following features are implemented:
32 * </p>
33 * <ul>
34 * <li>{@link simpleStatechart.impl.StatechartImpl#getState <em>State</em>}</li>
35 * <li>{@link simpleStatechart.impl.StatechartImpl#getEntry <em>Entry</em>}</li>
36 * </ul>
37 *
38 * @generated
39 */
40public class StatechartImpl extends MinimalEObjectImpl.Container implements Statechart {
41 /**
42 * The cached value of the '{@link #getState() <em>State</em>}' containment reference list.
43 * <!-- begin-user-doc -->
44 * <!-- end-user-doc -->
45 * @see #getState()
46 * @generated
47 * @ordered
48 */
49 protected EList<State> state;
50
51 /**
52 * The cached value of the '{@link #getEntry() <em>Entry</em>}' containment reference.
53 * <!-- begin-user-doc -->
54 * <!-- end-user-doc -->
55 * @see #getEntry()
56 * @generated
57 * @ordered
58 */
59 protected Entry entry;
60
61 /**
62 * <!-- begin-user-doc -->
63 * <!-- end-user-doc -->
64 * @generated
65 */
66 protected StatechartImpl() {
67 super();
68 }
69
70 /**
71 * <!-- begin-user-doc -->
72 * <!-- end-user-doc -->
73 * @generated
74 */
75 @Override
76 protected EClass eStaticClass() {
77 return SimpleStatechartPackage.Literals.STATECHART;
78 }
79
80 /**
81 * <!-- begin-user-doc -->
82 * <!-- end-user-doc -->
83 * @generated
84 */
85 public EList<State> getState() {
86 if (state == null) {
87 state = new EObjectContainmentEList<State>(State.class, this, SimpleStatechartPackage.STATECHART__STATE);
88 }
89 return state;
90 }
91
92 /**
93 * <!-- begin-user-doc -->
94 * <!-- end-user-doc -->
95 * @generated
96 */
97 public Entry getEntry() {
98 return entry;
99 }
100
101 /**
102 * <!-- begin-user-doc -->
103 * <!-- end-user-doc -->
104 * @generated
105 */
106 public NotificationChain basicSetEntry(Entry newEntry, NotificationChain msgs) {
107 Entry oldEntry = entry;
108 entry = newEntry;
109 if (eNotificationRequired()) {
110 ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SimpleStatechartPackage.STATECHART__ENTRY, oldEntry, newEntry);
111 if (msgs == null) msgs = notification; else msgs.add(notification);
112 }
113 return msgs;
114 }
115
116 /**
117 * <!-- begin-user-doc -->
118 * <!-- end-user-doc -->
119 * @generated
120 */
121 public void setEntry(Entry newEntry) {
122 if (newEntry != entry) {
123 NotificationChain msgs = null;
124 if (entry != null)
125 msgs = ((InternalEObject)entry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SimpleStatechartPackage.STATECHART__ENTRY, null, msgs);
126 if (newEntry != null)
127 msgs = ((InternalEObject)newEntry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SimpleStatechartPackage.STATECHART__ENTRY, null, msgs);
128 msgs = basicSetEntry(newEntry, msgs);
129 if (msgs != null) msgs.dispatch();
130 }
131 else if (eNotificationRequired())
132 eNotify(new ENotificationImpl(this, Notification.SET, SimpleStatechartPackage.STATECHART__ENTRY, newEntry, newEntry));
133 }
134
135 /**
136 * <!-- begin-user-doc -->
137 * <!-- end-user-doc -->
138 * @generated
139 */
140 @Override
141 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
142 switch (featureID) {
143 case SimpleStatechartPackage.STATECHART__STATE:
144 return ((InternalEList<?>)getState()).basicRemove(otherEnd, msgs);
145 case SimpleStatechartPackage.STATECHART__ENTRY:
146 return basicSetEntry(null, msgs);
147 }
148 return super.eInverseRemove(otherEnd, featureID, msgs);
149 }
150
151 /**
152 * <!-- begin-user-doc -->
153 * <!-- end-user-doc -->
154 * @generated
155 */
156 @Override
157 public Object eGet(int featureID, boolean resolve, boolean coreType) {
158 switch (featureID) {
159 case SimpleStatechartPackage.STATECHART__STATE:
160 return getState();
161 case SimpleStatechartPackage.STATECHART__ENTRY:
162 return getEntry();
163 }
164 return super.eGet(featureID, resolve, coreType);
165 }
166
167 /**
168 * <!-- begin-user-doc -->
169 * <!-- end-user-doc -->
170 * @generated
171 */
172 @SuppressWarnings("unchecked")
173 @Override
174 public void eSet(int featureID, Object newValue) {
175 switch (featureID) {
176 case SimpleStatechartPackage.STATECHART__STATE:
177 getState().clear();
178 getState().addAll((Collection<? extends State>)newValue);
179 return;
180 case SimpleStatechartPackage.STATECHART__ENTRY:
181 setEntry((Entry)newValue);
182 return;
183 }
184 super.eSet(featureID, newValue);
185 }
186
187 /**
188 * <!-- begin-user-doc -->
189 * <!-- end-user-doc -->
190 * @generated
191 */
192 @Override
193 public void eUnset(int featureID) {
194 switch (featureID) {
195 case SimpleStatechartPackage.STATECHART__STATE:
196 getState().clear();
197 return;
198 case SimpleStatechartPackage.STATECHART__ENTRY:
199 setEntry((Entry)null);
200 return;
201 }
202 super.eUnset(featureID);
203 }
204
205 /**
206 * <!-- begin-user-doc -->
207 * <!-- end-user-doc -->
208 * @generated
209 */
210 @Override
211 public boolean eIsSet(int featureID) {
212 switch (featureID) {
213 case SimpleStatechartPackage.STATECHART__STATE:
214 return state != null && !state.isEmpty();
215 case SimpleStatechartPackage.STATECHART__ENTRY:
216 return entry != null;
217 }
218 return super.eIsSet(featureID);
219 }
220
221} //StatechartImpl
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartAdapterFactory.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartAdapterFactory.java
new file mode 100644
index 00000000..908a7f5f
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartAdapterFactory.java
@@ -0,0 +1,156 @@
1/**
2 */
3package simpleStatechart.util;
4
5import org.eclipse.emf.common.notify.Adapter;
6import org.eclipse.emf.common.notify.Notifier;
7
8import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
9
10import org.eclipse.emf.ecore.EObject;
11
12import simpleStatechart.*;
13
14/**
15 * <!-- begin-user-doc -->
16 * The <b>Adapter Factory</b> for the model.
17 * It provides an adapter <code>createXXX</code> method for each class of the model.
18 * <!-- end-user-doc -->
19 * @see simpleStatechart.SimpleStatechartPackage
20 * @generated
21 */
22public class SimpleStatechartAdapterFactory extends AdapterFactoryImpl {
23 /**
24 * The cached model package.
25 * <!-- begin-user-doc -->
26 * <!-- end-user-doc -->
27 * @generated
28 */
29 protected static SimpleStatechartPackage modelPackage;
30
31 /**
32 * Creates an instance of the adapter factory.
33 * <!-- begin-user-doc -->
34 * <!-- end-user-doc -->
35 * @generated
36 */
37 public SimpleStatechartAdapterFactory() {
38 if (modelPackage == null) {
39 modelPackage = SimpleStatechartPackage.eINSTANCE;
40 }
41 }
42
43 /**
44 * Returns whether this factory is applicable for the type of the object.
45 * <!-- begin-user-doc -->
46 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
47 * <!-- end-user-doc -->
48 * @return whether this factory is applicable for the type of the object.
49 * @generated
50 */
51 @Override
52 public boolean isFactoryForType(Object object) {
53 if (object == modelPackage) {
54 return true;
55 }
56 if (object instanceof EObject) {
57 return ((EObject)object).eClass().getEPackage() == modelPackage;
58 }
59 return false;
60 }
61
62 /**
63 * The switch that delegates to the <code>createXXX</code> methods.
64 * <!-- begin-user-doc -->
65 * <!-- end-user-doc -->
66 * @generated
67 */
68 protected SimpleStatechartSwitch<Adapter> modelSwitch =
69 new SimpleStatechartSwitch<Adapter>() {
70 @Override
71 public Adapter caseState(State object) {
72 return createStateAdapter();
73 }
74 @Override
75 public Adapter caseEntry(Entry object) {
76 return createEntryAdapter();
77 }
78 @Override
79 public Adapter caseStatechart(Statechart object) {
80 return createStatechartAdapter();
81 }
82 @Override
83 public Adapter defaultCase(EObject object) {
84 return createEObjectAdapter();
85 }
86 };
87
88 /**
89 * Creates an adapter for the <code>target</code>.
90 * <!-- begin-user-doc -->
91 * <!-- end-user-doc -->
92 * @param target the object to adapt.
93 * @return the adapter for the <code>target</code>.
94 * @generated
95 */
96 @Override
97 public Adapter createAdapter(Notifier target) {
98 return modelSwitch.doSwitch((EObject)target);
99 }
100
101
102 /**
103 * Creates a new adapter for an object of class '{@link simpleStatechart.State <em>State</em>}'.
104 * <!-- begin-user-doc -->
105 * This default implementation returns null so that we can easily ignore cases;
106 * it's useful to ignore a case when inheritance will catch all the cases anyway.
107 * <!-- end-user-doc -->
108 * @return the new adapter.
109 * @see simpleStatechart.State
110 * @generated
111 */
112 public Adapter createStateAdapter() {
113 return null;
114 }
115
116 /**
117 * Creates a new adapter for an object of class '{@link simpleStatechart.Entry <em>Entry</em>}'.
118 * <!-- begin-user-doc -->
119 * This default implementation returns null so that we can easily ignore cases;
120 * it's useful to ignore a case when inheritance will catch all the cases anyway.
121 * <!-- end-user-doc -->
122 * @return the new adapter.
123 * @see simpleStatechart.Entry
124 * @generated
125 */
126 public Adapter createEntryAdapter() {
127 return null;
128 }
129
130 /**
131 * Creates a new adapter for an object of class '{@link simpleStatechart.Statechart <em>Statechart</em>}'.
132 * <!-- begin-user-doc -->
133 * This default implementation returns null so that we can easily ignore cases;
134 * it's useful to ignore a case when inheritance will catch all the cases anyway.
135 * <!-- end-user-doc -->
136 * @return the new adapter.
137 * @see simpleStatechart.Statechart
138 * @generated
139 */
140 public Adapter createStatechartAdapter() {
141 return null;
142 }
143
144 /**
145 * Creates a new adapter for the default case.
146 * <!-- begin-user-doc -->
147 * This default implementation returns null.
148 * <!-- end-user-doc -->
149 * @return the new adapter.
150 * @generated
151 */
152 public Adapter createEObjectAdapter() {
153 return null;
154 }
155
156} //SimpleStatechartAdapterFactory
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartSwitch.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartSwitch.java
new file mode 100644
index 00000000..30c60e74
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/src/simpleStatechart/util/SimpleStatechartSwitch.java
@@ -0,0 +1,152 @@
1/**
2 */
3package simpleStatechart.util;
4
5import org.eclipse.emf.ecore.EObject;
6import org.eclipse.emf.ecore.EPackage;
7
8import org.eclipse.emf.ecore.util.Switch;
9
10import simpleStatechart.*;
11
12/**
13 * <!-- begin-user-doc -->
14 * The <b>Switch</b> for the model's inheritance hierarchy.
15 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
16 * to invoke the <code>caseXXX</code> method for each class of the model,
17 * starting with the actual class of the object
18 * and proceeding up the inheritance hierarchy
19 * until a non-null result is returned,
20 * which is the result of the switch.
21 * <!-- end-user-doc -->
22 * @see simpleStatechart.SimpleStatechartPackage
23 * @generated
24 */
25public class SimpleStatechartSwitch<T> extends Switch<T> {
26 /**
27 * The cached model package
28 * <!-- begin-user-doc -->
29 * <!-- end-user-doc -->
30 * @generated
31 */
32 protected static SimpleStatechartPackage modelPackage;
33
34 /**
35 * Creates an instance of the switch.
36 * <!-- begin-user-doc -->
37 * <!-- end-user-doc -->
38 * @generated
39 */
40 public SimpleStatechartSwitch() {
41 if (modelPackage == null) {
42 modelPackage = SimpleStatechartPackage.eINSTANCE;
43 }
44 }
45
46 /**
47 * Checks whether this is a switch for the given package.
48 * <!-- begin-user-doc -->
49 * <!-- end-user-doc -->
50 * @param ePackage the package in question.
51 * @return whether this is a switch for the given package.
52 * @generated
53 */
54 @Override
55 protected boolean isSwitchFor(EPackage ePackage) {
56 return ePackage == modelPackage;
57 }
58
59 /**
60 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @return the first non-null result returned by a <code>caseXXX</code> call.
64 * @generated
65 */
66 @Override
67 protected T doSwitch(int classifierID, EObject theEObject) {
68 switch (classifierID) {
69 case SimpleStatechartPackage.STATE: {
70 State state = (State)theEObject;
71 T result = caseState(state);
72 if (result == null) result = defaultCase(theEObject);
73 return result;
74 }
75 case SimpleStatechartPackage.ENTRY: {
76 Entry entry = (Entry)theEObject;
77 T result = caseEntry(entry);
78 if (result == null) result = defaultCase(theEObject);
79 return result;
80 }
81 case SimpleStatechartPackage.STATECHART: {
82 Statechart statechart = (Statechart)theEObject;
83 T result = caseStatechart(statechart);
84 if (result == null) result = defaultCase(theEObject);
85 return result;
86 }
87 default: return defaultCase(theEObject);
88 }
89 }
90
91 /**
92 * Returns the result of interpreting the object as an instance of '<em>State</em>'.
93 * <!-- begin-user-doc -->
94 * This implementation returns null;
95 * returning a non-null result will terminate the switch.
96 * <!-- end-user-doc -->
97 * @param object the target of the switch.
98 * @return the result of interpreting the object as an instance of '<em>State</em>'.
99 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
100 * @generated
101 */
102 public T caseState(State object) {
103 return null;
104 }
105
106 /**
107 * Returns the result of interpreting the object as an instance of '<em>Entry</em>'.
108 * <!-- begin-user-doc -->
109 * This implementation returns null;
110 * returning a non-null result will terminate the switch.
111 * <!-- end-user-doc -->
112 * @param object the target of the switch.
113 * @return the result of interpreting the object as an instance of '<em>Entry</em>'.
114 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
115 * @generated
116 */
117 public T caseEntry(Entry object) {
118 return null;
119 }
120
121 /**
122 * Returns the result of interpreting the object as an instance of '<em>Statechart</em>'.
123 * <!-- begin-user-doc -->
124 * This implementation returns null;
125 * returning a non-null result will terminate the switch.
126 * <!-- end-user-doc -->
127 * @param object the target of the switch.
128 * @return the result of interpreting the object as an instance of '<em>Statechart</em>'.
129 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
130 * @generated
131 */
132 public T caseStatechart(Statechart object) {
133 return null;
134 }
135
136 /**
137 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
138 * <!-- begin-user-doc -->
139 * This implementation returns null;
140 * returning a non-null result will terminate the switch, but this is the last case anyway.
141 * <!-- end-user-doc -->
142 * @param object the target of the switch.
143 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
144 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
145 * @generated
146 */
147 @Override
148 public T defaultCase(EObject object) {
149 return null;
150 }
151
152} //SimpleStatechartSwitch
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin
new file mode 100644
index 00000000..50bd73de
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin
Binary files differ
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore
new file mode 100644
index 00000000..b5da4aad
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore
@@ -0,0 +1 @@
/.CSERposterSample.java._trace
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.java b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.java
new file mode 100644
index 00000000..b67728e8
--- /dev/null
+++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/CSERposterSample.java
@@ -0,0 +1,109 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.examples;
2
3import com.google.common.collect.Iterables;
4import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.YakindummPackage;
5import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic;
6import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration;
7import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace;
8import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor;
9import hu.bme.mit.inf.dslreasoner.logic.model.builder.TracedOutput;
10import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
11import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2PartialInterpretation;
12import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.AbstractNodeDescriptor;
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.Neighbourhood2Gml;
14import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.NeighbourhoodWithTraces;
15import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood.PartialInterpretation2ImmutableTypeLattice;
16import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation;
17import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml;
18import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace;
19import java.io.PrintWriter;
20import java.util.Collections;
21import java.util.List;
22import java.util.Map;
23import java.util.Set;
24import linkedList.LinkedListPackage;
25import org.eclipse.emf.common.util.EList;
26import org.eclipse.emf.ecore.EAttribute;
27import org.eclipse.emf.ecore.EClass;
28import org.eclipse.emf.ecore.EEnum;
29import org.eclipse.emf.ecore.EEnumLiteral;
30import org.eclipse.emf.ecore.EObject;
31import org.eclipse.emf.ecore.EPackage;
32import org.eclipse.emf.ecore.EReference;
33import org.eclipse.emf.ecore.resource.Resource;
34import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
35import org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine;
36import org.eclipse.xtend2.lib.StringConcatenation;
37import org.eclipse.xtext.xbase.lib.Exceptions;
38import org.eclipse.xtext.xbase.lib.Functions.Function1;
39import org.eclipse.xtext.xbase.lib.InputOutput;
40import org.eclipse.xtext.xbase.lib.IterableExtensions;
41import simpleStatechart.SimpleStatechartPackage;
42
43@SuppressWarnings("all")
44public class CSERposterSample {
45 private final static InstanceModel2PartialInterpretation partialInterpretation2Logic = new InstanceModel2PartialInterpretation();
46
47 private final static PartialInterpretation2ImmutableTypeLattice neighbourhoodComputer = new PartialInterpretation2ImmutableTypeLattice();
48
49 private final static Ecore2Logic ecore2Logic = new Ecore2Logic();
50
51 private final static PartialInterpretation2Gml partialVisualizer = new PartialInterpretation2Gml();
52
53 private final static Neighbourhood2Gml neighbourhoodVisualizer = new Neighbourhood2Gml();
54
55 private final static int depth = 1;
56
57 private final static String REALISTIC = "simpleSCRealistic";
58
59 private final static String IRREALISTIC = "simpleSCIrrealistic";
60
61 public static void main(final String[] args) {
62 try {
63 Map<String, Object> _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
64 XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl();
65 _extensionToFactoryMap.put("*", _xMIResourceFactoryImpl);
66 YakindummPackage.eINSTANCE.eClass();
67 LinkedListPackage.eINSTANCE.eClass();
68 SimpleStatechartPackage.eINSTANCE.eClass();
69 ReteEngine.class.getClass();
70 final String outputs = "outputs";
71 final String instModName = CSERposterSample.REALISTIC;
72 StringConcatenation _builder = new StringConcatenation();
73 _builder.append("resources");
74 final FileSystemWorkspace workspace = new FileSystemWorkspace(_builder.toString(), "");
75 final EObject model = workspace.<EObject>readModel(EObject.class, (instModName + ".xmi"));
76 final EPackage pckg = model.eClass().getEPackage();
77 List<EClass> _list = IterableExtensions.<EClass>toList(Iterables.<EClass>filter(pckg.getEClassifiers(), EClass.class));
78 Set<EClass> _emptySet = Collections.<EClass>emptySet();
79 List<EEnum> _list_1 = IterableExtensions.<EEnum>toList(Iterables.<EEnum>filter(pckg.getEClassifiers(), EEnum.class));
80 final Function1<EEnum, EList<EEnumLiteral>> _function = (EEnum it) -> {
81 return it.getELiterals();
82 };
83 List<EEnumLiteral> _list_2 = IterableExtensions.<EEnumLiteral>toList(Iterables.<EEnumLiteral>concat(IterableExtensions.<EEnum, EList<EEnumLiteral>>map(Iterables.<EEnum>filter(pckg.getEClassifiers(), EEnum.class), _function)));
84 final Function1<EClass, EList<EReference>> _function_1 = (EClass it) -> {
85 return it.getEReferences();
86 };
87 List<EReference> _list_3 = IterableExtensions.<EReference>toList(Iterables.<EReference>concat(IterableExtensions.<EClass, EList<EReference>>map(Iterables.<EClass>filter(pckg.getEClassifiers(), EClass.class), _function_1)));
88 final Function1<EClass, EList<EAttribute>> _function_2 = (EClass it) -> {
89 return it.getEAttributes();
90 };
91 List<EAttribute> _list_4 = IterableExtensions.<EAttribute>toList(Iterables.<EAttribute>concat(IterableExtensions.<EClass, EList<EAttribute>>map(Iterables.<EClass>filter(pckg.getEClassifiers(), EClass.class), _function_2)));
92 final EcoreMetamodelDescriptor metamodel = new EcoreMetamodelDescriptor(_list, _emptySet,
93 false, _list_1, _list_2, _list_3, _list_4);
94 Ecore2LogicConfiguration _ecore2LogicConfiguration = new Ecore2LogicConfiguration();
95 final TracedOutput<LogicProblem, Ecore2Logic_Trace> metamodelTransformationOutput = CSERposterSample.ecore2Logic.transformMetamodel(metamodel, _ecore2LogicConfiguration);
96 final PartialInterpretation partialModelOutput = CSERposterSample.partialInterpretation2Logic.transform(metamodelTransformationOutput, model.eResource(), false);
97 final PrintWriter writer = new PrintWriter((((outputs + "//") + instModName) + "MODEL.gml"));
98 writer.print(CSERposterSample.partialVisualizer.transform(partialModelOutput));
99 writer.close();
100 final NeighbourhoodWithTraces<Map<? extends AbstractNodeDescriptor, Integer>, AbstractNodeDescriptor> hood = CSERposterSample.neighbourhoodComputer.createRepresentation(partialModelOutput, CSERposterSample.depth, Integer.MAX_VALUE, Integer.MAX_VALUE);
101 final PrintWriter w2 = new PrintWriter(((((outputs + "/") + instModName) + Integer.valueOf(CSERposterSample.depth)) + "NEIGHBOURHOOD.gml"));
102 w2.print(CSERposterSample.neighbourhoodVisualizer.transform(hood, partialModelOutput));
103 w2.close();
104 InputOutput.<String>println("visualization done");
105 } catch (Throwable _e) {
106 throw Exceptions.sneakyThrow(_e);
107 }
108 }
109}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF
index 23e3ad13..acaf466f 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/META-INF/MANIFEST.MF
@@ -4,23 +4,23 @@ Bundle-Name: Logic2viatra
4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery;singleton:=true 4Bundle-SymbolicName: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery;singleton:=true
5Bundle-Version: 1.0.0.qualifier 5Bundle-Version: 1.0.0.qualifier
6Export-Package: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra, 6Export-Package: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra,
7 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns, 7 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns,
8 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries 8 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.queries
9Require-Bundle: hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0", 9Require-Bundle: hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0",
10 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0", 10 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage;bundle-version="1.0.0",
11 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", 11 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
12 hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0", 12 hu.bme.mit.inf.dslreasoner.viatra2logic;bundle-version="1.0.0",
13 com.google.guava, 13 com.google.guava,
14 org.eclipse.xtext.xbase.lib, 14 org.eclipse.xtext.xbase.lib,
15 org.eclipse.xtend.lib, 15 org.eclipse.xtend.lib,
16 org.eclipse.xtend.lib.macro, 16 org.eclipse.xtend.lib.macro,
17 org.eclipse.viatra.query.runtime;bundle-version="1.5.0", 17 org.eclipse.viatra.query.runtime;bundle-version="1.5.0",
18 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.5.0", 18 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.5.0",
19 org.eclipse.viatra.query.patternlanguage.emf;bundle-version="1.5.0", 19 org.eclipse.viatra.query.patternlanguage.emf;bundle-version="1.5.0",
20 com.google.inject;bundle-version="3.0.0", 20 com.google.inject;bundle-version="3.0.0",
21 org.eclipse.xtext;bundle-version="2.10.0", 21 org.eclipse.xtext;bundle-version="2.10.0",
22 org.eclipse.viatra.transformation.runtime.emf;bundle-version="1.5.0", 22 org.eclipse.viatra.transformation.runtime.emf;bundle-version="1.5.0",
23 org.eclipse.xtext.xbase;bundle-version="2.10.0" 23 org.eclipse.xtext.xbase;bundle-version="2.10.0"
24Bundle-RequiredExecutionEnvironment: JavaSE-1.8 24Bundle-RequiredExecutionEnvironment: JavaSE-1.8
25Import-Package: org.apache.log4j 25Import-Package: org.apache.log4j
26Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery 26Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatraquery
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ScopePropagator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ScopePropagator.xtend
index 38633c07..d1b29f01 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ScopePropagator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ScopePropagator.xtend
@@ -63,9 +63,12 @@ class ScopePropagator {
63 def public propagateAdditionToType(PartialTypeInterpratation t) { 63 def public propagateAdditionToType(PartialTypeInterpratation t) {
64// println('''Adding to «(t as PartialComplexTypeInterpretation).interpretationOf.name»''') 64// println('''Adding to «(t as PartialComplexTypeInterpretation).interpretationOf.name»''')
65 val targetScope = type2Scope.get(t) 65 val targetScope = type2Scope.get(t)
66 targetScope.removeOne 66 if(targetScope != null){
67 val sups = superScopes.get(targetScope) 67 targetScope.removeOne
68 sups.forEach[removeOne] 68 val sups = superScopes.get(targetScope)
69 sups.forEach[removeOne]
70 }
71
69 if(this.partialInterpretation.minNewElements > 0) { 72 if(this.partialInterpretation.minNewElements > 0) {
70 this.partialInterpretation.minNewElements = this.partialInterpretation.minNewElements-1 73 this.partialInterpretation.minNewElements = this.partialInterpretation.minNewElements-1
71 } 74 }
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Neighbourhood2Gml.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Neighbourhood2Gml.xtend
new file mode 100644
index 00000000..6179c838
--- /dev/null
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/neighbourhood/Neighbourhood2Gml.xtend
@@ -0,0 +1,337 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.neighbourhood
2
3import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement
4import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
5import java.util.ArrayList
6import java.util.HashMap
7import java.util.HashSet
8import java.util.List
9import java.util.Map
10import java.util.Set
11import java.util.logging.Handler
12
13import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
14
15class Neighbourhood2Gml {
16
17 static val neighbourhoodComputer = new PartialInterpretation2ImmutableTypeLattice
18 val protected nodeNameSize = 14
19 val protected nodeHeight = 40
20 val protected borderDistance = 6
21 val protected ratio = 11.0 / 20.0
22 var protected depth = 0
23
24 def public transform(NeighbourhoodWithTraces n, PartialInterpretation pm) {
25
26 val Map<Object, Integer> relevantObjectToID = new HashMap
27 val List<CharSequence> fullNodeText = newArrayList
28 val List<CharSequence> fullEdgeText = newArrayList
29 val List<CharSequence> allEdgesText = newArrayList
30 val Map<AbstractNodeDescriptor, List<FurtherNodeDescriptor>> children = new HashMap
31
32 // TODO these should not be hashmaps, as a given node can have multiple sameNamed edges to different
33 val Map<IncomingRelation, Object> edgeNameIn2targetNode = new HashMap
34 val Map<OutgoingRelation, Object> edgeNameOut2targetNode = new HashMap
35 val Map<IncomingRelation, List<Integer>> edgeName2inMultips = new HashMap
36 val Map<OutgoingRelation, List<Integer>> edgeName2outMultips = new HashMap
37
38 val modRep = n.modelRepresentation as HashMap
39 // Store node text
40 for (nodeKey : modRep.keySet) {
41 fullNodeText.add(transformNode(nodeKey, modRep, relevantObjectToID))
42 }
43
44 // calculate deeper neighbourhood
45 calculateDepth(modRep.keySet.get(0))
46 val deeperNeighbourhood = neighbourhoodComputer.createRepresentation(pm, depth + 1, Integer.MAX_VALUE,
47 Integer.MAX_VALUE)
48 val deepModRep = deeperNeighbourhood.modelRepresentation as HashMap
49
50 // Associate each deepNode to their parent
51 for (deepNodeKey : deepModRep.keySet) {
52 val deepNodeDesc = deepNodeKey as FurtherNodeDescriptor
53 val parentDesc = deepNodeDesc.previousRepresentation as AbstractNodeDescriptor
54 if (relevantObjectToID.keySet.contains(parentDesc)) {
55 if (children.keySet.contains(parentDesc)) {
56 parentDesc.lookup(children).add(deepNodeDesc)
57 } else {
58 children.put(parentDesc, newArrayList(deepNodeDesc))
59 }
60 }
61 }
62
63 // edge transforming
64 for (currentNode : children.keySet) {
65 println(currentNode)
66 transformEdge(edgeNameIn2targetNode, edgeNameOut2targetNode, edgeName2inMultips, edgeName2outMultips,
67 allEdgesText, currentNode, relevantObjectToID, children)
68 for (edgeText : allEdgesText) {
69 fullEdgeText.add(edgeText)
70 }
71 allEdgesText.clear
72 }
73
74// mapPrinter(children)
75 '''
76 graph
77 [
78 «FOR nodeText : fullNodeText»
79 «nodeText»
80 «ENDFOR»
81 «FOR edgeText : fullEdgeText»
82 «edgeText»
83 «ENDFOR»
84 ]
85 '''.toString
86 }
87
88 protected def transformEdge(Map<IncomingRelation, Object> edgeNameIn2targetNode,
89 Map<OutgoingRelation, Object> edgeNameOut2targetNode, Map<IncomingRelation, List<Integer>> edgeName2inMultips,
90 Map<OutgoingRelation, List<Integer>> edgeName2outMultips, List<CharSequence> allEdgesText,
91 AbstractNodeDescriptor currentNode, Map<Object, Integer> relevantObjectToID,
92 Map<AbstractNodeDescriptor, List<FurtherNodeDescriptor>> children) {
93
94 edgeNameIn2targetNode.clear
95 edgeNameOut2targetNode.clear
96 edgeName2inMultips.clear
97 edgeName2outMultips.clear
98 val List<Object> modifiedEdgeNames = newArrayList
99
100 val List<FurtherNodeDescriptor> subNodes = currentNode.lookup(children)
101 for (subNode : subNodes) {
102// println(subNode)
103// mapPrinter(subNode.outgoingEdges)
104// println("---------")
105// mapPrinter(subNode.incomingEdges)
106// println
107// println
108 // handling outgoing edges
109 for (outEdge : subNode.outgoingEdges.keySet) {
110 val edgeName = (outEdge as OutgoingRelation)
111 val edgePointingTo = (outEdge as OutgoingRelation).to
112 val edgeOutMultip = outEdge.lookup(subNode.outgoingEdges) as Integer
113
114 // add multiplicity and target
115 if (edgeName2outMultips.containsKey(edgeName)) {
116 edgeName.lookup(edgeName2outMultips).add(edgeOutMultip)
117 } else {
118 edgeName2outMultips.put(edgeName, newArrayList(edgeOutMultip))
119 }
120 edgeNameOut2targetNode.put(edgeName, edgePointingTo)
121
122 }
123
124 }
125
126 // handling incoming edges
127 for (outEdgeTarget : edgeNameOut2targetNode.values) {
128 // currentNode = sourceParent
129 for (subNode : (outEdgeTarget as AbstractNodeDescriptor).lookup(children)) {
130 for (inEdge : subNode.incomingEdges.keySet) {
131 val edgeName = (inEdge as IncomingRelation)
132 val edgePointingFrom = (inEdge as IncomingRelation).from
133 val edgeInMultip = inEdge.lookup(subNode.incomingEdges) as Integer
134
135 if (edgePointingFrom.equals(currentNode)) {
136 if (edgeName2inMultips.containsKey(edgeName)) {
137 edgeName.lookup(edgeName2inMultips).add(edgeInMultip)
138 } else {
139 edgeName2inMultips.put(edgeName, newArrayList(edgeInMultip))
140 modifiedEdgeNames.add(edgeName)
141 }
142 edgeNameIn2targetNode.put(edgeName, edgePointingFrom)
143 }
144// edgeName2targetNode.put(edgeName, edgePointingFrom)
145 }
146 }
147
148// mapPrinter(edgeName2inMultips)
149 // fill in the 0 multiplicities (INCOMING)
150 for (edgeSoFar : modifiedEdgeNames) {
151 val edgeAsRelation = edgeSoFar as IncomingRelation
152 var inEdgesNum = edgeAsRelation.lookup(edgeName2inMultips).size
153 val targetNode = outEdgeTarget as AbstractNodeDescriptor
154 val targetChildrenNum = targetNode.lookup(children).size
155 println("in " + edgeSoFar + "=>" + inEdgesNum + " != " + outEdgeTarget + "=>" + targetChildrenNum)
156 while (inEdgesNum != targetChildrenNum) {
157// println("in" + inEdgesNum + "!=" + targetChildrenNum)
158 edgeAsRelation.lookup(edgeName2inMultips).add(0)
159 inEdgesNum++
160 }
161 }
162 modifiedEdgeNames.clear
163
164 }
165
166 mapPrinter(edgeName2outMultips)
167
168 // fill in the 0 multiplicities (OUTGOING)
169 for (edge : edgeName2outMultips.keySet) {
170 // handling outgoing edges
171 var outEdgesNum = edge.lookup(edgeName2outMultips).size
172 val sourceChildrenNum = currentNode.lookup(children).size
173
174 println("out " + edge + "=>" + outEdgesNum + " != " + currentNode + "=>" + sourceChildrenNum)
175 while (outEdgesNum != sourceChildrenNum) {
176 edge.lookup(edgeName2outMultips).add(0)
177 outEdgesNum++
178 }
179 }
180 println("xxxxxxxx")
181 mapPrinter(edgeNameIn2targetNode)
182 mapPrinter(edgeNameOut2targetNode)
183
184
185
186 updateEdgeList(currentNode, relevantObjectToID, edgeNameIn2targetNode, edgeNameOut2targetNode, edgeName2inMultips, edgeName2outMultips,
187 allEdgesText)
188
189 }
190
191 def updateEdgeList(AbstractNodeDescriptor currentNode, Map<Object, Integer> relevantObjectToID,
192 Map<IncomingRelation, Object> edgeNameIn2targetNode,
193 Map<OutgoingRelation, Object> edgeNameOut2targetNode,
194 Map<IncomingRelation, List<Integer>> edgeName2inMultips,
195 Map<OutgoingRelation, List<Integer>> edgeName2outMultips, List<CharSequence> allEdgesTexts) {
196
197 for (outEdge : edgeNameOut2targetNode.keySet) {
198 // TODO
199 val sourceID = currentNode.lookup(relevantObjectToID)
200 val targetNode = outEdge.lookup(edgeNameOut2targetNode)
201 val targetID = targetNode.lookup(relevantObjectToID)
202 val edgeName = outEdge.type
203
204 //finding corresponding Incoming edge
205 var correspInEdgeSet = edgeNameIn2targetNode.keySet.filter[type.equals(edgeName) && lookup(edgeNameIn2targetNode).equals(currentNode)]
206 println("yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy")
207 println(currentNode)
208 println(outEdge)
209 println(targetNode)
210 println(edgeNameIn2targetNode)
211 println(correspInEdgeSet.size)
212 val correspInEdge = correspInEdgeSet.get(0)
213
214
215 allEdgesTexts.add(
216 '''
217 edge
218 [
219 source «sourceID»
220 target «targetID»
221 label "«edgeName»"
222 graphics
223 [
224 fill "#000000"
225 targetArrow "standard"
226 Line
227 [
228 ]
229 ]
230 LabelGraphics
231 [
232 text "«edgeName»"
233 fontSize 12
234 fontName "Dialog"
235 configuration "AutoFlippingLabel"
236 model "six_pos"
237 position "head"
238 ]
239 «IF edgeName2outMultips.containsKey(outEdge)»
240 LabelGraphics
241 [
242 text "«outEdge.lookup(edgeName2outMultips).toString»"
243 fontSize 12
244 fontName "Dialog"
245 configuration "AutoFlippingLabel"
246 model "six_pos"
247 position "stail"
248 ]
249 «ENDIF»
250 «IF edgeName2inMultips.containsKey(correspInEdge)»
251 LabelGraphics
252 [
253 text "«correspInEdge.lookup(edgeName2inMultips).toString»"
254 fontSize 12
255 fontName "Dialog"
256 configuration "AutoFlippingLabel"
257 model "six_pos"
258 position "ttail"
259 ]
260 «ENDIF»
261 ]
262 '''
263 )
264 }
265 }
266
267 def calculateDepth(Object node) {
268 var keyDescriptor = node
269
270 while (!keyDescriptor.class.equals(LocalNodeDescriptor)) {
271 keyDescriptor = (keyDescriptor as FurtherNodeDescriptor).previousRepresentation
272 depth++
273 }
274
275 }
276
277 def protected transformNode(Object nodeKey, Map<Object, Integer> modRep, Map<Object, Integer> objectToID) {
278
279 var topKeyDescriptor = nodeKey
280
281 while (!topKeyDescriptor.class.equals(LocalNodeDescriptor)) {
282 topKeyDescriptor = (topKeyDescriptor as FurtherNodeDescriptor).previousRepresentation
283 }
284
285 var keyType = (topKeyDescriptor as LocalNodeDescriptor).types
286
287 if (!keyType.empty) {
288 val id = objectToID.size
289 objectToID.put(nodeKey, id)
290 '''
291 node
292 [
293 id «id»
294 graphics
295 [
296 w «((keyType.toString.length+4)*nodeNameSize + 2 * borderDistance)* ratio»
297 h «nodeHeight»
298 type "roundrectangle"
299 fill "#FFCC00"
300 outline "#000000"
301 ]
302 LabelGraphics
303 [
304 ]
305 LabelGraphics
306 [
307 text "«keyType.toString» («nodeKey.lookup(modRep)»)"
308 fontSize «nodeNameSize»
309 fontName "Dialog"
310 ]
311 ]
312 '''
313 }
314 }
315
316 def protected transformEdges(FurtherNodeDescriptor deepNodeKey, Map<Object, Integer> deepModRep,
317 Map<Object, Integer> objectToID) {
318 print(depth)
319 println(deepNodeKey.incomingEdges)
320 println(deepNodeKey.outgoingEdges)
321 // get
322 }
323
324 def mapPrinter(Map x) {
325 for (m : x.keySet) {
326 println("New Entry --")
327 println(" key = " + m)
328 println(" value = " + m.lookup(x))
329 }
330 }
331
332 def printer2(Set<FurtherNodeDescriptor> descriptors) {
333 for (x : descriptors) {
334 println(x)
335 }
336 }
337}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF
index 2a271acf..7077ae34 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/META-INF/MANIFEST.MF
@@ -17,7 +17,8 @@ Require-Bundle: hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
17 org.eclipse.viatra.query.runtime;bundle-version="1.5.0", 17 org.eclipse.viatra.query.runtime;bundle-version="1.5.0",
18 org.eclipse.viatra.dse;bundle-version="0.20.0", 18 org.eclipse.viatra.dse;bundle-version="0.20.0",
19 org.eclipse.emf.ecore.edit;bundle-version="2.9.0", 19 org.eclipse.emf.ecore.edit;bundle-version="2.9.0",
20 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.7.0" 20 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.7.0",
21 ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator;bundle-version="1.0.0"
21Bundle-RequiredExecutionEnvironment: JavaSE-1.8 22Bundle-RequiredExecutionEnvironment: JavaSE-1.8
22Import-Package: org.apache.log4j 23Import-Package: org.apache.log4j
23Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner 24Automatic-Module-Name: hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
index 6639e5f3..92aefb56 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend
@@ -1,5 +1,6 @@
1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner 1package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner
2 2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric
3import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel 4import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel
4import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner 5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner
5import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException 6import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasonerException
@@ -27,12 +28,11 @@ import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
27import java.util.List 28import java.util.List
28import java.util.Map 29import java.util.Map
29import org.eclipse.emf.ecore.EObject 30import org.eclipse.emf.ecore.EObject
31import org.eclipse.emf.ecore.util.EcoreUtil
30import org.eclipse.viatra.dse.api.DesignSpaceExplorer 32import org.eclipse.viatra.dse.api.DesignSpaceExplorer
31import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel 33import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel
32import org.eclipse.viatra.dse.solutionstore.SolutionStore 34import org.eclipse.viatra.dse.solutionstore.SolutionStore
33import org.eclipse.viatra.dse.statecode.IStateCoderFactory 35import org.eclipse.viatra.dse.statecode.IStateCoderFactory
34import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.SolutionStoreWithDiversityDescriptor
35import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse.DiversityGranularity
36 36
37class ViatraReasoner extends LogicReasoner{ 37class ViatraReasoner extends LogicReasoner{
38 val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser() 38 val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser()
@@ -61,11 +61,12 @@ class ViatraReasoner extends LogicReasoner{
61 61
62 62
63 val emptySolution = initialiser.initialisePartialInterpretation(problem,viatraConfig.typeScopes).output 63 val emptySolution = initialiser.initialisePartialInterpretation(problem,viatraConfig.typeScopes).output
64
64 if((viatraConfig.documentationLevel == DocumentationLevel::FULL || viatraConfig.documentationLevel == DocumentationLevel::NORMAL) && workspace !== null) { 65 if((viatraConfig.documentationLevel == DocumentationLevel::FULL || viatraConfig.documentationLevel == DocumentationLevel::NORMAL) && workspace !== null) {
65 workspace.writeModel(emptySolution,"init.partialmodel") 66 workspace.writeModel(emptySolution,"init.partialmodel")
66 } 67 }
67 emptySolution.problemConainer = problem 68 emptySolution.problemConainer = problem
68 69 val emptySolutionCopy = EcoreUtil.copy(emptySolution)
69 val ScopePropagator scopePropagator = new ScopePropagator(emptySolution) 70 val ScopePropagator scopePropagator = new ScopePropagator(emptySolution)
70 scopePropagator.propagateAllScopeConstraints 71 scopePropagator.propagateAllScopeConstraints
71 72
@@ -129,6 +130,12 @@ class ViatraReasoner extends LogicReasoner{
129 val solverTime = System.nanoTime - solverStartTime 130 val solverTime = System.nanoTime - solverStartTime
130 viatraConfig.progressMonitor.workedSearchFinished 131 viatraConfig.progressMonitor.workedSearchFinished
131 132
133 //find trajectory to each solution
134 if(viatraConfig.documentationLevel == DocumentationLevel.NONE){
135 PartialInterpretationMetric.initPaths();
136 PartialInterpretationMetric.outputTrajectories(emptySolutionCopy, dse.solutions.toList());
137 }
138
132 //additionalMatches = strategy.solutionStoreWithCopy.additionalMatches 139 //additionalMatches = strategy.solutionStoreWithCopy.additionalMatches
133 val statistics = createStatistics => [ 140 val statistics = createStatistics => [
134 //it.solverTime = viatraConfig.runtimeLimit 141 //it.solverTime = viatraConfig.runtimeLimit
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java
index 60f46033..81b551fb 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java
@@ -14,9 +14,11 @@ import java.util.Arrays;
14import java.util.Collection; 14import java.util.Collection;
15import java.util.Collections; 15import java.util.Collections;
16import java.util.Comparator; 16import java.util.Comparator;
17import java.util.HashMap;
17import java.util.Iterator; 18import java.util.Iterator;
18import java.util.LinkedList; 19import java.util.LinkedList;
19import java.util.List; 20import java.util.List;
21import java.util.Map;
20import java.util.PriorityQueue; 22import java.util.PriorityQueue;
21import java.util.Random; 23import java.util.Random;
22 24
@@ -32,6 +34,8 @@ import org.eclipse.viatra.query.runtime.api.IQuerySpecification;
32import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; 34import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine;
33import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; 35import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher;
34 36
37import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.MetricDistanceGroup;
38import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.PartialInterpretationMetric;
35import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel; 39import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel;
36import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; 40import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner;
37import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; 41import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem;
@@ -188,8 +192,25 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
188// } 192// }
189 193
190 List<Object> activationIds = selectActivation(); 194 List<Object> activationIds = selectActivation();
195 PartialInterpretation model = (PartialInterpretation) context.getModel();
196 System.out.println(model.getNewElements().size() );
197 PartialInterpretationMetric.initPaths();
198 if(model.getNewElements().size() >= 10) {
199 Map<Object, Double> valueMap = new HashMap<Object, Double>();
200 System.out.println(PartialInterpretationMetric.calculateMetricDistance(model).getMPCDistance());
201 for(Object id : activationIds) {
202 context.executeAcitvationId(id);
203 model = (PartialInterpretation) context.getModel();
204 MetricDistanceGroup g = PartialInterpretationMetric.calculateMetricDistance(model);
205 valueMap.put(id, g.getMPCDistance());
206 context.backtrack();
207 }
208 Collections.sort(activationIds, Comparator.comparing(li -> valueMap.get(li)));
209 }
210
211
191 Iterator<Object> iterator = activationIds.iterator(); 212 Iterator<Object> iterator = activationIds.iterator();
192 213
193 while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) { 214 while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) {
194 final Object nextActivation = iterator.next(); 215 final Object nextActivation = iterator.next();
195// if (!iterator.hasNext()) { 216// if (!iterator.hasNext()) {
@@ -198,7 +219,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
198// } 219// }
199 logger.debug("Executing new activation: " + nextActivation); 220 logger.debug("Executing new activation: " + nextActivation);
200 context.executeAcitvationId(nextActivation); 221 context.executeAcitvationId(nextActivation);
201 222
202 visualiseCurrentState(); 223 visualiseCurrentState();
203// for(ViatraQueryMatcher<? extends IPatternMatch> matcher : matchers) { 224// for(ViatraQueryMatcher<? extends IPatternMatch> matcher : matchers) {
204// System.out.println(matcher.getPatternName()); 225// System.out.println(matcher.getPatternName());
@@ -209,13 +230,16 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
209// System.out.println("---------"); 230// System.out.println("---------");
210// } 231// }
211 232
233 //calculate the metrics for each state
234// logCurrentStateMetric();
235
212 boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness); 236 boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness);
213 if(consistencyCheckResult == true) { continue mainLoop; } 237 if(consistencyCheckResult == true) { continue mainLoop; }
214 238
215 if (context.isCurrentStateAlreadyTraversed()) { 239/* if (context.isCurrentStateAlreadyTraversed()) {
216 logger.info("The new state is already visited."); 240// logger.info("The new state is already visited.");
217 context.backtrack(); 241// context.backtrack();
218 } else if (!context.checkGlobalConstraints()) { 242// } else*/ if (!context.checkGlobalConstraints()) {
219 logger.debug("Global contraint is not satisifed."); 243 logger.debug("Global contraint is not satisifed.");
220 context.backtrack(); 244 context.backtrack();
221 } else { 245 } else {
@@ -248,7 +272,6 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
248 } 272 }
249 } 273 }
250 } 274 }
251
252 logger.debug("State is fully traversed."); 275 logger.debug("State is fully traversed.");
253 trajectoiresToExplore.remove(currentTrajectoryWithFittness); 276 trajectoiresToExplore.remove(currentTrajectoryWithFittness);
254 currentTrajectoryWithFittness = null; 277 currentTrajectoryWithFittness = null;
@@ -309,6 +332,15 @@ public class BestFirstStrategyForModelGeneration implements IStrategy {
309 return trajectoiresToExplore.element(); 332 return trajectoiresToExplore.element();
310 } 333 }
311 } 334 }
335
336// private void logCurrentStateMetric() {
337// if(this.configuration.documentationLevel != DocumentationLevel.NONE || workspace == null) {
338// return;
339// }
340//
341// PartialInterpretation interpretation = (PartialInterpretation)context.getModel(); //pattern.get("interpretation");
342// PartialInterpretationMetric.calculateMetric(interpretation, "debug/metric/" + context.getModel().hashCode(), context.getCurrentStateId().toString());
343// }
312 344
313 public void visualiseCurrentState() { 345 public void visualiseCurrentState() {
314 PartialInterpretationVisualiser partialInterpretatioVisualiser = configuration.debugCongiguration.partialInterpretatioVisualiser; 346 PartialInterpretationVisualiser partialInterpretatioVisualiser = configuration.debugCongiguration.partialInterpretatioVisualiser;