From 07073f142e982a1b9fb08255c8eb74d18dbf7a34 Mon Sep 17 00:00:00 2001 From: ArenBabikian Date: Wed, 16 Jan 2019 01:41:23 -0500 Subject: FAM MM transformation works --- .../ecse/dslreasoner/vampire/test/DslTest.xtend | 103 ++++++++ .../dslreasoner/vampire/test/MedicalSystem.xtend | 76 ++++++ .../ecse/dslreasoner/vampire/test/SimpleRun.xtend | 275 +++++++++------------ .../dslreasoner/vampire/test/VampireTest.xtend | 2 +- 4 files changed, 295 insertions(+), 161 deletions(-) create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/DslTest.xtend create mode 100644 Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.xtend (limited to 'Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse') diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/DslTest.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/DslTest.xtend new file mode 100644 index 00000000..a8b4dcfb --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/DslTest.xtend @@ -0,0 +1,103 @@ +package ca.mcgill.ecse.dslreasoner.vampire.test + +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import functionalarchitecture.FunctionalarchitecturePackage +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration +import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult +import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore +import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace +import java.util.List +import org.eclipse.emf.ecore.EAttribute +import org.eclipse.emf.ecore.EClass +import org.eclipse.emf.ecore.EEnum +import org.eclipse.emf.ecore.EEnumLiteral +import org.eclipse.emf.ecore.EObject +import org.eclipse.emf.ecore.EReference +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl + +class DslTest { + def static void main(String[] args) { + val inputs = new FileSystemWorkspace('''initialModels/''', "") + val workspace = new FileSystemWorkspace('''outputDslModels/''', "") + workspace.initAndClear + + println("Input and output workspaces are created") + + val metamodel = loadMetamodel() + val partialModel = loadPartialModel(inputs) +// val queries = loadQueries(metamodel) + + println("DSL loaded") + + val Ecore2Logic ecore2Logic = new Ecore2Logic + val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) + val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) + val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic + + val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) +// val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) +// val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration) + + val logicProblem = modelGenerationProblem.output +// val logicProblem = modelExtensionProblem.output +// val logicProblem = validModelExtensionProblem.output + + + println("Problem created") + + var LogicResult solution + var LogicReasoner reasoner + //* + reasoner = new VampireSolver + val vampireConfig = new VampireSolverConfiguration => [ + //add configuration things, in config file first + it.writeToFile = false + ] + + solution = reasoner.solve(logicProblem, vampireConfig, workspace) + + println("Problem solved") + + + } + + def private static loadMetamodel() { + //FAM + val pckg = FunctionalarchitecturePackage.eINSTANCE + val List classes = pckg.EClassifiers.filter(EClass).toList + val List enums = pckg.EClassifiers.filter(EEnum).toList + val List literals = enums.map[getELiterals].flatten.toList + val List references = classes.map[getEReferences].flatten.toList + val List attributes = classes.map[getEAttributes].flatten.toList + return new EcoreMetamodelDescriptor(classes,#{},false,enums,literals,references,attributes) + } + + def private static loadPartialModel(ReasonerWorkspace inputs) { + Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); + inputs.readModel(EObject,"FunctionalArchitectureModel.xmi").eResource.allContents.toList +// inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList + } + +// def private static loadQueries(EcoreMetamodelDescriptor metamodel) { +// val i = hu.bme.mit.inf.dslreasoner.domains.transima.fam.patterns.Pattern.instance +// val patterns = i.specifications.toList +// val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet +// val derivedFeatures = new LinkedHashMap +// derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head) +// derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head) +// val res = new ViatraQuerySetDescriptor( +// patterns, +// wfPatterns, +// derivedFeatures +// ) +// return res +// } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.xtend new file mode 100644 index 00000000..ccc17617 --- /dev/null +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/MedicalSystem.xtend @@ -0,0 +1,76 @@ +package ca.mcgill.ecse.dslreasoner.vampire.test + +import ca.mcgill.ecse.dslreasoner.VampireLanguageStandaloneSetup +import hu.bme.mit.inf.dslreasoner.ecore2logic.ecore2logicannotations.Ecore2logicannotationsPackage +import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner +import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage +import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem +import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicproblemPackage +import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolver +import ca.mcgill.ecse.dslreasoner.vampire.reasoner.VampireSolverConfiguration +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireLanguageFactory +import ca.mcgill.ecse.dslreasoner.vampireLanguage.VampireModel +import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.Viatra2LogicAnnotationsPackage +import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace +import java.util.Collections +import org.eclipse.emf.common.util.URI +import org.eclipse.emf.ecore.resource.Resource +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl + +class MedicalSystem { + def static void main(String[] args) { + init() + val workspace = new FileSystemWorkspace('''outputModels/''',"") + workspace.initAndClear + val root = load() + println("Problem Loaded") + +// val rs = new ResourceSetImpl +// val logRes = rs.createResource(URI.createFileURI("vampireMidel.tptp")) +// +// var vampireModel = VampireLanguageFactory.eINSTANCE.createVampireModel() + + + + var LogicResult solution + var LogicReasoner reasoner + + reasoner = new VampireSolver + val vampireConfig = new VampireSolverConfiguration => [ + //add configuration things, in config file first + it.writeToFile = false + ] + + solution = reasoner.solve(root, vampireConfig, workspace) + +// vampireModel = solution +// +// logRes.contents.add(vampireModel) +// logRes.save(Collections.EMPTY_MAP) + + + println("Problem Solved") + + } + + protected def static LogicProblem load() { + val resourceSet = new ResourceSetImpl + val resource = resourceSet.getResource(URI.createURI("inputLPs/newMedicalSystem.logicproblem"),true) + val root = resource.contents.get(0) as LogicProblem + root + } + + protected def static void init() { + LogiclanguagePackage.eINSTANCE.eClass + LogicproblemPackage.eINSTANCE.eClass() + Ecore2logicannotationsPackage.eINSTANCE.eClass() + Viatra2LogicAnnotationsPackage.eINSTANCE.eClass() + val reg = Resource.Factory.Registry.INSTANCE + val map = reg.extensionToFactoryMap + map.put("logicproblem", new XMIResourceFactoryImpl) + map.put("tptp", new XMIResourceFactoryImpl) + VampireLanguageStandaloneSetup.doSetup + } +} diff --git a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/SimpleRun.xtend b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/SimpleRun.xtend index feb28dd5..9d2235f0 100644 --- a/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/SimpleRun.xtend +++ b/Tests/ca.mcgill.ecse.dslreasoner.vampire.test/src/ca/mcgill/ecse/dslreasoner/vampire/test/SimpleRun.xtend @@ -1,176 +1,130 @@ //package ca.mcgill.ecse.dslreasoner.vampire.test // -//import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver -//import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration -//import hu.bme.mit.inf.dslreasomer.domains.transima.fam.FunctionalArchitecture.FunctionalArchitecturePackage -//import hu.bme.mit.inf.dslreasoner.domains.transima.fam.patterns.Pattern -//import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor -//import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder -//import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner -//import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem -//import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult -//import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult -//import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor -//import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation -//import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml //import hu.bme.mit.inf.dslreasoner.workspace.FileSystemWorkspace -//import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace -//import java.util.LinkedHashMap +//import hu.bme.mit.inf.dslreasomer.domains.transima.fam.FunctionalArchitecture.FunctionalArchitecturePackage //import java.util.List -//import org.eclipse.emf.ecore.EAttribute //import org.eclipse.emf.ecore.EClass -//import org.eclipse.emf.ecore.EEnum //import org.eclipse.emf.ecore.EEnumLiteral -//import org.eclipse.emf.ecore.EObject //import org.eclipse.emf.ecore.EReference +//import org.eclipse.emf.ecore.EEnum +//import org.eclipse.emf.ecore.EAttribute +//import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor +//import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace +//import org.eclipse.emf.ecore.EObject +//import java.util.LinkedHashMap +//import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor +//import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic +//import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic +//import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic +//import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2LogicConfiguration +//import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration +//import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration +//import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.TypeInferenceMethod +//import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.StateCoderStrategy +//import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner +//import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult +//import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation +//import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult //import org.eclipse.emf.ecore.resource.Resource //import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl +//import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml +//import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolverConfiguration +//import hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver +//import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore +//import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner +//import java.util.LinkedList +//import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualisation +//import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicStructureBuilder +//import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder // //class SimpleRun { -// -// def static void main(String[] args) { -// val inputs = new FileSystemWorkspace('''initialModels/''', "") -// val workspace = new FileSystemWorkspace('''outputModels/''', "") +// +// def static void main(String[] args) { +// val inputs = new FileSystemWorkspace('''initialModels/''',"") +// val workspace = new FileSystemWorkspace('''outputModels/''',"") // workspace.initAndClear -//// -//// println("Input and output workspaces are created") -//// -//// val metamodel = loadMetamodel() -//// val partialModel = loadPartialModel(inputs) -//// val queries = loadQueries(metamodel) -//// -//// println("DSL loaded") -//// -//// val Ecore2Logic ecore2Logic = new Ecore2Logic -//// val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) -//// val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) -//// val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic -//// -//// val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) -//// val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) -//// val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration) -//// -//// val logicProblem = validModelExtensionProblem.output -//// //*************xmi.save. advntageous cuz seperate and only contains things that are necessary -//// //Write to file. This is importnat to understand -//// //furthermore, output solution1.partialInterpretation contains also the logic probelm -//// //that needs to be solved -//// -//// //Logic problem same for vamp,l alloy, viatra. but fr alloy, vamp, it is mapped into the specific ecore metamodel using the xtext. -//// //initial simple example: take one thing (ex. iff) from the logic problem generated for one of the sample examples, try to make it into vampire -//// //xtext (but only the instance model, not the lines of code) to see how mapping will work. Then ishteh use vampire on it to "solve" it. -// // create logic problem -// var extension builder = new LogicProblemBuilder -// var LogicProblem problem = builder.createProblem -// -// val rock = Element("Rock") -// val paper = Element("Paper") -// val scissor = Element("Scissor") -// -// problem.elements += rock -// problem.elements += paper -// problem.elements += scissor -// -//// val red = Element("Red") -//// val green = Element("Green") -//// -//// problem.elements += red -//// problem.elements += green -// -//// val allRPS = problem.add(TypeDeclaration("allRPS", true)) -// val oldRPS = problem.add(TypeDefinition("oldRPS", false, rock, paper, scissor)) // n+1 axioms, where n is the number of type definitions. 1. rocjk, paper, scissor are all rps. 2. every object is rps -//// val newRPS = problem.add(TypeDeclaration("newRPS", false)) -//// val color = problem.add(TypeDefinition("color", false, red, green)) -//// Supertype(oldRPS, allRPS) -//// Supertype(newRPS, allRPS) // -// val beats2 = problem.add(RelationDeclaration("beats2", oldRPS, oldRPS)) -// problem.add(Assertion(Forall[ -// val x = addVar("x", oldRPS) -// // x.range -// Exists[ -// val y = addVar("y", oldRPS) -// beats2.call(x, y) -// ] -// ])) -// -//// val beats = problem.add(RelationDefinition("beats",[ -//// val x = addVar("x",RPS) -//// val y = addVar("y",RPS) -//// (x==rock && y==scissor)||(x==scissor && y==paper)||(x==paper && y==rock) -//// ])) -//// -//// //below needs to be added as an axiom -//// val beats2 = problem.add(RelationDeclaration("beats2",RPS,RPS)) -//// problem.add(Assertion(Forall[ -//// val x = addVar("x",RPS) -//// Exists[ -//// val y = addVar("y",RPS) -//// beats2.call(x,y) -//// ] -//// ])) +// println("Input and output workspaces are created") +// +// val metamodel = loadMetamodel() +// val partialModel = loadPartialModel(inputs) +// val queries = loadQueries(metamodel) +// +// println("DSL loaded") +// +// val Ecore2Logic ecore2Logic = new Ecore2Logic +// val Logic2Ecore logic2Ecore = new Logic2Ecore(ecore2Logic) +// val Viatra2Logic viatra2Logic = new Viatra2Logic(ecore2Logic) +// val InstanceModel2Logic instanceModel2Logic = new InstanceModel2Logic +// +// val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) +// val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) +// val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelGenerationProblem,new Viatra2LogicConfiguration) +// +// val logicProblem = validModelExtensionProblem.output +// // println("Problem created") // var LogicResult solution // var LogicReasoner reasoner -// /* -// * reasoner = new ViatraReasoner -// * val viatraConfig = new ViatraReasonerConfiguration => [ -// * it.typeScopes.maxNewElements = 5 -// * it.typeScopes.minNewElements = 5 -// * it.solutionScope.numberOfRequiredSolution = 1 -// * it.existingQueries = queries.patterns.map[it.internalQueryRepresentation] -// * it.debugCongiguration.logging = false -// * it.debugCongiguration.partalInterpretationVisualisationFrequency = 1 -// * it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation -// * ] -// * solution = reasoner.solve(logicProblem,viatraConfig,workspace) -// /*/ -// reasoner = new AlloySolver -// val alloyConfig = new AlloySolverConfiguration => [ -// it.typeScopes.maxNewElements = 5 -// it.typeScopes.minNewElements = 5 +// //* +// reasoner = new ViatraReasoner +// val viatraConfig = new ViatraReasonerConfiguration => [ +// it.typeScopes.maxNewElements = 40 +// it.typeScopes.minNewElements = 40 // it.solutionScope.numberOfRequiredSolution = 1 -// it.typeScopes.maxNewIntegers = 0 -// it.writeToFile = false +// it.existingQueries = queries.patterns.map[it.internalQueryRepresentation] +// it.debugCongiguration.logging = false +// it.debugCongiguration.partalInterpretationVisualisationFrequency = 1 +// it.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualisation // ] -// solution = reasoner.solve(problem, alloyConfig, workspace) -// // */ -// // ************ -// // since input logic model is also output, we can check out what is the input for alloy and then -// // see what should be input for vampire, as it should be similar to alloy. once i can create the input, -// // that is the first step. -// // look at allo2logic -// // always keep looking at output -// // try to figure out what rule is used -// println("Problem solved") -// -//// val interpretations = reasoner.getInterpretations(solution as ModelResult) -//// val models = new LinkedList -//// for(interpretation : interpretations) { -//// val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace) -//// models+=instanceModel -//// } -//// -//// solution.writeSolution(workspace, #[]) +// solution = reasoner.solve(logicProblem,viatraConfig,workspace) +// /*/ +// reasoner = new AlloySolver +// val alloyConfig = new AlloySolverConfiguration => [ +// it.typeScopes.maxNewElements = 5 +// it.typeScopes.minNewElements = 5 +// it.solutionScope.numberOfRequiredSolution = 1 +// it.typeScopes.maxNewIntegers = 0 +// it.writeToFile = true +// ] +// solution = reasoner.solve(logicProblem,alloyConfig,workspace) +// //*/ +// +// println("Problem solved")= ^ +// +// +// val interpretations = reasoner.getInterpretations(solution as ModelResult) +// val models = new LinkedList +// for(interpretation : interpretations) { +// val extension b = new LogicStructureBuilder +// val extension a = new LogicProblemBuilder +// +// +// +// val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace) +// models+=instanceModel +// } +// +// solution.writeSolution(workspace, #[]) // } -// +// // def private static loadMetamodel() { // val pckg = FunctionalArchitecturePackage.eINSTANCE // val List classes = pckg.EClassifiers.filter(EClass).toList // val List enums = pckg.EClassifiers.filter(EEnum).toList -// val List literals = enums.map[ELiterals].flatten.toList -// val List references = classes.map[EReferences].flatten.toList -// val List attributes = classes.map[EAttributes].flatten.toList -// return new EcoreMetamodelDescriptor(classes, #{}, false, enums, literals, references, attributes) +// val List literals = enums.map[getELiterals].flatten.toList +// val List references = classes.map[getEReferences].flatten.toList +// val List attributes = classes.map[getEAttributes].flatten.toList +// return new EcoreMetamodelDescriptor(classes,#{},false,enums,literals,references,attributes) // } -// +// // def private static loadQueries(EcoreMetamodelDescriptor metamodel) { -// val i = Pattern.instance +// val i = hu.bme.mit.inf.dslreasoner.domains.transima.fam.patterns.Pattern.instance // val patterns = i.specifications.toList -// val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name == "Constraint"]].toSet +// val wfPatterns = patterns.filter[it.allAnnotations.exists[it.name== "Constraint"]].toSet // val derivedFeatures = new LinkedHashMap -// derivedFeatures.put(i.type.internalQueryRepresentation, metamodel.attributes.filter[it.name == "type"].head) -// derivedFeatures.put(i.model.internalQueryRepresentation, metamodel.references.filter[it.name == "model"].head) +// derivedFeatures.put(i.type,metamodel.attributes.filter[it.name == "type"].head) +// derivedFeatures.put(i.model,metamodel.references.filter[it.name == "model"].head) // val res = new ViatraQuerySetDescriptor( // patterns, // wfPatterns, @@ -178,36 +132,37 @@ // ) // return res // } -// +// // def static loadPartialModel(ReasonerWorkspace inputs) { // Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); -// inputs.readModel(EObject, "FAM.xmi").eResource.allContents.toList +// inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList // } -// +// // def static writeSolution(LogicResult solution, ReasonerWorkspace workspace, List models) { -// if (solution instanceof ModelResult) { +// if(solution instanceof ModelResult) { // val representations = solution.representation -// for (representationIndex : 0 ..< representations.size) { +// for(representationIndex : 0..