From 78c806eebaf5b9d50b08768062755f0044cf107f Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Sun, 20 Aug 2017 01:55:38 +0200 Subject: Alloy Examples --- .../initialModels/ecore.xmi | 6 +++ .../initialModels/fs.xmi | 3 ++ .../run/FileSystemInconsistencyDetector.xtend | 53 ++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi create mode 100644 Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run') diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi new file mode 100644 index 00000000..867e5049 --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/ecore.xmi @@ -0,0 +1,6 @@ + + diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi new file mode 100644 index 00000000..56879c1a --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/initialModels/fs.xmi @@ -0,0 +1,3 @@ + + diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend new file mode 100644 index 00000000..e79a6261 --- /dev/null +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/FileSystemInconsistencyDetector.xtend @@ -0,0 +1,53 @@ +package hu.bme.mit.inf.dslreasoner.run + +import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation +import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ModelGenerationMethodBasedGlobalConstraint +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethod +import org.eclipse.viatra.dse.base.ThreadContext + +class FileSystemInconsistencyDetector extends ModelGenerationMethodBasedGlobalConstraint { + var PartialInterpretation partialInterpretation + + //unfinishedLowerMultiplicity_root_reference_FileSystem + //unfinishedLowerMultiplicity_filesystems_reference_Model + var ViatraQueryMatcher filesystem + var ViatraQueryMatcher root + + new(ModelGenerationMethod method) { + super(method) + } + + override init(ThreadContext context) { + partialInterpretation = context.model as PartialInterpretation + + try{ + this.filesystem = method.allPatterns.filter[ + it.fullyQualifiedName.equals("unfinishedLowerMultiplicity_root_reference_FileSystem") + ].head.getMatcher(context.queryEngine) + + this.root = method.allPatterns.filter[ + it.fullyQualifiedName.equals("unfinishedLowerMultiplicity_filesystems_reference_Model") + ].head.getMatcher(context.queryEngine) + + } catch(Exception e) { } + } + + override checkGlobalConstraint(ThreadContext context) { + var requiredNewObjects = + filesystem.countMatches*2 + + root.countMatches + val availableNewObjects = partialInterpretation.maxNewElements + val res = availableNewObjects >= requiredNewObjects + //println('''[«availableNewObjects» >= «requiredNewObjects»] = «res»''') + return res + } + + override createNew() { + return new FileSystemInconsistencyDetector(this.method) + } + + override getName() { + this.class.simpleName + } +} -- cgit v1.2.3-54-g00ecf